diff --git a/.eslintrc.js b/.eslintrc.js
index 87a98f5429d10..0fc100088bb56 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -81,6 +81,7 @@ module.exports = {
importNames: [
'camelCase',
'capitalize',
+ 'castArray',
'chunk',
'clamp',
'cloneDeep',
@@ -96,6 +97,7 @@ module.exports = {
'differenceWith',
'dropRight',
'each',
+ 'escape',
'escapeRegExp',
'every',
'extend',
@@ -112,6 +114,7 @@ module.exports = {
'fromPairs',
'has',
'identity',
+ 'includes',
'invoke',
'isArray',
'isBoolean',
@@ -146,6 +149,7 @@ module.exports = {
'reverse',
'size',
'snakeCase',
+ 'some',
'sortBy',
'startCase',
'startsWith',
@@ -166,6 +170,8 @@ module.exports = {
'uniqWith',
'upperFirst',
'values',
+ 'without',
+ 'words',
'xor',
'zip',
],
@@ -322,8 +328,20 @@ module.exports = {
},
{
files: [ '**/test/**/*.js' ],
- excludedFiles: [ '**/*.@(android|ios|native).js' ],
- extends: [ 'plugin:jest-dom/recommended' ],
+ excludedFiles: [
+ '**/*.@(android|ios|native).js',
+ 'packages/react-native-*/**/*.js',
+ 'test/native/**/*.js',
+ 'test/e2e/**/*.[tj]s',
+ ],
+ extends: [
+ 'plugin:jest-dom/recommended',
+ 'plugin:testing-library/react',
+ ],
+ rules: {
+ 'testing-library/no-container': 'off',
+ 'testing-library/no-node-access': 'off',
+ },
},
{
files: [ 'packages/e2e-test*/**/*.js' ],
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 59542a88ffa3d..cd5fa3082d7d7 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -2,9 +2,9 @@
version: 2
updates:
- # Check for updates to GitHub Actions.
- - package-ecosystem: "github-actions"
- directory: "/"
- schedule:
- interval: "daily"
- open-pull-requests-limit: 10
+ # Check for updates to GitHub Actions.
+ - package-ecosystem: 'github-actions'
+ directory: '/'
+ schedule:
+ interval: 'daily'
+ open-pull-requests-limit: 10
diff --git a/.github/workflows/build-plugin-zip.yml b/.github/workflows/build-plugin-zip.yml
index 82758b78e1f29..92d323f8dc13c 100644
--- a/.github/workflows/build-plugin-zip.yml
+++ b/.github/workflows/build-plugin-zip.yml
@@ -180,7 +180,7 @@ jobs:
NO_CHECKS: 'true'
- name: Upload artifact
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
with:
name: gutenberg-plugin
path: ./gutenberg.zip
@@ -203,7 +203,7 @@ jobs:
- name: Upload release notes artifact
if: ${{ needs.bump-version.outputs.new_version }}
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
with:
name: release-notes
path: ./release-notes.txt
@@ -266,12 +266,12 @@ jobs:
run: echo ::set-output name=version::$(echo $VERSION | cut -d / -f 3 | sed 's/-rc./ RC/' )
- name: Download Plugin Zip Artifact
- uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 # v3.0.0
+ uses: actions/download-artifact@9782bd6a9848b53b110e712e20e42d89988822b7 # v3.0.1
with:
name: gutenberg-plugin
- name: Download Release Notes Artifact
- uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 # v3.0.0
+ uses: actions/download-artifact@9782bd6a9848b53b110e712e20e42d89988822b7 # v3.0.1
with:
name: release-notes
diff --git a/.github/workflows/end2end-test-playwright.yml b/.github/workflows/end2end-test-playwright.yml
index c65f56b824c91..e0aabb17afa01 100644
--- a/.github/workflows/end2end-test-playwright.yml
+++ b/.github/workflows/end2end-test-playwright.yml
@@ -39,7 +39,7 @@ jobs:
- name: Install Playwright dependencies
run: |
- npx playwright install chromium --with-deps
+ npx playwright install chromium firefox webkit --with-deps
- name: Install WordPress and start the server
run: |
@@ -47,18 +47,18 @@ jobs:
- name: Run the tests
run: |
- npm run test:e2e:playwright
+ xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test:e2e:playwright
- name: Archive debug artifacts (screenshots, traces)
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
if: always()
with:
name: failures-artifacts
- path: artifacts
+ path: artifacts/test-results
if-no-files-found: ignore
- name: Archive flaky tests report
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
if: always()
with:
name: flaky-tests-report-playwright
diff --git a/.github/workflows/end2end-test.yml b/.github/workflows/end2end-test.yml
index 5dadd996945a7..172d3b090eaf0 100644
--- a/.github/workflows/end2end-test.yml
+++ b/.github/workflows/end2end-test.yml
@@ -49,7 +49,7 @@ jobs:
$( npm bin )/wp-scripts test-e2e --config=./packages/e2e-tests/jest.config.js --cacheDirectory="$HOME/.jest-cache" --runTestsByPath $( awk 'NR % 4 == ${{ matrix.part }} - 1' < ~/.jest-e2e-tests )
- name: Archive debug artifacts (screenshots, HTML snapshots)
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
if: always()
with:
name: failures-artifacts
@@ -57,7 +57,7 @@ jobs:
if-no-files-found: ignore
- name: Archive flaky tests report
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
if: always()
with:
name: flaky-tests-report-${{ matrix.part }}
diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml
index 27b89697f9656..e878724c1b5f1 100644
--- a/.github/workflows/performance.yml
+++ b/.github/workflows/performance.yml
@@ -35,7 +35,7 @@ jobs:
- name: Compare performance with trunk
if: github.event_name == 'pull_request'
- run: ./bin/plugin/cli.js perf --ci $GITHUB_SHA trunk --tests-branch $GITHUB_SHA
+ run: ./bin/plugin/cli.js perf $GITHUB_SHA trunk --tests-branch $GITHUB_SHA
- name: Compare performance with current WordPress Core and previous Gutenberg versions
if: github.event_name == 'release'
@@ -50,7 +50,7 @@ jobs:
WP_VERSION=$(awk -F ': ' '/^Tested up to/{print $2}' readme.txt)
IFS=. read -ra WP_VERSION_ARRAY <<< "$WP_VERSION"
WP_MAJOR="${WP_VERSION_ARRAY[0]}.${WP_VERSION_ARRAY[1]}"
- ./bin/plugin/cli.js perf --ci "wp/$WP_MAJOR" "$PREVIOUS_RELEASE_BRANCH" "$CURRENT_RELEASE_BRANCH" --wp-version "$WP_MAJOR"
+ ./bin/plugin/cli.js perf "wp/$WP_MAJOR" "$PREVIOUS_RELEASE_BRANCH" "$CURRENT_RELEASE_BRANCH" --wp-version "$WP_MAJOR"
- name: Compare performance with base branch
if: github.event_name == 'push'
@@ -61,9 +61,9 @@ jobs:
WP_VERSION=$(awk -F ': ' '/^Tested up to/{print $2}' readme.txt)
IFS=. read -ra WP_VERSION_ARRAY <<< "$WP_VERSION"
WP_MAJOR="${WP_VERSION_ARRAY[0]}.${WP_VERSION_ARRAY[1]}"
- ./bin/plugin/cli.js perf --ci $GITHUB_SHA debd225d007f4e441ceec80fbd6fa96653f94737 --tests-branch $GITHUB_SHA --wp-version "$WP_MAJOR"
+ ./bin/plugin/cli.js perf $GITHUB_SHA debd225d007f4e441ceec80fbd6fa96653f94737 --tests-branch $GITHUB_SHA --wp-version "$WP_MAJOR"
- - uses: actions/github-script@100527700e8b29ca817ac0e0dfbfc5e8ff38edda # v6.3.2
+ - uses: actions/github-script@d556feaca394842dc55e4734bf3bb9f685482fa0 # v6.3.3
if: github.event_name == 'push'
id: commit-timestamp
with:
diff --git a/.github/workflows/rnmobile-android-runner.yml b/.github/workflows/rnmobile-android-runner.yml
index 5b35e24d091cb..dc16ff160495b 100644
--- a/.github/workflows/rnmobile-android-runner.yml
+++ b/.github/workflows/rnmobile-android-runner.yml
@@ -25,7 +25,7 @@ jobs:
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
- name: Use desired version of Java
- uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # v3.5.1
+ uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc # v3.6.0
with:
distribution: 'temurin'
java-version: '11'
@@ -52,13 +52,13 @@ jobs:
profile: pixel_xl
script: npm run native test:e2e:android:local ${{ matrix.native-test-name }}
- - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ - uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
if: always()
with:
name: android-screen-recordings
path: packages/react-native-editor/android-screen-recordings
- - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ - uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
if: always()
with:
name: appium-logs
diff --git a/.github/workflows/rnmobile-ios-runner.yml b/.github/workflows/rnmobile-ios-runner.yml
index 6d1a127f05817..36dc3a5dc30c9 100644
--- a/.github/workflows/rnmobile-ios-runner.yml
+++ b/.github/workflows/rnmobile-ios-runner.yml
@@ -77,13 +77,13 @@ jobs:
rm packages/react-native-editor/ios/build/GutenbergDemo/Build/Products/Release-iphonesimulator/GutenbergDemo.app/main.jsbundle
rm -rf packages/react-native-editor/ios/build/GutenbergDemo/Build/Products/Release-iphonesimulator/GutenbergDemo.app/assets
- - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ - uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
if: always()
with:
name: ios-screen-recordings
path: packages/react-native-editor/ios-screen-recordings
- - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ - uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
if: always()
with:
name: appium-logs
diff --git a/.github/workflows/storybook-pages.yml b/.github/workflows/storybook-pages.yml
index 6665a1ef8f7b2..e0ce7283b28ba 100644
--- a/.github/workflows/storybook-pages.yml
+++ b/.github/workflows/storybook-pages.yml
@@ -29,7 +29,7 @@ jobs:
run: npm run storybook:build
- name: Deploy
- uses: peaceiris/actions-gh-pages@068dc23d9710f1ba62e86896f84735d869951305 # v3.8.0
+ uses: peaceiris/actions-gh-pages@de7ea6f8efb354206b205ef54722213d99067935 # v3.9.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./storybook/build
diff --git a/.github/workflows/upload-release-to-plugin-repo.yml b/.github/workflows/upload-release-to-plugin-repo.yml
index a8bdd00892e2e..6221dd30e5113 100644
--- a/.github/workflows/upload-release-to-plugin-repo.yml
+++ b/.github/workflows/upload-release-to-plugin-repo.yml
@@ -79,7 +79,7 @@ jobs:
- name: Commit the Changelog update
run: |
git add changelog.txt
- # Remove files that are not meant to be commited
+ # Remove files that are not meant to be committed
# ie. release_notes.txt created on the previous step.
git clean -fd
# Only attempt to commit changelog if it has been modified.
@@ -89,7 +89,7 @@ jobs:
fi
- name: Upload Changelog artifact
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
with:
name: changelog ${{ matrix.label }}
path: ./changelog.txt
@@ -134,7 +134,7 @@ jobs:
run: sed -i "s/${STABLE_TAG_PLACEHOLDER}/${STABLE_TAG}/g" ./trunk/readme.txt
- name: Download Changelog Artifact
- uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 # v3.0.0
+ uses: actions/download-artifact@9782bd6a9848b53b110e712e20e42d89988822b7 # v3.0.1
with:
name: changelog trunk
path: trunk
diff --git a/bin/packages/watch.js b/bin/packages/watch.js
index ec5c504c0202f..8686aa82a588f 100644
--- a/bin/packages/watch.js
+++ b/bin/packages/watch.js
@@ -176,7 +176,7 @@ watch(
PACKAGES_DIR,
{ recursive: true, delay: 500, filter: isWatchableFile },
( event, filename ) => {
- // Double check whether we're dealing with a file that needs watching, to accomodate for
+ // Double check whether we're dealing with a file that needs watching, to accommodate for
// the inability to watch recursively on linux-based operating systems.
if ( ! isSourceFile( filename ) || ! isModulePackage( filename ) ) {
return;
diff --git a/bin/plugin/commands/performance.js b/bin/plugin/commands/performance.js
index c4a500b105c26..0571a0e72955f 100644
--- a/bin/plugin/commands/performance.js
+++ b/bin/plugin/commands/performance.js
@@ -193,6 +193,8 @@ async function runTestSuite( testSuite, performanceTestDirectory ) {
* @param {WPPerformanceCommandOptions} options Command options.
*/
async function runPerformanceTests( branches, options ) {
+ const runningInCI = !! process.env.CI || !! options.ci;
+
// The default value doesn't work because commander provides an array.
if ( branches.length === 0 ) {
branches = [ 'trunk' ];
@@ -201,11 +203,11 @@ async function runPerformanceTests( branches, options ) {
log(
formats.title( '\n💃 Performance Tests 🕺\n' ),
'\nWelcome! This tool runs the performance tests on multiple branches and displays a comparison table.\n' +
- 'In order to run the tests, the tool is going to load a WordPress environment on 8888 and 8889 ports.\n' +
+ 'In order to run the tests, the tool is going to load a WordPress environment on ports 8888 and 8889.\n' +
'Make sure these ports are not used before continuing.\n'
);
- if ( ! options.ci ) {
+ if ( ! runningInCI ) {
await askForConfirmation( 'Ready to go? ' );
}
diff --git a/changelog.txt b/changelog.txt
index 33f0b72af73e6..5d7af6602e020 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,5 +1,539 @@
== Changelog ==
+= 14.5.0-rc.1 =
+
+## Changelog
+
+### Enhancements
+
+- Create Block: Update templates to use APIs introduced in WP 6.1. ([44185](https://github.com/WordPress/gutenberg/pull/44185))
+- Style Engine: Add support for dimensions.minHeight property. ([45334](https://github.com/WordPress/gutenberg/pull/45334))
+
+#### Components
+- Block mover button: Do not show focus styles on pointer interactions. ([45126](https://github.com/WordPress/gutenberg/pull/45126))
+- Border Controls: Update control components to allow 40px height. ([41860](https://github.com/WordPress/gutenberg/pull/41860))
+- BorderControl test: Await floating-ui state changes when rendering/opening popover. ([45241](https://github.com/WordPress/gutenberg/pull/45241))
+- Change color on destructive button focus state. ([44427](https://github.com/WordPress/gutenberg/pull/44427))
+- Convert the `ColorPalette` component to TypeScript. ([44632](https://github.com/WordPress/gutenberg/pull/44632))
+- NumberControl: Add custom spin buttons. ([45333](https://github.com/WordPress/gutenberg/pull/45333))
+- Remove unnecessary wrappers in stories. ([45305](https://github.com/WordPress/gutenberg/pull/45305))
+- SelectControl: Add onChange, onBlur and onFocus to storybook actions. ([45432](https://github.com/WordPress/gutenberg/pull/45432))
+- Update design of FontSizePicker when withSlider is set. ([44598](https://github.com/WordPress/gutenberg/pull/44598))
+
+#### Block Library
+- Comment template: Add spacing support. ([45101](https://github.com/WordPress/gutenberg/pull/45101))
+- Post comment count: Add spacing support. ([45150](https://github.com/WordPress/gutenberg/pull/45150))
+- Post comments form: Add spacing support. ([45091](https://github.com/WordPress/gutenberg/pull/45091))
+
+#### Post Editor
+- Edit Post: Improve distraction-free mode notices. ([45348](https://github.com/WordPress/gutenberg/pull/45348))
+- Move document information and outline to list view panel. ([44788](https://github.com/WordPress/gutenberg/pull/44788))
+
+#### Patterns
+- Add block pattern categories' descriptions to the REST API and update the descriptions. ([45244](https://github.com/WordPress/gutenberg/pull/45244))
+
+#### Design Tools
+- Spacing visualizer: Add option to trigger with mousover as well as value change. ([44955](https://github.com/WordPress/gutenberg/pull/44955))
+
+
+### Bug Fixes
+
+- Fix distraction free shortcut typo. ([45186](https://github.com/WordPress/gutenberg/pull/45186))
+- Fix resizeable editor scrolling. ([45189](https://github.com/WordPress/gutenberg/pull/45189))
+- Hide insertion point when moving out of the canvas. ([45420](https://github.com/WordPress/gutenberg/pull/45420))
+- I18n: Fix handling of nullish pot comments. ([45414](https://github.com/WordPress/gutenberg/pull/45414))
+- Prevent unexpected copying of the post title. ([41284](https://github.com/WordPress/gutenberg/pull/41284))
+- Typo in id in URL. ([45232](https://github.com/WordPress/gutenberg/pull/45232))
+
+#### Components
+- AutocompleteUI: Close popup when click happens outside of the popover. ([44795](https://github.com/WordPress/gutenberg/pull/44795))
+- Button component: Fix RTL alignment when containing icon and text. ([44787](https://github.com/WordPress/gutenberg/pull/44787))
+- ColorPalette: Fix transparent checkered background pattern. ([45295](https://github.com/WordPress/gutenberg/pull/45295))
+- Fix `UnitControl` disabled style is overridden by WP forms.css. ([45250](https://github.com/WordPress/gutenberg/pull/45250))
+- Fix popover deprecations. ([45195](https://github.com/WordPress/gutenberg/pull/45195))
+- InputControl: Allow inline styles to be applied to wrapper instead of inner input. ([45340](https://github.com/WordPress/gutenberg/pull/45340))
+- ItemGroup: Fix RTL text alignment when item is clickable. ([45280](https://github.com/WordPress/gutenberg/pull/45280))
+- Set AnglePickerControl Storybook Label Control type to text. ([45122](https://github.com/WordPress/gutenberg/pull/45122))
+- TabPanel: Add tests and changelog for onSelect behavior change. ([45211](https://github.com/WordPress/gutenberg/pull/45211))
+- Update ExternalLink to support onClick handler. ([45214](https://github.com/WordPress/gutenberg/pull/45214))
+
+#### Block Library
+- Allow direct selection of nested Page List block by avoiding dual rendering within block. ([45143](https://github.com/WordPress/gutenberg/pull/45143))
+- Fix Nav uncontrolled blocks saving/loading experience. ([45486](https://github.com/WordPress/gutenberg/pull/45486))
+- List v2: Fix migration when nested list is invalid. ([44822](https://github.com/WordPress/gutenberg/pull/44822))
+- Navigation block: Add padding to buttons when Submenus Open on click is enabled. ([44605](https://github.com/WordPress/gutenberg/pull/44605))
+- Site Tagline: Fix user permission HTTP errors. ([45140](https://github.com/WordPress/gutenberg/pull/45140))
+- Site Title: Avoid 403 errors for users with low permissions. ([45093](https://github.com/WordPress/gutenberg/pull/45093))
+
+#### Design Tools
+- Fix control widths for Cover, Search, and Spacer blocks. ([45329](https://github.com/WordPress/gutenberg/pull/45329))
+- SpacingSizesControl: Remove UnitControl inline style use. ([45412](https://github.com/WordPress/gutenberg/pull/45412))
+
+#### Testing
+- Fix uploading artifacts even when the tests are successful. ([45187](https://github.com/WordPress/gutenberg/pull/45187))
+- Migrate Gallery tests to Playwright. ([45202](https://github.com/WordPress/gutenberg/pull/45202))
+
+#### Patterns
+- Fix PHP warning in categories REST API controller. ([45410](https://github.com/WordPress/gutenberg/pull/45410))
+
+#### Build Tooling
+- ESLint: Exclude Playwright tests from testing library rules. ([45366](https://github.com/WordPress/gutenberg/pull/45366))
+
+#### Layout
+- Ensure block content is always returned as a string after processing. ([45330](https://github.com/WordPress/gutenberg/pull/45330))
+
+#### Plugin
+- Fix failing PHPUnit tests. ([45265](https://github.com/WordPress/gutenberg/pull/45265))
+
+#### Post Editor
+- Visual Editor: Fix permission error. ([45262](https://github.com/WordPress/gutenberg/pull/45262))
+
+#### Global Styles
+- Fix: Site editor clips body background style. ([45261](https://github.com/WordPress/gutenberg/pull/45261))
+
+#### Meta Boxes
+- Metaboxes save: Perform hasMetaBoxes check on every save. ([45145](https://github.com/WordPress/gutenberg/pull/45145))
+
+#### Webfonts
+- Web Font: Fix ascent/descent-override property typo. ([45125](https://github.com/WordPress/gutenberg/pull/45125))
+
+#### Accessibility
+- fix: Image caption supports Voice Control. ([44850](https://github.com/WordPress/gutenberg/pull/44850))
+
+#### Document Settings
+- PublishDateTimePicker: Retrieve all future posts in a given month. ([44540](https://github.com/WordPress/gutenberg/pull/44540))
+
+#### Site Editor
+- Only mark the 'Site' menu item active when editing a home template. ([42807](https://github.com/WordPress/gutenberg/pull/42807))
+
+
+### Performance
+
+- Lodash: Refactor `@wordpress/blocks` away from `_.includes()`. ([45311](https://github.com/WordPress/gutenberg/pull/45311))
+- Lodash: Refactor `@wordpress/keycodes` away from `_.includes()`. ([45306](https://github.com/WordPress/gutenberg/pull/45306))
+- Lodash: Refactor away from `_.kebabCase()` in site editor. ([45192](https://github.com/WordPress/gutenberg/pull/45192))
+- Lodash: Refactor block editor away from `_.some()`. ([45335](https://github.com/WordPress/gutenberg/pull/45335))
+- Lodash: Refactor blocks away from `_.some()`. ([45338](https://github.com/WordPress/gutenberg/pull/45338))
+
+#### Post Editor
+- Lodash: Refactor `@wordpress/edit-post` away from `_.includes()`. ([45310](https://github.com/WordPress/gutenberg/pull/45310))
+- Lodash: Refactor away from `_.castArray()`. ([45098](https://github.com/WordPress/gutenberg/pull/45098))
+- Lodash: Refactor away from `_.escape()`. ([45282](https://github.com/WordPress/gutenberg/pull/45282))
+- Lodash: Refactor away from `_.includes()`. ([45316](https://github.com/WordPress/gutenberg/pull/45316))
+- Lodash: Refactor editor away from `_.some()`. ([45342](https://github.com/WordPress/gutenberg/pull/45342))
+
+#### Block Library
+- Lodash: Refactor `@wordpress/block-library` away from `_.includes()`. ([45307](https://github.com/WordPress/gutenberg/pull/45307))
+- Lodash: Refactor away from a few similar `_.pickBy()`. ([45312](https://github.com/WordPress/gutenberg/pull/45312))
+- Lodash: Refactor block library away from `_.some()`. ([45337](https://github.com/WordPress/gutenberg/pull/45337))
+
+#### Components
+- Lodash: Refactor away from `_.some()`. ([45367](https://github.com/WordPress/gutenberg/pull/45367))
+- Lodash: Refactor away from `_.without()`. ([44980](https://github.com/WordPress/gutenberg/pull/44980))
+
+#### Block Editor
+- Lodash: Refactor away from `_.words()` - take 2. ([45281](https://github.com/WordPress/gutenberg/pull/45281))
+
+
+### Documentation
+
+- Add a readme to the letter spacing component. ([45308](https://github.com/WordPress/gutenberg/pull/45308))
+- Add changelogs for internal refactorings using inert. ([45269](https://github.com/WordPress/gutenberg/pull/45269))
+- Add storybook intro. ([45115](https://github.com/WordPress/gutenberg/pull/45115))
+- Character Swap. ([45355](https://github.com/WordPress/gutenberg/pull/45355))
+- Code Quality: Fix some misspelled words. ([45222](https://github.com/WordPress/gutenberg/pull/45222))
+- LinkControl: Use Popover new placement prop instead of legacy position prop in README. ([44388](https://github.com/WordPress/gutenberg/pull/44388))
+- Updating curation document to include content lock ability. ([44908](https://github.com/WordPress/gutenberg/pull/44908))
+- useAnchorRef: Update deprecation message. ([45302](https://github.com/WordPress/gutenberg/pull/45302))
+
+#### Components
+- Disabled: Update documentation to clarify the absence of inert polyfill. ([45272](https://github.com/WordPress/gutenberg/pull/45272))
+
+
+### Code Quality
+
+- Block Editor: Improve `MediaReplaceFlow` tests. ([45424](https://github.com/WordPress/gutenberg/pull/45424))
+- Block Editor: Refactor align tests to RTL. ([45152](https://github.com/WordPress/gutenberg/pull/45152))
+- Block switcher preview Popover: Use new placement prop instead of legacy position prop. ([44387](https://github.com/WordPress/gutenberg/pull/44387))
+- Button block Popover: Use placement prop instead of legacy position prop. ([44392](https://github.com/WordPress/gutenberg/pull/44392))
+- Fix indent and quote in dependbot.yml. ([45167](https://github.com/WordPress/gutenberg/pull/45167))
+- Fix: PHP 8.1 Deprecation - strncmp(): Passing null to parameter. ([44829](https://github.com/WordPress/gutenberg/pull/44829))
+- Format Toolbar Popover: Use new placement prop instead of legacy position prop. ([44389](https://github.com/WordPress/gutenberg/pull/44389))
+- Image format popover: Use placement prop instead of legacy position prop. ([44398](https://github.com/WordPress/gutenberg/pull/44398))
+- Link format Popover: Use placement prop instead of legacy position prop. ([44399](https://github.com/WordPress/gutenberg/pull/44399))
+- Navigation Link Popover: Use placement prop instead of legacy position prop. ([44394](https://github.com/WordPress/gutenberg/pull/44394))
+- Navigation Submenu Popover: Use placement prop instead of legacy position prop. ([44395](https://github.com/WordPress/gutenberg/pull/44395))
+- Replace the MainDashboardButton slot with a setting in the site editor. ([45149](https://github.com/WordPress/gutenberg/pull/45149))
+- Run script loader test. ([45288](https://github.com/WordPress/gutenberg/pull/45288))
+- Site Editor: Move the save view state to the edit site store. ([45200](https://github.com/WordPress/gutenberg/pull/45200))
+- Small follow-ups to the distraction free mode PR. ([45151](https://github.com/WordPress/gutenberg/pull/45151))
+- Tests: Use `container` instead of `container.firstChild` for snapshots. ([45278](https://github.com/WordPress/gutenberg/pull/45278))
+- URL Input Popover: Use new placement prop instead of legacy position prop. ([44390](https://github.com/WordPress/gutenberg/pull/44390))
+- useFocusOutside: Rewrite hook to TypeScript, rewrite tests to model RTL and user-event. ([45317](https://github.com/WordPress/gutenberg/pull/45317))
+- useFocusableIframe: Refactor to TypeScript. ([45428](https://github.com/WordPress/gutenberg/pull/45428))
+
+#### Components
+- Add a popover `variant` prop and refactor popovers to use it, deprecate `isAlternate`. ([45137](https://github.com/WordPress/gutenberg/pull/45137))
+- Add parseQuantityAndUnitFromRawValue tests. ([45260](https://github.com/WordPress/gutenberg/pull/45260))
+- Autocompleter Popover: Use placement prop instead of legacy position prop. ([44396](https://github.com/WordPress/gutenberg/pull/44396))
+- FontSizePicker: Rewrite unit tests to use userEvent and be more comprehensive. ([45298](https://github.com/WordPress/gutenberg/pull/45298))
+- Improve `BorderBoxControl` tests. ([45208](https://github.com/WordPress/gutenberg/pull/45208))
+- Refactor `ContextSystemProvider` and the `useUpdateEffect` util to ignore `exhaustive-deps`. ([45044](https://github.com/WordPress/gutenberg/pull/45044))
+- Refactor `SlotFill` to pass `exhaustive-deps`. ([44403](https://github.com/WordPress/gutenberg/pull/44403))
+- Refactor `Snackbar` to pass `exhaustive-deps`. ([44934](https://github.com/WordPress/gutenberg/pull/44934))
+- Refactor `TabPanel` to pass `exhaustive-deps`. ([44935](https://github.com/WordPress/gutenberg/pull/44935))
+- Remove unnecessary `.firstChild` from tests. ([45419](https://github.com/WordPress/gutenberg/pull/45419))
+- Update some React 18 related types. ([45279](https://github.com/WordPress/gutenberg/pull/45279))
+
+#### Global Styles
+- Add `wp_theme_has_theme_json` as a public API to know whether a theme has a `theme.json`. ([45168](https://github.com/WordPress/gutenberg/pull/45168))
+- Deprecate `WP_Theme_JSON_Resolver:Theme_has_support()`. ([45380](https://github.com/WordPress/gutenberg/pull/45380))
+
+#### Post Editor
+- Editors: Refactor icon tests to follow `no-container` rule. ([45422](https://github.com/WordPress/gutenberg/pull/45422))
+
+
+### Tools
+
+#### Testing
+- Add end-to-end tests for Drag-and-Drop in the inserter. ([44631](https://github.com/WordPress/gutenberg/pull/44631))
+- Cleanup after the writing flow end-to-end tests. ([45119](https://github.com/WordPress/gutenberg/pull/45119))
+- Migrate Fullscreen mode test to Playwright. ([43963](https://github.com/WordPress/gutenberg/pull/43963))
+- Migrate New Default Post Content Test to Playwright. ([45267](https://github.com/WordPress/gutenberg/pull/45267))
+- Migrate Splitting Merging test to Playwright. ([44916](https://github.com/WordPress/gutenberg/pull/44916))
+- Migrate `site-editor-inserter` end-to-end test to Playwright. ([44507](https://github.com/WordPress/gutenberg/pull/44507))
+- Migrate `templates` end-to-end test to Playwright. ([45393](https://github.com/WordPress/gutenberg/pull/45393))
+- Migrate columns test case to Playwright. ([43964](https://github.com/WordPress/gutenberg/pull/43964))
+- Re-enable skipped Gallery block end-to-end test. ([45266](https://github.com/WordPress/gutenberg/pull/45266))
+- Try fixing Site Title flaky end-to-end tests. ([45160](https://github.com/WordPress/gutenberg/pull/45160))
+- Update Playwright to v1.27. ([45193](https://github.com/WordPress/gutenberg/pull/45193))
+
+#### Build Tooling
+- ESLint: Add and enable `eslint-plugin-testing-library`. ([45103](https://github.com/WordPress/gutenberg/pull/45103))
+- Remove comments from compiled styles. ([43177](https://github.com/WordPress/gutenberg/pull/43177))
+- Upgrade rtlcss to v4.0.0. ([43208](https://github.com/WordPress/gutenberg/pull/43208))
+- build: Native demo editor supports Xcode 14. ([45120](https://github.com/WordPress/gutenberg/pull/45120))
+
+
+### Various
+
+- Add :Visited to theme.json schema. ([45236](https://github.com/WordPress/gutenberg/pull/45236))
+- Add Playwright Compatibility-classic-editor Test. ([43979](https://github.com/WordPress/gutenberg/pull/43979))
+- Add rel attribute for Social Icons. ([45469](https://github.com/WordPress/gutenberg/pull/45469))
+- Add: Do not use in production to content locking experimental API's. ([45291](https://github.com/WordPress/gutenberg/pull/45291))
+- Migrate iframe-rendering test case. ([44535](https://github.com/WordPress/gutenberg/pull/44535))
+- Post comments link: Add spacing support. ([45184](https://github.com/WordPress/gutenberg/pull/45184))
+- PostTextEditor test: Wrap .blur calls in act(). ([45243](https://github.com/WordPress/gutenberg/pull/45243))
+- Revert "Lodash: Refactor away from `_.kebabCase()` in site editor". ([45206](https://github.com/WordPress/gutenberg/pull/45206))
+
+#### Components
+- Button: Refactor Storybook to controls and align documentation. ([44105](https://github.com/WordPress/gutenberg/pull/44105))
+- DateTimePicker: Add `__next*` props in Storybook. ([45164](https://github.com/WordPress/gutenberg/pull/45164))
+- Font Size Picker: Update changelog for #45041. ([45180](https://github.com/WordPress/gutenberg/pull/45180))
+- FormFileUpload: Remove unused story file. ([45286](https://github.com/WordPress/gutenberg/pull/45286))
+- RadioGroup: Mark as deprecated. ([45389](https://github.com/WordPress/gutenberg/pull/45389))
+- Revert "Navigator: Remove overflow styles from NavigatorScreen". ([45303](https://github.com/WordPress/gutenberg/pull/45303))
+- Storybook: Addon to wrap stories in max-width div. ([45134](https://github.com/WordPress/gutenberg/pull/45134))
+- TextControl: Set Storybook control types on help, label and type. ([45405](https://github.com/WordPress/gutenberg/pull/45405))
+- ToggleGroupControl: Add de-selectable variant. ([45123](https://github.com/WordPress/gutenberg/pull/45123))
+- ToggleGroupControl: Remove invalid props from types. ([45114](https://github.com/WordPress/gutenberg/pull/45114))
+
+#### Block Library
+- Gallery: Register styles with style engine. ([43070](https://github.com/WordPress/gutenberg/pull/43070))
+- Navigation block: Return undefined from useEffect. ([45239](https://github.com/WordPress/gutenberg/pull/45239))
+- Reset background-image property for outline button style. ([45234](https://github.com/WordPress/gutenberg/pull/45234))
+- [Audio]: Add toolbar button to add/remove caption. ([45112](https://github.com/WordPress/gutenberg/pull/45112))
+- [Video]: Add toolbar button to add/remove caption. ([45113](https://github.com/WordPress/gutenberg/pull/45113))
+- [Video]: Update tracks editor icon to text button. ([45245](https://github.com/WordPress/gutenberg/pull/45245))
+
+#### Global Styles
+- Embed: Add deprecation for the caption element. ([45166](https://github.com/WordPress/gutenberg/pull/45166))
+- File Block: Add a deprecation for the button element class name. ([45159](https://github.com/WordPress/gutenberg/pull/45159))
+- Gallery: Add a deprecation for captions in the gallery block. ([45173](https://github.com/WordPress/gutenberg/pull/45173))
+- Table Block: Add a deprecation for the figcaption element class name. ([45161](https://github.com/WordPress/gutenberg/pull/45161))
+- Video: Add a deprecation for the caption element. ([45169](https://github.com/WordPress/gutenberg/pull/45169))
+
+#### Meta Boxes
+- setAvailableMetaBoxesPerLocation: Merge new metaboxes into existing. ([45156](https://github.com/WordPress/gutenberg/pull/45156))
+
+#### Post Editor
+- hasChangedContent: Remove obsolete blocks check. ([45090](https://github.com/WordPress/gutenberg/pull/45090))
+
+#### Block Editor
+- Raw handling: Markdown: Also convert bulleted list with bullet characters. ([45017](https://github.com/WordPress/gutenberg/pull/45017))
+
+#### Layout
+- Try adding layout classnames to inner block wrapper. ([44600](https://github.com/WordPress/gutenberg/pull/44600))
+
+
+## First time contributors
+
+The following PRs were merged by first time contributors:
+
+- @alvitazwar: Migrate iframe-rendering test case. ([44535](https://github.com/WordPress/gutenberg/pull/44535))
+- @GeoJunkie: PublishDateTimePicker: Retrieve all future posts in a given month. ([44540](https://github.com/WordPress/gutenberg/pull/44540))
+- @Initsogar: Components: Update ExternalLink to support onClick handler. ([45214](https://github.com/WordPress/gutenberg/pull/45214))
+- @jornp: Button component: Fix RTL alignment when containing icon and text. ([44787](https://github.com/WordPress/gutenberg/pull/44787))
+- @pkorzelius: Character Swap. ([45355](https://github.com/WordPress/gutenberg/pull/45355))
+
+
+## Contributors
+
+The following contributors merged PRs in this release:
+
+@aaronrobertshaw @alvitazwar @andrewserong @annezazu @aristath @BE-Webdesign @bph @brookewp @carolinan @chad1008 @ciampo @dcalhoun @ellatrix @fluiddot @GeoJunkie @georgeh @getdave @glendaviesnz @gziolo @Initsogar @jorgefilipecosta @jornp @jsnajdr @kevin940726 @KevinBatdorf @kienstra @Mamaduka @mikachan @mirka @noisysocks @ntsekouras @oandregal @pkorzelius @pooja-muchandikar @ramonjd @SavPhill @scruffian @SiobhyB @Soean @t-hamano @talldan @tellthemachines @tyxla @walbo @youknowriad
+
+
+= 14.4.0 =
+
+
+
+## Changelog
+
+### Enhancements
+
+- Add prop to disable block selection clearer in BlockList. ([44517](https://github.com/WordPress/gutenberg/pull/44517))
+- Multi-select: Fix 1px indent. ([44709](https://github.com/WordPress/gutenberg/pull/44709))
+- ServerSideRender: Add new `skipBlockSupportAttributes` prop. ([44491](https://github.com/WordPress/gutenberg/pull/44491))
+- Tag Processor: Add get_updated_html as a non-toString method of stringifying the markup. ([44597](https://github.com/WordPress/gutenberg/pull/44597))
+- Try: Add a small radius to the multi selection style. ([44708](https://github.com/WordPress/gutenberg/pull/44708))
+- Block Locking: Adds content locking to navigation block. ([44739](https://github.com/WordPress/gutenberg/pull/44739))
+- Rich Text: Use fallback icon for highlight format. ([44705](https://github.com/WordPress/gutenberg/pull/44705))
+- Create Block: Allows custom keys to be generated in block.json files and package.json files. ([44649](https://github.com/WordPress/gutenberg/pull/44649))
+
+#### Block Library
+- Comments: Add spacing support. ([45102](https://github.com/WordPress/gutenberg/pull/45102))
+- Tag Cloud: Add typography supports (except font size). ([43452](https://github.com/WordPress/gutenberg/pull/43452))
+- Image: Add toolbar button to add a caption. ([44965](https://github.com/WordPress/gutenberg/pull/44965))
+- List Item: Adopt typography supports. ([43312](https://github.com/WordPress/gutenberg/pull/43312))
+
+#### Components
+- BorderBoxControl: Omit unit select when values are mixed. ([44592](https://github.com/WordPress/gutenberg/pull/44592))
+- SuggestionList: Use requestAnimationFrame instead of setTimeout when scrolling selected item into view. ([44573](https://github.com/WordPress/gutenberg/pull/44573))
+
+
+#### Block Editor
+- Introduce distraction free mode. ([41740](https://github.com/WordPress/gutenberg/pull/41740))
+- Redesign the main pattern inserter. ([44028](https://github.com/WordPress/gutenberg/pull/44028))
+- Inserter: Add a more pronounced hover effect. ([44711](https://github.com/WordPress/gutenberg/pull/44711))
+
+
+#### Design Tools
+- SpacingSizesControl: Increase slider's max value to 300. ([44956](https://github.com/WordPress/gutenberg/pull/44956))
+- Style engine: Permit wp custom CSS properties. ([43071](https://github.com/WordPress/gutenberg/pull/43071))
+- Try color theming. ([44668](https://github.com/WordPress/gutenberg/pull/44668))
+- Global Styles: Modify Frame animation of styles grid. ([39717](https://github.com/WordPress/gutenberg/pull/39717))
+
+
+
+### Bug Fixes
+
+
+- Clickable placeholder upload button. ([44817](https://github.com/WordPress/gutenberg/pull/44817))
+- Insertion point showing up unexpectedly. ([44702](https://github.com/WordPress/gutenberg/pull/44702))
+- Overflowing patterns. ([44853](https://github.com/WordPress/gutenberg/pull/44853))
+- Inspector is usable on the top level block even if it is content locked. ([44878](https://github.com/WordPress/gutenberg/pull/44878))
+- Use active variation as the parent block if available. ([44609](https://github.com/WordPress/gutenberg/pull/44609))
+- Placeholder for the navigation link label, to be about the label. ([44733](https://github.com/WordPress/gutenberg/pull/44733))
+- Hide the inbetween inserter consistently as you move the mouse. ([44814](https://github.com/WordPress/gutenberg/pull/44814))
+- Margin visualiser: Apply negative value to margins with calc(). ([44718](https://github.com/WordPress/gutenberg/pull/44718))
+- Placeholder: Fix hover style. ([44701](https://github.com/WordPress/gutenberg/pull/44701))
+- Post editor: Rename view to Preview. ([45074](https://github.com/WordPress/gutenberg/pull/45074))
+- Prevent empty block toolbars from showing empty slots. ([44704](https://github.com/WordPress/gutenberg/pull/44704))
+- Use inert attribute instead of useDisabled. ([44865](https://github.com/WordPress/gutenberg/pull/44865))
+- cleanForSlug: Replace multiple hyphens with a single one. ([44873](https://github.com/WordPress/gutenberg/pull/44873))
+- Block Popover: Fix incorrect positioning of padding and margin visualizers on scroll. ([44998](https://github.com/WordPress/gutenberg/pull/44998))
+- Most used tags: Try fixing label. ([44859](https://github.com/WordPress/gutenberg/pull/44859))
+- Only include theme.css if the theme declares support for wp-block-styles. ([44640](https://github.com/WordPress/gutenberg/pull/44640))
+- Merge inner blocks if wrappers are equal. ([43181](https://github.com/WordPress/gutenberg/pull/43181))
+- Try nested patterns previews with block editor setting. ([44784](https://github.com/WordPress/gutenberg/pull/44784))
+- Design Tools Adjust the custom range steps to match the units chosen. ([44959](https://github.com/WordPress/gutenberg/pull/44959))
+- Global Styles: Invoke zoomed-out view when selecting a style variation. ([44987](https://github.com/WordPress/gutenberg/pull/44987))
+- Plugin: Don't use the custom 'Template Parts' page with WP 6.1 and above. ([45158](https://github.com/WordPress/gutenberg/pull/45158))
+
+
+#### Block Library
+- Avoid querying block templates during installation. ([44584](https://github.com/WordPress/gutenberg/pull/44584))
+- Buttons: Add specificity for the editor. ([44731](https://github.com/WordPress/gutenberg/pull/44731))
+- Embed Block: Add support for Tumblr Dashboard URLs. ([44854](https://github.com/WordPress/gutenberg/pull/44854))
+- Fix list outdents on Enter in quote block. ([44809](https://github.com/WordPress/gutenberg/pull/44809))
+- Fix the cover block focal point picker. ([44991](https://github.com/WordPress/gutenberg/pull/44991))
+- Fix typo for word occurred. ([44914](https://github.com/WordPress/gutenberg/pull/44914))
+- Fix visibility of nested Group block appender. ([45050](https://github.com/WordPress/gutenberg/pull/45050))
+- Fix: Follow discussion settings in the comments block edit. ([44463](https://github.com/WordPress/gutenberg/pull/44463))
+- Group, Row, Stack, Columns. Fix missing border regression. ([44696](https://github.com/WordPress/gutenberg/pull/44696))
+- List Item: Allow Gutenberg to override core block type. ([44911](https://github.com/WordPress/gutenberg/pull/44911))
+- List v2: Selection when creating paragraph from empty list item. ([44864](https://github.com/WordPress/gutenberg/pull/44864))
+- Remove anchor support from the navigation block. ([44721](https://github.com/WordPress/gutenberg/pull/44721))
+- Removes __unstableMaxPages attribute from Page List block (and Nav block). ([44415](https://github.com/WordPress/gutenberg/pull/44415))
+- Site Logo: User permission HTTP errors. ([45104](https://github.com/WordPress/gutenberg/pull/45104))
+- Site logo: Centered state, for upload button. ([44861](https://github.com/WordPress/gutenberg/pull/44861))
+- Media: Cover block text color heuristic for cross origin media. ([44552](https://github.com/WordPress/gutenberg/pull/44552))
+- Icons: Arrow icons being misaligned. ([44666](https://github.com/WordPress/gutenberg/pull/44666))
+- Patterns: Hide list items from content area of content locked blocks. ([44676](https://github.com/WordPress/gutenberg/pull/44676))
+- Templates API: Avoid PHP warning when getting dynamic template data. ([44783](https://github.com/WordPress/gutenberg/pull/44783))
+- Block Settings: Show `move to` on nested blocks when only one root block. ([44827](https://github.com/WordPress/gutenberg/pull/44827))
+- Navigation: Fallback to a classic menu if one is available. ([44173](https://github.com/WordPress/gutenberg/pull/44173))
+
+#### Site Editor
+- Toggle Navigation Menus Sidebar. ([44860](https://github.com/WordPress/gutenberg/pull/44860))
+- Zoomed out view: Keep list view open when entering mode. ([44781](https://github.com/WordPress/gutenberg/pull/44781))
+
+
+#### Block Editor
+- Cover: Fix erroneous focus style in editor. ([44707](https://github.com/WordPress/gutenberg/pull/44707))
+- Native inner blocks merge where appropriate. ([45048](https://github.com/WordPress/gutenberg/pull/45048))
+
+
+#### Typography
+- Fluid typography: Convert server-side block support values. ([44762](https://github.com/WordPress/gutenberg/pull/44762))
+- Fluid typography: Covert font size number values to pixels. ([44807](https://github.com/WordPress/gutenberg/pull/44807))
+- Fluid typography: Ensure fontsizes are strings or integers. ([44847](https://github.com/WordPress/gutenberg/pull/44847))
+- Font Size Picker Hint: Fallback to font size `slug` if `name` is undefined. ([45041](https://github.com/WordPress/gutenberg/pull/45041))
+- Make custom font sizes appear fluid in the block editor when fluid typography is enabled. ([44765](https://github.com/WordPress/gutenberg/pull/44765))
+- Search block: Ensure font sizes values are converted to fluid in the editor. ([44852](https://github.com/WordPress/gutenberg/pull/44852))
+- Fluid typography: Convert font size inline style attributes to fluid values. ([44764](https://github.com/WordPress/gutenberg/pull/44764))
+
+#### Components
+- FontSizePicker: Fix header order in RTL languages. ([44590](https://github.com/WordPress/gutenberg/pull/44590))
+- Navigator: Restore focus only once per location. ([44972](https://github.com/WordPress/gutenberg/pull/44972))
+- Spacing Sizes Control: Try improving layout spacing. ([44858](https://github.com/WordPress/gutenberg/pull/44858))
+
+
+#### Global Styles
+- Ensure style card effect doesn't cause scrollbars to appear. ([44823](https://github.com/WordPress/gutenberg/pull/44823))
+- Fluid Typography: Fix bug in global styles where fluid clamp rules were not calculated for custom values. ([44761](https://github.com/WordPress/gutenberg/pull/44761))
+
+### Accessibility
+- Fix the block toolbar styling when the 'Show button text labels' preference is enabled. ([44779](https://github.com/WordPress/gutenberg/pull/44779))
+- Fluid typography: Add font size constraints. ([44993](https://github.com/WordPress/gutenberg/pull/44993))
+
+
+### Performance
+
+- Lodash refactor away ([44892](https://github.com/WordPress/gutenberg/pull/44892), [45014](https://github.com/WordPress/gutenberg/pull/45014), [45010](https://github.com/WordPress/gutenberg/pull/45010), [44875](https://github.com/WordPress/gutenberg/pull/44875), [44901](https://github.com/WordPress/gutenberg/pull/44901), [44874](https://github.com/WordPress/gutenberg/pull/44874), [44894](https://github.com/WordPress/gutenberg/pull/44894))
+- Lodash: Remove completely from `@wordpress/viewport` package. ([44572](https://github.com/WordPress/gutenberg/pull/44572))
+- Remove unnecessary repeated function call. ([44545](https://github.com/WordPress/gutenberg/pull/44545))
+- Block Library, QueryInspectorControls: Avoid rerender of TaxonomyControls on every keystroke. ([44562](https://github.com/WordPress/gutenberg/pull/44562))
+
+### Documentation
+
+- Fix broken link to `01-basic-esnext` example. ([45000](https://github.com/WordPress/gutenberg/pull/45000))
+- Add `ariaLabel` support to block supports reference documentation. ([45006](https://github.com/WordPress/gutenberg/pull/45006))
+- Docs: Fix some typos. ([44713](https://github.com/WordPress/gutenberg/pull/44713))
+- Layout Docs: Fix broken link in table of contents. ([44719](https://github.com/WordPress/gutenberg/pull/44719))
+- Layout: Document the current state of the layout block support. ([42619](https://github.com/WordPress/gutenberg/pull/42619))
+- Make `spacingScale` description more accurate in theme.json schema. ([44794](https://github.com/WordPress/gutenberg/pull/44794))
+- Remove duplicate img tag. ([44936](https://github.com/WordPress/gutenberg/pull/44936))
+- Updating versions in WP in light of 6.0.3 release. ([45052](https://github.com/WordPress/gutenberg/pull/45052))
+- package(prettier-config): Update documentation. ([44620](https://github.com/WordPress/gutenberg/pull/44620))
+- Connect extend Query Loop documentation. ([44699](https://github.com/WordPress/gutenberg/pull/44699))
+- Update Extending the Query Loop block documentation. ([44703](https://github.com/WordPress/gutenberg/pull/44703))
+- Update link to plugin-sidebar example in documentation. ([44790](https://github.com/WordPress/gutenberg/pull/44790))
+- Update versions in WordPress documentation for 6.1. ([44785](https://github.com/WordPress/gutenberg/pull/44785))
+- Update visually hidden documentation to mention stacking context. ([44867](https://github.com/WordPress/gutenberg/pull/44867))
+
+
+
+### Code Quality
+
+- Fix comment in edit post reducer. ([44978](https://github.com/WordPress/gutenberg/pull/44978))
+- Fix: PHP 8.1 Deprecation messages. ([44828](https://github.com/WordPress/gutenberg/pull/44828))
+- Navigator: Remove overflow styles from NavigatorScreen. ([44973](https://github.com/WordPress/gutenberg/pull/44973))
+- Refactor the document actions component. ([45060](https://github.com/WordPress/gutenberg/pull/45060))
+- Simplify BlockStyles preview by removing the slot. ([44825](https://github.com/WordPress/gutenberg/pull/44825))
+- Update 6.1 CSS filter to match core. ([44962](https://github.com/WordPress/gutenberg/pull/44962))
+- Fluid Typography: Add missing style.css file to test theme. ([44958](https://github.com/WordPress/gutenberg/pull/44958))
+- Site Editor: Dynamic Templates Names and Descriptions: Code parity with wp/6.1. ([44646](https://github.com/WordPress/gutenberg/pull/44646))
+- Fluid Typography: Use wp_ prefixed function. ([44876](https://github.com/WordPress/gutenberg/pull/44876))
+- Remove gutenberg_ prefix for theme_json_get_style_nodes filter. ([44949](https://github.com/WordPress/gutenberg/pull/44949))
+- Update the names of filters for global styles data. ([44940](https://github.com/WordPress/gutenberg/pull/44940))
+- Try: Refresh selection styles. ([44150](https://github.com/WordPress/gutenberg/pull/44150))
+- Design Tools, Archive Block: Prevent spacing styles and additional CSS classes from being printed twice. ([44438](https://github.com/WordPress/gutenberg/pull/44438))
+- Design Tools, Tag Cloud Block: Prevent block support styles and additional CSS classes from being printed twice. ([44439](https://github.com/WordPress/gutenberg/pull/44439))
+- Site Editor: Rename header and sidebar components in edit-site. ([44974](https://github.com/WordPress/gutenberg/pull/44974))
+- Refactor dropzone for unmodified default blocks with `useBlockDropZone` and `InsertionPoint`. ([44647](https://github.com/WordPress/gutenberg/pull/44647))
+- Data: Cleanup `useDispatch` tests. ([44856](https://github.com/WordPress/gutenberg/pull/44856))
+
+
+#### ESLint
+- ESLint: Fix rule violations. ([44927](https://github.com/WordPress/gutenberg/pull/44927), [44896](https://github.com/WordPress/gutenberg/pull/44896), [44895](https://github.com/WordPress/gutenberg/pull/44895), [44926](https://github.com/WordPress/gutenberg/pull/44926), [44939](https://github.com/WordPress/gutenberg/pull/44939), [44930](https://github.com/WordPress/gutenberg/pull/44930), [44902](https://github.com/WordPress/gutenberg/pull/44902), [44928](https://github.com/WordPress/gutenberg/pull/44928), [44925](https://github.com/WordPress/gutenberg/pull/44925), [45061](https://github.com/WordPress/gutenberg/pull/45061), [45067](https://github.com/WordPress/gutenberg/pull/45067), [45097](https://github.com/WordPress/gutenberg/pull/45097), [45064](https://github.com/WordPress/gutenberg/pull/45064), [45068](https://github.com/WordPress/gutenberg/pull/45068), [45062](https://github.com/WordPress/gutenberg/pull/45062), [45096](https://github.com/WordPress/gutenberg/pull/45096), [45106](https://github.com/WordPress/gutenberg/pull/45106), [45018](https://github.com/WordPress/gutenberg/pull/45018))
+- ESLint: Fix a few jsdoc/check-line-alignment warnings. ([44984](https://github.com/WordPress/gutenberg/pull/44984))
+- ESLint: Fix empty `toHaveTextContent`. ([45007](https://github.com/WordPress/gutenberg/pull/45007))
+
+#### Refactor tests to RTL
+- Data Layer ([44802](https://github.com/WordPress/gutenberg/pull/44802), [44855](https://github.com/WordPress/gutenberg/pull/44855), [45058](https://github.com/WordPress/gutenberg/pull/45058))
+- Block Editor ([44869](https://github.com/WordPress/gutenberg/pull/44869), [44870](https://github.com/WordPress/gutenberg/pull/44870), [44871](https://github.com/WordPress/gutenberg/pull/44871), [45071](https://github.com/WordPress/gutenberg/pull/45071))
+- Components ([45072](https://github.com/WordPress/gutenberg/pull/45072), [45012](https://github.com/WordPress/gutenberg/pull/45012), [44801](https://github.com/WordPress/gutenberg/pull/44801), [44826](https://github.com/WordPress/gutenberg/pull/44826), [44824](https://github.com/WordPress/gutenberg/pull/44824), [44821](https://github.com/WordPress/gutenberg/pull/44821), [44820](https://github.com/WordPress/gutenberg/pull/44820))
+- Post Editor([45011](https://github.com/WordPress/gutenberg/pull/45011), [44835](https://github.com/WordPress/gutenberg/pull/44835), [45066](https://github.com/WordPress/gutenberg/pull/45066), [44923](https://github.com/WordPress/gutenberg/pull/44923), [44872](https://github.com/WordPress/gutenberg/pull/44872))
+- Compose ([44818](https://github.com/WordPress/gutenberg/pull/44818), [44819](https://github.com/WordPress/gutenberg/pull/44819), [44912](https://github.com/WordPress/gutenberg/pull/44912), [45108](https://github.com/WordPress/gutenberg/pull/45108))
+- Viewport ([44766](https://github.com/WordPress/gutenberg/pull/44766), [44769](https://github.com/WordPress/gutenberg/pull/44769))
+- Element ([44804](https://github.com/WordPress/gutenberg/pull/44804))
+- Interface ([44803](https://github.com/WordPress/gutenberg/pull/44803))
+
+
+#### Components
+- Navigator: Refactor Storybook code to TypeScript and controls. ([44979](https://github.com/WordPress/gutenberg/pull/44979))
+- Navigator: Refactor tests to TypeScript and user-event. ([44970](https://github.com/WordPress/gutenberg/pull/44970))
+- Refactor `ToolsPanel` to pass `exhaustive-deps`. ([45028](https://github.com/WordPress/gutenberg/pull/45028))
+- Refactor `Tooltip` tests to always render inline. ([45105](https://github.com/WordPress/gutenberg/pull/45105))
+- Refactor to use `@testing-library/react`. ([44698](https://github.com/WordPress/gutenberg/pull/44698), [44695](https://github.com/WordPress/gutenberg/pull/44695), [44697](https://github.com/WordPress/gutenberg/pull/44697))
+- Refactor `Tooltip` to ignore `exhaustive-deps`. ([45043](https://github.com/WordPress/gutenberg/pull/45043))
+- Modal: Convert component to TypeScript. ([42949](https://github.com/WordPress/gutenberg/pull/42949))
+- Sandbox: Use toString to create observe and resize script string. ([42872](https://github.com/WordPress/gutenberg/pull/42872))
+
+
+
+### Tools
+
+- Combine stale issue gardening workflows into one. ([44754](https://github.com/WordPress/gutenberg/pull/44754))
+- Ensure stale github actions workflow only runs for particular issue labels. ([44910](https://github.com/WordPress/gutenberg/pull/44910))
+- Configure Dependabot pull requests for GitHub Actions. ([44677](https://github.com/WordPress/gutenberg/pull/44677))
+- Storybook: Add theme switcher tool. ([44715](https://github.com/WordPress/gutenberg/pull/44715))
+- Bug Fix, wp-env: Use case insensitive regex when checking WP version string. ([44887](https://github.com/WordPress/gutenberg/pull/44887))
+- Cherry Pick Script: Restore retrieval of merge_commit_sha. ([44890](https://github.com/WordPress/gutenberg/pull/44890))
+
+#### Schemas
+
+- Fix: Typo in block.json schema default scope values. ([44944](https://github.com/WordPress/gutenberg/pull/44944))
+- Fix: typo in block.json schema. ([44798](https://github.com/WordPress/gutenberg/pull/44798))
+- Fix: theme json schema validation. ([44799](https://github.com/WordPress/gutenberg/pull/44799))
+- Add title property to theme.json schema. ([44797](https://github.com/WordPress/gutenberg/pull/44797))
+
+#### Build Tooling
+- Add `.eslintcache` to `.gitignore`. ([44938](https://github.com/WordPress/gutenberg/pull/44938))
+- ESLint: Add and enable `eslint-plugin-jest-dom`. ([44983](https://github.com/WordPress/gutenberg/pull/44983))
+- Style Engine: Move PHP unit tests to Gutenberg. ([44722](https://github.com/WordPress/gutenberg/pull/44722))
+
+#### Testing
+- Add support for React 18 and later to jest-preset-default. ([44680](https://github.com/WordPress/gutenberg/pull/44680))
+- Migrate `nonce.test.js` to Playwright. ([44929](https://github.com/WordPress/gutenberg/pull/44929))
+- end-to-end Tests: Make attributes and innerblocks optional in insertBlock. ([44933](https://github.com/WordPress/gutenberg/pull/44933))
+- Bug Fix, end-to-end tests: Update button selector. ([45087](https://github.com/WordPress/gutenberg/pull/45087))
+- Mobile
+ - Code block - Migrate from React Test Render to React Native Testing Library. ([44833](https://github.com/WordPress/gutenberg/pull/44833))
+ - Tooltip - Migrate from React Test Render to React Native Testing Library. ([44831](https://github.com/WordPress/gutenberg/pull/44831))
+ - Update editor initial HTML test for iOS and update Appium. ([44732](https://github.com/WordPress/gutenberg/pull/44732))
+ - useResizeObserver - Migrate from React Test Render to React Native Testing Library. ([44832](https://github.com/WordPress/gutenberg/pull/44832))
+
+
+## First time contributors
+
+The following PRs were merged by first time contributors:
+
+- @benridane: Fix list outdents on Enter in quote block. ([44809](https://github.com/WordPress/gutenberg/pull/44809))
+- @jeremylind: FIX: Typo in block.json schema default scope values. ([44944](https://github.com/WordPress/gutenberg/pull/44944))
+- @PooSham: Add support for React 18 and later to jest-preset-default. ([44680](https://github.com/WordPress/gutenberg/pull/44680))
+- @thelovekesh: package(prettier-config): Update documentation. ([44620](https://github.com/WordPress/gutenberg/pull/44620))
+
+
+## Contributors
+
+The following contributors merged PRs in this release:
+
+@aaronrobertshaw @adamziel @afercia @ajlende @alanjacobmathew @amustaque97 @andrewserong @annezazu @BE-Webdesign @benridane @c4rl0sbr4v0 @carolinan @chad1008 @ciampo @costdev @danielbachhuber @dcalhoun @desrosj @dinhtungdu @draganescu @ellatrix @fabiankaegy @fluiddot @geriux @getdave @glendaviesnz @gvgvgvijayan @jasmussen @jeremylind @jorgefilipecosta @joshuatf @jrfnl @jsnajdr @kevin940726 @Mamaduka @mikachan @mirka @mtias @noisysocks @ntsekouras @oandregal @ockham @pento @PooSham @ramonjd @ryanwelcher @sabernhardt @SantosGuillamot @scruffian @Soean @t-hamano @talldan @tellthemachines @thelovekesh @tyxla @walbo @youknowriad
+
+
= 14.3.1 =
diff --git a/docs/contributors/code/testing-overview.md b/docs/contributors/code/testing-overview.md
index fa17909b4cd37..f68469f6a893f 100644
--- a/docs/contributors/code/testing-overview.md
+++ b/docs/contributors/code/testing-overview.md
@@ -367,13 +367,13 @@ describe( 'SolarSystem', () => {
test( 'should render', () => {
const { container } = render( );
- expect( container.firstChild ).toMatchSnapshot();
+ expect( container ).toMatchSnapshot();
} );
test( 'should contain mars if planets is true', () => {
const { container } = render( );
- expect( container.firstChild ).toMatchSnapshot();
+ expect( container ).toMatchSnapshot();
expect( screen.getByText( /mars/i ) ).toBeInTheDocument();
} );
} );
@@ -422,7 +422,7 @@ test( 'should contain mars if planets is true', () => {
const { container } = render( );
// Snapshot will catch unintended changes
- expect( container.firstChild ).toMatchSnapshot();
+ expect( container ).toMatchSnapshot();
// This is what we actually expect to find in our test
expect( screen.getByText( /mars/i ) ).toBeInTheDocument();
@@ -447,8 +447,8 @@ Similarly, the `toMatchStyleDiffSnapshot` function allows to snapshot only the d
test( 'should render margin', () => {
const { container: spacer } = render( );
const { container: spacerWithMargin } = render( );
- expect( spacerWithMargin.firstChild ).toMatchStyleDiffSnapshot(
- spacer.firstChild
+ expect( spacerWithMargin ).toMatchStyleDiffSnapshot(
+ spacer
);
} );
```
diff --git a/docs/explanations/faq.md b/docs/explanations/faq.md
index b1eb22b330964..c56dd2e0c3c6c 100644
--- a/docs/explanations/faq.md
+++ b/docs/explanations/faq.md
@@ -28,7 +28,7 @@ What follows is a set of questions that have come up from the last few years of
### The Development Experience
- [How do I make my own block?](#how-do-i-make-my-own-block)
-- [Does Gutenberg involve editing posts/pages in the front-end?](#does-gutenberg-involve-editing-postspages-in-the-front-end)
+- [Does Gutenberg involve editing posts/pages in the front-end?](#does-gutenberg-involve-editing-posts-pages-in-the-front-end)
- [Given Gutenberg is built in JavaScript, how do old meta boxes (PHP) work?](#given-gutenberg-is-built-in-javascript-how-do-old-meta-boxes-php-work)
- [How can plugins extend the Gutenberg UI?](#how-can-plugins-extend-the-gutenberg-ui)
- [Are Custom Post Types still supported?](#are-custom-post-types-still-supported)
diff --git a/docs/how-to-guides/curating-the-editor-experience.md b/docs/how-to-guides/curating-the-editor-experience.md
index 4c7ef0096d051..584e6dc18b8a0 100644
--- a/docs/how-to-guides/curating-the-editor-experience.md
+++ b/docs/how-to-guides/curating-the-editor-experience.md
@@ -14,10 +14,25 @@ Users have the ability to lock and unlock blocks via the editor. The locking UI
Keep in mind that each block you want to lock will need to be individually locked as desired. There is not a way to mass lock blocks currently.
-**Lock patterns or templates**
+**Apply block locking to patterns or templates**
When building patterns or templates, theme authors can use these same UI tools to set the default locked state of blocks. For example, a theme author could lock various pieces of a header. Keep in mind that by default, users with editing access can unlock these blocks. [Here’s an example of a pattern](https://gist.github.com/annezazu/acee30f8b6e8995e1b1a52796e6ef805) with various blocks locked in different ways and here’s more context on [creating a template with locked blocks](https://make.wordpress.org/core/2022/02/09/core-editor-improvement-curated-experiences-with-locking-apis-theme-json/). You can build these patterns in the editor itself, including adding locking options, before following the [documentation to register them](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-patterns/).
+**Apply content only editing in patterns or templates**
+
+This functionality was introduced in WordPress 6.1. In contrast to block locking, which disables the ability to move or remove blocks, content only editing is both designed for use at the pattern or template level and hides all design tools, while still allowing for the ability to edit the content of the blocks. This provides a great way to simplify the interface for users and preserve a design. When this option is added, the following changes occur:
+
+- Non-content child blocks (containers, spacers, columns, etc) are hidden from list view, un-clickable on the canvas, and entirely un-editable.
+- The Inspector will display a list of all child 'content' blocks. Clicking a block in this list reveals its settings panel.
+- The main List View only shows content blocks, all at the same level regardless of actual nesting.
+- Children blocks within the overall content locked container are automatically move / remove locked.
+- Additional child blocks cannot be inserted, further preserving the design and layout.
+- There is a link in the block toolbar to ‘Modify’ that a user can toggle on/off to have access to the broader design tools. Currently, it's not possibly to programmatically remove this option.
+
+This option can be applied to Columns, Cover, and Group blocks as well as third-party blocks that have the templateLock attribute in its block.json. To adopt this functionality, you need to use `"templateLock":"contentOnly"`. [Here's an example of a pattern](https://gist.github.com/annezazu/d62acd2514cea558be6cea97fe28ff3c) with this functionality in place. For more information, please [review the relevant documentation](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-templates/#locking).
+
+Note: There is no UI in place to manage content locking and it must be managed at the code level.
+
**Change permissions to control locking ability**
Agencies and plugin authors can offer an even more curated experience by limiting which users have [permission to lock and unlock blocks](https://make.wordpress.org/core/2022/05/05/block-locking-settings-in-wordpress-6-0/). By default, anyone who is an administrator will have access to lock and unlock blocks.
diff --git a/docs/reference-guides/block-api/block-metadata.md b/docs/reference-guides/block-api/block-metadata.md
index 6ce54d8009dd7..6185043353fc2 100644
--- a/docs/reference-guides/block-api/block-metadata.md
+++ b/docs/reference-guides/block-api/block-metadata.md
@@ -13,7 +13,7 @@ Starting in WordPress 5.8 release, we encourage using the `block.json` metadata
"category": "text",
"parent": [ "core/group" ],
"icon": "star",
- "description": "Shows warning, error or success notices…",
+ "description": "Shows warning, error or success notices...",
"keywords": [ "alert", "message" ],
"version": "1.0.3",
"textdomain": "my-plugin",
@@ -646,7 +646,7 @@ return array(
Starting in the WordPress 5.8 release, it is possible to instruct WordPress to enqueue scripts and styles for a block type only when rendered on the frontend. It applies to the following asset fields in the `block.json` file:
- `script`
-- `viewScript` (when the block defines `render_callback` during registration in PHP or a `render` field in its `block.json`, then the script is registered but the block author is responsible for enqueuing it)
+- `viewScript`
- `style`
## Internationalization
diff --git a/docs/reference-guides/core-blocks.md b/docs/reference-guides/core-blocks.md
index 6d864b69d8bef..dd9fdbdc0566b 100644
--- a/docs/reference-guides/core-blocks.md
+++ b/docs/reference-guides/core-blocks.md
@@ -167,7 +167,7 @@ Contains the block elements used to display a comment, like the title, date, aut
- **Name:** core/comment-template
- **Category:** design
-- **Supports:** align, typography (fontSize, lineHeight), ~~html~~, ~~reusable~~
+- **Supports:** align, spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~, ~~reusable~~
- **Attributes:**
## Comments
@@ -491,7 +491,7 @@ Display a post's comments count. ([Source](https://github.com/WordPress/gutenber
- **Name:** core/post-comments-count
- **Category:** theme
-- **Supports:** color (background, gradients, text), typography (fontSize, lineHeight), ~~html~~
+- **Supports:** color (background, gradients, text), spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
- **Attributes:** textAlign
## Post Comments Form
@@ -500,7 +500,7 @@ Display a post's comments form. ([Source](https://github.com/WordPress/gutenberg
- **Name:** core/post-comments-form
- **Category:** theme
-- **Supports:** color (background, gradients, link, text), typography (fontSize, lineHeight), ~~html~~
+- **Supports:** color (background, gradients, link, text), spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
- **Attributes:** textAlign
## Post Comments Link
@@ -509,7 +509,7 @@ Displays the link to the current post comments. ([Source](https://github.com/Wor
- **Name:** core/post-comments-link
- **Category:** theme
-- **Supports:** color (background, link, ~~text~~), typography (fontSize, lineHeight), ~~html~~
+- **Supports:** color (background, link, ~~text~~), spacing (margin, padding), typography (fontSize, lineHeight), ~~html~~
- **Attributes:** textAlign
## Post Content
@@ -753,7 +753,7 @@ Display an icon linking to a social media profile or site. ([Source](https://git
- **Name:** core/social-link
- **Category:** widgets
- **Supports:** ~~html~~, ~~reusable~~
-- **Attributes:** label, service, url
+- **Attributes:** label, rel, service, url
## Social Icons
diff --git a/docs/reference-guides/data/data-core-edit-post.md b/docs/reference-guides/data/data-core-edit-post.md
index 26337e973bd34..1c082528485c3 100644
--- a/docs/reference-guides/data/data-core-edit-post.md
+++ b/docs/reference-guides/data/data-core-edit-post.md
@@ -433,8 +433,7 @@ Update a metabox.
### setAvailableMetaBoxesPerLocation
-Returns an action object used in signaling
-what Meta boxes are available in which location.
+Stores info about which Meta boxes are available in which location.
_Parameters_
diff --git a/docs/reference-guides/data/data-core-edit-site.md b/docs/reference-guides/data/data-core-edit-site.md
index 573d092472521..9ee5fea71801b 100644
--- a/docs/reference-guides/data/data-core-edit-site.md
+++ b/docs/reference-guides/data/data-core-edit-site.md
@@ -189,6 +189,18 @@ _Returns_
- `boolean`: True if the navigation panel should be open; false if closed.
+### isSaveViewOpened
+
+Returns the current opened/closed state of the save panel.
+
+_Parameters_
+
+- _state_ `Object`: Global application state.
+
+_Returns_
+
+- `boolean`: True if the save panel should be open; false if closed.
+
## Actions
@@ -284,6 +296,14 @@ _Parameters_
- _isOpen_ `boolean`: If true, opens the nav panel. If false, closes it. It does not toggle the state, but sets it directly.
+### setIsSaveViewOpened
+
+Sets whether the save view panel should be open.
+
+_Parameters_
+
+- _isOpen_ `boolean`: If true, opens the save view. If false, closes it. It does not toggle the state, but sets it directly.
+
### setNavigationPanelActiveMenu
Action that sets the active navigation panel menu.
diff --git a/gutenberg.php b/gutenberg.php
index 9791f13a9a0a8..ab8a779c4622b 100644
--- a/gutenberg.php
+++ b/gutenberg.php
@@ -5,7 +5,7 @@
* Description: Printing since 1440. This is the development plugin for the new block editor in core.
* Requires at least: 5.9
* Requires PHP: 5.6
- * Version: 14.4.0-rc.1
+ * Version: 14.5.0-rc.1
* Author: Gutenberg Team
* Text Domain: gutenberg
*
diff --git a/lib/block-supports/layout.php b/lib/block-supports/layout.php
index 15a7a131f8a9b..a50e1fb883717 100644
--- a/lib/block-supports/layout.php
+++ b/lib/block-supports/layout.php
@@ -291,6 +291,23 @@ function gutenberg_get_layout_style( $selector, $layout, $has_block_gap_support
return '';
}
+/**
+ * Gets classname from last tag in a string of HTML.
+ *
+ * @param string $html markup to be processed.
+ * @return string String of inner wrapper classnames.
+ */
+function gutenberg_get_classnames_from_last_tag( $html ) {
+ $tags = new WP_HTML_Tag_Processor( $html );
+ $last_classnames = '';
+
+ while ( $tags->next_tag() ) {
+ $last_classnames = $tags->get_attribute( 'class' );
+ }
+
+ return (string) $last_classnames;
+}
+
/**
* Renders the layout config to the block wrapper.
*
@@ -320,7 +337,6 @@ function gutenberg_render_layout_support_flag( $block_content, $block ) {
$class_names = array();
$layout_definitions = _wp_array_get( $global_layout_settings, array( 'definitions' ), array() );
- $block_classname = wp_get_block_default_classname( $block['blockName'] );
$container_class = wp_unique_id( 'wp-container-' );
$layout_classname = '';
@@ -397,7 +413,7 @@ function gutenberg_render_layout_support_flag( $block_content, $block ) {
$should_skip_gap_serialization = gutenberg_should_skip_block_supports_serialization( $block_type, 'spacing', 'blockGap' );
$style = gutenberg_get_layout_style(
- ".$block_classname.$container_class",
+ ".$container_class.$container_class",
$used_layout,
$has_block_gap_support,
$gap_value,
@@ -412,18 +428,24 @@ function gutenberg_render_layout_support_flag( $block_content, $block ) {
}
}
- /*
- * This assumes the hook only applies to blocks with a single wrapper.
- * A limitation of this hook is that nested inner blocks wrappers are not yet supported.
- */
- $content = preg_replace(
- '/' . preg_quote( 'class="', '/' ) . '/',
- 'class="' . esc_attr( implode( ' ', $class_names ) ) . ' ',
- $block_content,
- 1
- );
+ /**
+ * The first chunk of innerContent contains the block markup up until the inner blocks start.
+ * We want to target the opening tag of the inner blocks wrapper, which is the last tag in that chunk.
+ */
+ $inner_content_classnames = isset( $block['innerContent'][0] ) && 'string' === gettype( $block['innerContent'][0] ) ? gutenberg_get_classnames_from_last_tag( $block['innerContent'][0] ) : '';
+
+ $content = new WP_HTML_Tag_Processor( $block_content );
+ if ( $inner_content_classnames ) {
+ $content->next_tag( array( 'class_name' => $inner_content_classnames ) );
+ foreach ( $class_names as $class_name ) {
+ $content->add_class( $class_name );
+ }
+ } else {
+ $content->next_tag();
+ $content->add_class( implode( ' ', $class_names ) );
+ }
- return $content;
+ return (string) $content;
}
// Register the block support. (overrides core one).
@@ -433,6 +455,7 @@ function gutenberg_render_layout_support_flag( $block_content, $block ) {
'register_attribute' => 'gutenberg_register_layout_support',
)
);
+
if ( function_exists( 'wp_render_layout_support_flag' ) ) {
remove_filter( 'render_block', 'wp_render_layout_support_flag' );
}
@@ -454,7 +477,7 @@ function gutenberg_restore_group_inner_container( $block_content, $block ) {
preg_quote( $tag_name, '/' )
);
if (
- WP_Theme_JSON_Resolver_Gutenberg::theme_has_support() ||
+ wp_theme_has_theme_json() ||
1 === preg_match( $group_with_inner_container_regex, $block_content ) ||
( isset( $block['attrs']['layout']['type'] ) && 'flex' === $block['attrs']['layout']['type'] )
) {
@@ -519,7 +542,7 @@ function gutenberg_restore_image_outer_container( $block_content, $block ) {
)/iUx";
if (
- WP_Theme_JSON_Resolver::theme_has_support() ||
+ wp_theme_has_theme_json() ||
0 === preg_match( $image_with_align, $block_content, $matches )
) {
return $block_content;
diff --git a/lib/client-assets.php b/lib/client-assets.php
index f1b94c0d46abf..ea199750fa10b 100644
--- a/lib/client-assets.php
+++ b/lib/client-assets.php
@@ -318,7 +318,7 @@ function gutenberg_register_packages_styles( $styles ) {
);
// Only load the default layout and margin styles for themes without theme.json file.
- if ( ! WP_Theme_JSON_Resolver_Gutenberg::theme_has_support() ) {
+ if ( ! wp_theme_has_theme_json() ) {
$wp_edit_blocks_dependencies[] = 'wp-editor-classic-layout-styles';
}
diff --git a/lib/compat/wordpress-6.0/block-patterns.php b/lib/compat/wordpress-6.0/block-patterns.php
index 6ba5a15035530..c42ec73152219 100644
--- a/lib/compat/wordpress-6.0/block-patterns.php
+++ b/lib/compat/wordpress-6.0/block-patterns.php
@@ -15,7 +15,7 @@ function _register_remote_theme_patterns() {
return;
}
- if ( ! WP_Theme_JSON_Resolver_Gutenberg::theme_has_support() ) {
+ if ( ! wp_theme_has_theme_json() ) {
return;
}
diff --git a/lib/compat/wordpress-6.0/class-wp-theme-json-resolver-6-0.php b/lib/compat/wordpress-6.0/class-wp-theme-json-resolver-6-0.php
index b85e8e335037a..45779d395e629 100644
--- a/lib/compat/wordpress-6.0/class-wp-theme-json-resolver-6-0.php
+++ b/lib/compat/wordpress-6.0/class-wp-theme-json-resolver-6-0.php
@@ -86,7 +86,7 @@ public static function get_theme_data( $deprecated = array(), $options = array()
* and merge the static::$theme upon that.
*/
$theme_support_data = WP_Theme_JSON_Gutenberg::get_from_editor_settings( get_default_block_editor_settings() );
- if ( ! static::theme_has_support() ) {
+ if ( ! wp_theme_has_theme_json() ) {
if ( ! isset( $theme_support_data['settings']['color'] ) ) {
$theme_support_data['settings']['color'] = array();
}
diff --git a/lib/compat/wordpress-6.0/client-assets.php b/lib/compat/wordpress-6.0/client-assets.php
index 0c5697817a94a..f9affb31af4b5 100644
--- a/lib/compat/wordpress-6.0/client-assets.php
+++ b/lib/compat/wordpress-6.0/client-assets.php
@@ -105,6 +105,11 @@ function gutenberg_resolve_assets() {
add_filter(
'block_editor_settings_all',
function( $settings ) {
+ // The `__unstableResolvedAssets` are generated by `_wp_get_iframed_editor_assets` for WP >= 6.0.
+ if ( function_exists( '_wp_get_iframed_editor_assets' ) ) {
+ return $settings;
+ }
+
// In the future we can allow WP Dependency handles to be passed.
$settings['__unstableResolvedAssets'] = gutenberg_resolve_assets();
return $settings;
diff --git a/lib/compat/wordpress-6.0/get-global-styles-and-settings.php b/lib/compat/wordpress-6.0/get-global-styles-and-settings.php
index 1dfafe9f7631d..9ed3e891182cb 100644
--- a/lib/compat/wordpress-6.0/get-global-styles-and-settings.php
+++ b/lib/compat/wordpress-6.0/get-global-styles-and-settings.php
@@ -85,7 +85,7 @@ function gutenberg_get_global_styles_svg_filters() {
}
}
- $supports_theme_json = WP_Theme_JSON_Resolver_Gutenberg::theme_has_support();
+ $supports_theme_json = wp_theme_has_theme_json();
$origins = array( 'default', 'theme', 'custom' );
if ( ! $supports_theme_json ) {
diff --git a/lib/compat/wordpress-6.0/rest-api.php b/lib/compat/wordpress-6.0/rest-api.php
index d8506911d18d1..0cf08533e33b7 100644
--- a/lib/compat/wordpress-6.0/rest-api.php
+++ b/lib/compat/wordpress-6.0/rest-api.php
@@ -35,14 +35,6 @@ function gutenberg_register_edit_site_export_endpoint() {
}
add_action( 'rest_api_init', 'gutenberg_register_edit_site_export_endpoint' );
-/**
- * Registers the block pattern categories REST API routes.
- */
-function gutenberg_register_rest_block_pattern_categories() {
- $block_patterns = new WP_REST_Block_Pattern_Categories_Controller();
- $block_patterns->register_routes();
-}
-add_action( 'rest_api_init', 'gutenberg_register_rest_block_pattern_categories' );
/**
* Register a core site settings.
diff --git a/lib/compat/wordpress-6.1/block-editor-settings.php b/lib/compat/wordpress-6.1/block-editor-settings.php
index 3181329475df4..cafe91e787dc6 100644
--- a/lib/compat/wordpress-6.1/block-editor-settings.php
+++ b/lib/compat/wordpress-6.1/block-editor-settings.php
@@ -68,7 +68,7 @@ function gutenberg_get_block_editor_settings( $settings ) {
}
}
- if ( WP_Theme_JSON_Resolver::theme_has_support() ) {
+ if ( wp_theme_has_theme_json() ) {
$block_classes = array(
'css' => 'styles',
'__unstableType' => 'theme',
diff --git a/lib/compat/wordpress-6.1/class-wp-theme-json-6-1.php b/lib/compat/wordpress-6.1/class-wp-theme-json-6-1.php
index f06ecc93713f8..8e12d99a07490 100644
--- a/lib/compat/wordpress-6.1/class-wp-theme-json-6-1.php
+++ b/lib/compat/wordpress-6.1/class-wp-theme-json-6-1.php
@@ -1090,7 +1090,7 @@ protected static function compute_style_properties( $styles, $settings = array()
* @param array $styles Styles subtree.
* @param array $path Which property to process.
* @param array $theme_json Theme JSON array.
- * @return string Style property value.
+ * @return string|array|null Style property value.
*/
protected static function get_property_value( $styles, $path, $theme_json = null ) {
$value = _wp_array_get( $styles, $path );
@@ -1113,7 +1113,7 @@ protected static function get_property_value( $styles, $path, $theme_json = null
}
}
- if ( is_array( $value ) ) {
+ if ( ! $value || is_array( $value ) ) {
return $value;
}
diff --git a/lib/compat/wordpress-6.1/get-global-styles-and-settings.php b/lib/compat/wordpress-6.1/get-global-styles-and-settings.php
index 1837aa04dbb20..35c540ce1c57a 100644
--- a/lib/compat/wordpress-6.1/get-global-styles-and-settings.php
+++ b/lib/compat/wordpress-6.1/get-global-styles-and-settings.php
@@ -83,7 +83,7 @@ function gutenberg_get_global_stylesheet( $types = array() ) {
}
}
$tree = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data();
- $supports_theme_json = WP_Theme_JSON_Resolver_Gutenberg::theme_has_support();
+ $supports_theme_json = wp_theme_has_theme_json();
if ( empty( $types ) && ! $supports_theme_json ) {
$types = array( 'variables', 'presets', 'base-layout-styles' );
} elseif ( empty( $types ) ) {
diff --git a/lib/compat/wordpress-6.1/script-loader.php b/lib/compat/wordpress-6.1/script-loader.php
index 0e27c62a1bda5..2bb9edd2a204d 100644
--- a/lib/compat/wordpress-6.1/script-loader.php
+++ b/lib/compat/wordpress-6.1/script-loader.php
@@ -5,37 +5,6 @@
* @package gutenberg
*/
-/**
- * This function takes care of adding inline styles
- * in the proper place, depending on the theme in use.
- *
- * This method was added to core in 5.9.1, but with a single param ($style). The second param ($priority) was
- * added post 6.0, so the 6.1 release needs to have wp_enqueue_block_support_styles updated to include this param.
- *
- * For block themes, it's loaded in the head.
- * For classic ones, it's loaded in the body
- * because the wp_head action happens before
- * the render_block.
- *
- * @link https://core.trac.wordpress.org/ticket/53494.
- *
- * @param string $style String containing the CSS styles to be added.
- * @param int $priority To set the priority for the add_action.
- */
-function gutenberg_enqueue_block_support_styles( $style, $priority = 10 ) {
- $action_hook_name = 'wp_footer';
- if ( wp_is_block_theme() ) {
- $action_hook_name = 'wp_head';
- }
- add_action(
- $action_hook_name,
- static function () use ( $style ) {
- echo "\n";
- },
- $priority
- );
-}
-
/**
* This applies a filter to the list of style nodes that comes from `get_style_nodes` in WP_Theme_JSON.
* This particular filter removes all of the blocks from the array.
diff --git a/lib/compat/wordpress-6.1/template-parts-screen.php b/lib/compat/wordpress-6.1/template-parts-screen.php
index 93b68436764b3..c8b5958bedcd4 100644
--- a/lib/compat/wordpress-6.1/template-parts-screen.php
+++ b/lib/compat/wordpress-6.1/template-parts-screen.php
@@ -24,6 +24,24 @@ function gutenberg_template_parts_screen_menu() {
return;
}
+ global $submenu;
+ if ( ! isset( $submenu['themes.php'] ) ) {
+ return;
+ }
+
+ $needs_custom_page = true;
+ foreach ( $submenu['themes.php'] as $menu_item ) {
+ if ( str_contains( $menu_item[2], 'site-editor.php?postType=wp_template_part' ) ) {
+ $needs_custom_page = false;
+ break;
+ }
+ }
+
+ // Don't use the custom 'Template Parts' page with WP 6.1 and above.
+ if ( ! $needs_custom_page ) {
+ return;
+ }
+
add_theme_page(
__( 'Template Parts', 'gutenberg' ),
__( 'Template Parts', 'gutenberg' ),
@@ -98,7 +116,7 @@ static function( $classes ) {
'styles' => get_block_editor_theme_styles(),
'defaultTemplateTypes' => $indexed_template_types,
'defaultTemplatePartAreas' => get_allowed_block_template_part_areas(),
- 'supportsLayout' => WP_Theme_JSON_Resolver::theme_has_support(),
+ 'supportsLayout' => wp_theme_has_theme_json(),
'supportsTemplatePartsMode' => ! wp_is_block_theme() && current_theme_supports( 'block-template-parts' ),
'__unstableHomeTemplate' => gutenberg_resolve_home_template(),
);
diff --git a/lib/compat/wordpress-6.2/block-patterns.php b/lib/compat/wordpress-6.2/block-patterns.php
new file mode 100644
index 0000000000000..c06b385b7cc2c
--- /dev/null
+++ b/lib/compat/wordpress-6.2/block-patterns.php
@@ -0,0 +1,62 @@
+ _x( 'Buttons', 'Block pattern category', 'gutenberg' ),
+ )
+ );
+ register_block_pattern_category(
+ 'columns',
+ array(
+ 'label' => _x( 'Columns', 'Block pattern category', 'gutenberg' ),
+ )
+ );
+ register_block_pattern_category(
+ 'footer',
+ array(
+ 'label' => _x( 'Footers', 'Block pattern category', 'gutenberg' ),
+ )
+ );
+ register_block_pattern_category(
+ 'gallery',
+ array(
+ 'label' => _x( 'Gallery', 'Block pattern category', 'gutenberg' ),
+ )
+ );
+ register_block_pattern_category(
+ 'header',
+ array(
+ 'label' => _x( 'Headers', 'Block pattern category', 'gutenberg' ),
+ )
+ );
+ register_block_pattern_category(
+ 'text',
+ array(
+ 'label' => _x( 'Text', 'Block pattern category', 'gutenberg' ),
+ )
+ );
+ register_block_pattern_category(
+ 'query',
+ array(
+ 'label' => _x( 'Posts', 'Block pattern category', 'gutenberg' ),
+ 'description' => __( 'Display post summaries in lists, grids, and other layouts.', 'gutenberg' ),
+ )
+ );
+ register_block_pattern_category(
+ 'featured',
+ array(
+ 'label' => _x( 'Featured', 'Block pattern category', 'gutenberg' ),
+ )
+ );
+}
+add_action( 'init', 'gutenberg_register_core_block_patterns_and_categories' );
diff --git a/lib/compat/wordpress-6.2/class-gutenberg-rest-block-pattern-categories-controller.php b/lib/compat/wordpress-6.2/class-gutenberg-rest-block-pattern-categories-controller.php
new file mode 100644
index 0000000000000..970b1c4a1a330
--- /dev/null
+++ b/lib/compat/wordpress-6.2/class-gutenberg-rest-block-pattern-categories-controller.php
@@ -0,0 +1,78 @@
+get_fields_for_response( $request );
+ $keys = array( 'name', 'label', 'description' );
+ $data = array();
+ foreach ( $keys as $key ) {
+ if ( isset( $item[ $key ] ) && rest_is_field_included( $key, $fields ) ) {
+ $data[ $key ] = $item[ $key ];
+ }
+ }
+
+ $context = ! empty( $request['context'] ) ? $request['context'] : 'view';
+ $data = $this->add_additional_fields_to_object( $data, $request );
+ $data = $this->filter_response_by_context( $data, $context );
+ return rest_ensure_response( $data );
+ }
+
+ /**
+ * Retrieves the block pattern category schema, conforming to JSON Schema.
+ *
+ * @since 6.0.0
+ *
+ * @return array Item schema data.
+ */
+ public function get_item_schema() {
+ $schema = array(
+ '$schema' => 'http://json-schema.org/draft-04/schema#',
+ 'title' => 'block-pattern-category',
+ 'type' => 'object',
+ 'properties' => array(
+ 'name' => array(
+ 'description' => __( 'The category name.', 'gutenberg' ),
+ 'type' => 'string',
+ 'readonly' => true,
+ 'context' => array( 'view', 'edit', 'embed' ),
+ ),
+ 'label' => array(
+ 'description' => __( 'The category label, in human readable format.', 'gutenberg' ),
+ 'type' => 'string',
+ 'readonly' => true,
+ 'context' => array( 'view', 'edit', 'embed' ),
+ ),
+ 'description' => array(
+ 'description' => __( 'The category description, in human readable format.', 'gutenberg' ),
+ 'type' => 'string',
+ 'readonly' => true,
+ 'context' => array( 'view', 'edit', 'embed' ),
+ ),
+ ),
+ );
+
+ return $this->add_additional_fields_schema( $schema );
+ }
+}
diff --git a/lib/compat/wordpress-6.2/class-wp-theme-json-resolver-6-2.php b/lib/compat/wordpress-6.2/class-wp-theme-json-resolver-6-2.php
new file mode 100644
index 0000000000000..e10710e0f4709
--- /dev/null
+++ b/lib/compat/wordpress-6.2/class-wp-theme-json-resolver-6-2.php
@@ -0,0 +1,35 @@
+ add_action( 'switch_theme', array( 'WP_Theme_JSON_Resolver', 'clean_cached_data' ) );
+ * > add_action( 'start_previewing_theme', array( 'WP_Theme_JSON_Resolver', 'clean_cached_data' ) );
+ */
+add_action( 'switch_theme', 'wp_theme_clean_theme_json_cached_data' );
+add_action( 'start_previewing_theme', 'wp_theme_clean_theme_json_cached_data' );
diff --git a/lib/compat/wordpress-6.2/get-global-styles-and-settings.php b/lib/compat/wordpress-6.2/get-global-styles-and-settings.php
new file mode 100644
index 0000000000000..4dbd9d0ba8bde
--- /dev/null
+++ b/lib/compat/wordpress-6.2/get-global-styles-and-settings.php
@@ -0,0 +1,47 @@
+register_routes();
+}
+add_action( 'rest_api_init', 'gutenberg_register_rest_block_pattern_categories' );
diff --git a/lib/compat/wordpress-6.2/script-loader.php b/lib/compat/wordpress-6.2/script-loader.php
index 06f01e03b6121..9d67cbd3ef1ad 100644
--- a/lib/compat/wordpress-6.2/script-loader.php
+++ b/lib/compat/wordpress-6.2/script-loader.php
@@ -28,3 +28,38 @@ function gutenberg_register_vendor_scripts_62( $scripts ) {
$script->deps = array_merge( $script->deps, array( 'wp-inert-polyfill' ) );
}
add_action( 'wp_default_scripts', 'gutenberg_register_vendor_scripts_62' );
+
+/**
+ * This function takes care of adding inline styles
+ * in the proper place, depending on the theme in use.
+ *
+ * This method was added to core in 5.9.1, but with a single param ($style). The second param ($priority) was
+ * added post 6.0, so the 6.1 release needs to have wp_enqueue_block_support_styles updated to include this param.
+ *
+ * For block themes, it's loaded in the head.
+ * For classic ones, it's loaded in the body
+ * because the wp_head action happens before
+ * the render_block.
+ *
+ * @link https://core.trac.wordpress.org/ticket/53494.
+ *
+ * @deprecated 6.2 Block supports styles are now stored for enqueuing via the style engine API. See: packages/style-engine/README.md.
+ *
+ * @param string $style String containing the CSS styles to be added.
+ * @param int $priority To set the priority for the add_action.
+ */
+function gutenberg_enqueue_block_support_styles( $style, $priority = 10 ) {
+ _deprecated_function( __FUNCTION__, '6.2' );
+
+ $action_hook_name = 'wp_footer';
+ if ( wp_is_block_theme() ) {
+ $action_hook_name = 'wp_head';
+ }
+ add_action(
+ $action_hook_name,
+ static function () use ( $style ) {
+ echo "\n";
+ },
+ $priority
+ );
+}
diff --git a/lib/experimental/block-editor-settings-mobile.php b/lib/experimental/block-editor-settings-mobile.php
index b0da17e929667..91e3694c199f8 100644
--- a/lib/experimental/block-editor-settings-mobile.php
+++ b/lib/experimental/block-editor-settings-mobile.php
@@ -22,7 +22,7 @@ function gutenberg_get_block_editor_settings_mobile( $settings ) {
isset( $_GET['context'] ) &&
'mobile' === $_GET['context']
) {
- if ( WP_Theme_JSON_Resolver_Gutenberg::theme_has_support() ) {
+ if ( wp_theme_has_theme_json() ) {
$settings['__experimentalStyles'] = gutenberg_get_global_styles();
}
diff --git a/lib/experimental/class-wp-theme-json-resolver-gutenberg.php b/lib/experimental/class-wp-theme-json-resolver-gutenberg.php
index bab54c9410ac8..2f1ee93db30b5 100644
--- a/lib/experimental/class-wp-theme-json-resolver-gutenberg.php
+++ b/lib/experimental/class-wp-theme-json-resolver-gutenberg.php
@@ -15,7 +15,7 @@
*
* @access private
*/
-class WP_Theme_JSON_Resolver_Gutenberg extends WP_Theme_JSON_Resolver_6_1 {
+class WP_Theme_JSON_Resolver_Gutenberg extends WP_Theme_JSON_Resolver_6_2 {
/**
* Returns the theme's data.
*
@@ -73,7 +73,7 @@ public static function get_theme_data( $deprecated = array(), $settings = array(
* and merge the static::$theme upon that.
*/
$theme_support_data = WP_Theme_JSON_Gutenberg::get_from_editor_settings( get_default_block_editor_settings() );
- if ( ! static::theme_has_support() ) {
+ if ( ! wp_theme_has_theme_json() ) {
if ( ! isset( $theme_support_data['settings']['color'] ) ) {
$theme_support_data['settings']['color'] = array();
}
diff --git a/lib/experimental/class-wp-webfonts.php b/lib/experimental/class-wp-webfonts.php
index 02083d50cabc1..e40aca9e8671f 100644
--- a/lib/experimental/class-wp-webfonts.php
+++ b/lib/experimental/class-wp-webfonts.php
@@ -249,8 +249,8 @@ public function validate_webfont( $webfont ) {
}
$valid_props = array(
- 'ascend-override',
- 'descend-override',
+ 'ascent-override',
+ 'descent-override',
'font-display',
'font-family',
'font-stretch',
diff --git a/lib/load.php b/lib/load.php
index 65e8e3e2cb220..d457271d5eb37 100644
--- a/lib/load.php
+++ b/lib/load.php
@@ -49,6 +49,11 @@ function gutenberg_is_experiment_enabled( $name ) {
require_once __DIR__ . '/compat/wordpress-6.1/class-gutenberg-rest-templates-controller.php';
require_once __DIR__ . '/compat/wordpress-6.1/rest-api.php';
+ // WordPress 6.2 compat.
+ require_once __DIR__ . '/compat/wordpress-6.2/class-gutenberg-rest-block-pattern-categories-controller.php';
+ require_once __DIR__ . '/compat/wordpress-6.2/rest-api.php';
+ require_once __DIR__ . '/compat/wordpress-6.2/block-patterns.php';
+
// Experimental.
if ( ! class_exists( 'WP_Rest_Customizer_Nonces' ) ) {
require_once __DIR__ . '/experimental/class-wp-rest-customizer-nonces.php';
@@ -97,6 +102,9 @@ function gutenberg_is_experiment_enabled( $name ) {
// WordPress 6.2 compat.
require __DIR__ . '/compat/wordpress-6.2/script-loader.php';
+require __DIR__ . '/compat/wordpress-6.2/get-global-styles-and-settings.php';
+require __DIR__ . '/compat/wordpress-6.2/default-filters.php';
+require __DIR__ . '/compat/wordpress-6.2/class-wp-theme-json-resolver-6-2.php';
// Experimental features.
remove_action( 'plugins_loaded', '_wp_theme_json_webfonts_handler' ); // Turns off WP 6.0's stopgap handler for Webfonts API.
diff --git a/package-lock.json b/package-lock.json
index a456100f2e462..90aefe53f89c3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,16 +1,34 @@
{
"name": "gutenberg",
- "version": "14.4.0-rc.1",
+ "version": "14.5.0-rc.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@actions/core": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.8.0.tgz",
- "integrity": "sha512-XirM+Zo/PFlA+1h+i4bkfvagujta+LIM2AOSzPbt8JqXbbuxb1HTB+FqIyaKmue9yiCx/JIJY6pXsOl3+T8JGw==",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz",
+ "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==",
"dev": true,
"requires": {
- "@actions/http-client": "^1.0.11"
+ "@actions/http-client": "^2.0.1",
+ "uuid": "^8.3.2"
+ },
+ "dependencies": {
+ "@actions/http-client": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
+ "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
+ "dev": true,
+ "requires": {
+ "tunnel": "^0.0.6"
+ }
+ },
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true
+ }
}
},
"@actions/github": {
@@ -1763,23 +1781,6 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
- "@choojs/findup": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz",
- "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==",
- "dev": true,
- "requires": {
- "commander": "^2.15.1"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- }
- }
- },
"@cnakazawa/watch": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz",
@@ -7970,19 +7971,19 @@
}
},
"@playwright/test": {
- "version": "1.25.1",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.25.1.tgz",
- "integrity": "sha512-IJ4X0yOakXtwkhbnNzKkaIgXe6df7u3H3FnuhI9Jqh+CdO0e/lYQlDLYiyI9cnXK8E7UAppAWP+VqAv6VX7HQg==",
+ "version": "1.27.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.27.1.tgz",
+ "integrity": "sha512-mrL2q0an/7tVqniQQF6RBL2saskjljXzqNcCOVMUjRIgE6Y38nCNaP+Dc2FBW06bcpD3tqIws/HT9qiMHbNU0A==",
"dev": true,
"requires": {
"@types/node": "*",
- "playwright-core": "1.25.1"
+ "playwright-core": "1.27.1"
},
"dependencies": {
"playwright-core": {
- "version": "1.25.1",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.25.1.tgz",
- "integrity": "sha512-lSvPCmA2n7LawD2Hw7gSCLScZ+vYRkhU8xH0AapMyzwN+ojoDqhkH/KIEUxwNu2PjPoE/fcE0wLAksdOhJ2O5g==",
+ "version": "1.27.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.27.1.tgz",
+ "integrity": "sha512-9EmeXDncC2Pmp/z+teoVYlvmPWUC6ejSSYZUln7YaP89Z6lpAaiaAnqroUt/BoLo8tn7WYShcfaCh+xofZa44Q==",
"dev": true
}
}
@@ -16966,6 +16967,243 @@
}
}
},
+ "@typescript-eslint/utils": {
+ "version": "5.40.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.0.tgz",
+ "integrity": "sha512-MO0y3T5BQ5+tkkuYZJBjePewsY+cQnfkYeRqS6tPh28niiIwPnQ1t59CSRcs1ZwJJNOdWw7rv9pF8aP58IMihA==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.9",
+ "@typescript-eslint/scope-manager": "5.40.0",
+ "@typescript-eslint/types": "5.40.0",
+ "@typescript-eslint/typescript-estree": "5.40.0",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^3.0.0",
+ "semver": "^7.3.7"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true
+ },
+ "@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+ "dev": true
+ },
+ "@typescript-eslint/scope-manager": {
+ "version": "5.40.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.0.tgz",
+ "integrity": "sha512-d3nPmjUeZtEWRvyReMI4I1MwPGC63E8pDoHy0BnrYjnJgilBD3hv7XOiETKLY/zTwI7kCnBDf2vWTRUVpYw0Uw==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.40.0",
+ "@typescript-eslint/visitor-keys": "5.40.0"
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "5.40.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.0.tgz",
+ "integrity": "sha512-V1KdQRTXsYpf1Y1fXCeZ+uhjW48Niiw0VGt4V8yzuaDTU8Z1Xl7yQDyQNqyAFcVhpYXIVCEuxSIWTsLDpHgTbw==",
+ "dev": true
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "5.40.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.0.tgz",
+ "integrity": "sha512-b0GYlDj8TLTOqwX7EGbw2gL5EXS2CPEWhF9nGJiGmEcmlpNBjyHsTwbqpyIEPVpl6br4UcBOYlcI2FJVtJkYhg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.40.0",
+ "@typescript-eslint/visitor-keys": "5.40.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "5.40.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.0.tgz",
+ "integrity": "sha512-ijJ+6yig+x9XplEpG2K6FUdJeQGGj/15U3S56W9IqXKJqleuD7zJ2AX/miLezwxpd7ZxDAqO87zWufKg+RPZyQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.40.0",
+ "eslint-visitor-keys": "^3.3.0"
+ }
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true
+ },
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
"@typescript-eslint/visitor-keys": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz",
@@ -17356,6 +17594,7 @@
"@wordpress/url": "file:packages/url",
"@wordpress/warning": "file:packages/warning",
"@wordpress/wordcount": "file:packages/wordcount",
+ "change-case": "^4.1.2",
"classnames": "^2.3.1",
"colord": "^2.7.0",
"diff": "^4.0.2",
@@ -17402,6 +17641,7 @@
"change-case": "^4.1.2",
"classnames": "^2.3.1",
"colord": "^2.7.0",
+ "escape-html": "^1.0.3",
"fast-average-color": "^9.1.1",
"lodash": "^4.17.21",
"memize": "^1.1.0",
@@ -17886,11 +18126,20 @@
"@wordpress/url": "file:packages/url",
"@wordpress/wordcount": "file:packages/wordcount",
"classnames": "^2.3.1",
+ "date-fns": "^2.28.0",
+ "escape-html": "^1.0.3",
"lodash": "^4.17.21",
"memize": "^1.1.0",
"react-autosize-textarea": "^7.1.0",
"rememo": "^4.0.0",
"remove-accents": "^0.4.2"
+ },
+ "dependencies": {
+ "date-fns": {
+ "version": "2.29.3",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
+ "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA=="
+ }
}
},
"@wordpress/element": {
@@ -18308,7 +18557,7 @@
"version": "file:packages/project-management-automation",
"dev": true,
"requires": {
- "@actions/core": "1.8.0",
+ "@actions/core": "1.9.1",
"@actions/github": "^5.0.0",
"@babel/runtime": "^7.16.0",
"@octokit/request-error": "^2.1.0",
@@ -19350,7 +19599,7 @@
"app-root-dir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz",
- "integrity": "sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==",
+ "integrity": "sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg=",
"dev": true
},
"app-root-path": {
@@ -27632,7 +27881,7 @@
"babel-plugin-add-react-displayname": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz",
- "integrity": "sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==",
+ "integrity": "sha1-M51M3be2X9YtHfnbn+BN4TQSK9U=",
"dev": true
},
"babel-plugin-apply-mdx-type-prop": {
@@ -28055,7 +28304,7 @@
"batch-processor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz",
- "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==",
+ "integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=",
"dev": true
},
"bcrypt-pbkdf": {
@@ -31306,7 +31555,7 @@
"css.escape": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
- "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
+ "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=",
"dev": true
},
"cssesc": {
@@ -34114,6 +34363,15 @@
"globals": "^13.8.0"
}
},
+ "eslint-plugin-testing-library": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.7.2.tgz",
+ "integrity": "sha512-0ZmHeR/DUUgEzW8rwUBRWxuqntipDtpvxK0hymdHnLlABryJkzd+CAHr+XnISaVsTisZ5MLHp6nQF+8COHLLTA==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/utils": "^5.13.0"
+ }
+ },
"eslint-scope": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
@@ -36858,7 +37116,7 @@
"has-glob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz",
- "integrity": "sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==",
+ "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=",
"dev": true,
"requires": {
"is-glob": "^3.0.0"
@@ -36867,7 +37125,7 @@
"is-glob": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
"is-extglob": "^2.1.0"
@@ -38754,7 +39012,7 @@
"is-window": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz",
- "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==",
+ "integrity": "sha1-LIlspT25feRdPDMTOmXYyfVjSA0=",
"dev": true
},
"is-windows": {
@@ -42131,7 +42389,7 @@
"js-string-escape": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz",
- "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==",
+ "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=",
"dev": true
},
"js-tokens": {
@@ -43539,7 +43797,7 @@
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
},
"lodash.ismatch": {
"version": "4.4.0",
@@ -43819,7 +44077,7 @@
"lz-string": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
- "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==",
+ "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=",
"dev": true
},
"macos-release": {
@@ -47064,7 +47322,7 @@
"num2fraction": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
- "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
"dev": true
},
"number-is-nan": {
@@ -48542,7 +48800,7 @@
"p-defer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
- "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
"dev": true
},
"p-event": {
@@ -49427,14 +49685,22 @@
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
},
"postcss": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
- "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
+ "version": "8.4.16",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz",
+ "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==",
"dev": true,
"requires": {
- "nanoid": "^3.1.30",
+ "nanoid": "^3.3.4",
"picocolors": "^1.0.0",
- "source-map-js": "^1.0.1"
+ "source-map-js": "^1.0.2"
+ },
+ "dependencies": {
+ "nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "dev": true
+ }
}
},
"postcss-calc": {
@@ -50108,7 +50374,7 @@
"pretty-hrtime": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
+ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
"dev": true
},
"prismjs": {
@@ -52414,7 +52680,7 @@
"relateurl": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
- "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
"dev": true
},
"remark": {
@@ -53264,46 +53530,15 @@
"integrity": "sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA=="
},
"rtlcss": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.6.2.tgz",
- "integrity": "sha512-06LFAr+GAPo+BvaynsXRfoYTJvSaWRyOhURCQ7aeI1MKph9meM222F+Zkt3bDamyHHJuGi3VPtiRkpyswmQbGA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.0.0.tgz",
+ "integrity": "sha512-j6oypPP+mgFwDXL1JkLCtm6U/DQntMUqlv5SOhpgHhdIE+PmBcjrtAHIpXfbIup47kD5Sgja9JDsDF1NNOsBwQ==",
"dev": true,
"requires": {
- "@choojs/findup": "^0.2.1",
- "chalk": "^2.4.2",
- "mkdirp": "^0.5.1",
- "postcss": "^6.0.23",
- "strip-json-comments": "^2.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.6",
+ "strip-json-comments": "^3.1.1"
}
},
"run-async": {
@@ -55959,9 +56194,9 @@
}
},
"strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
},
"strip-outer": {
diff --git a/package.json b/package.json
old mode 100755
new mode 100644
index c7c955ffc570b..88cd1197fe65e
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gutenberg",
- "version": "14.4.0-rc.1",
+ "version": "14.5.0-rc.1",
"private": true,
"description": "A new WordPress editor experience.",
"author": "The WordPress Contributors",
@@ -88,7 +88,7 @@
"wicg-inert": "3.1.2"
},
"devDependencies": {
- "@actions/core": "1.8.0",
+ "@actions/core": "1.9.1",
"@actions/github": "5.0.0",
"@babel/core": "7.16.0",
"@babel/plugin-syntax-jsx": "7.16.0",
@@ -100,7 +100,7 @@
"@octokit/rest": "16.26.0",
"@octokit/types": "6.34.0",
"@octokit/webhooks-types": "5.6.0",
- "@playwright/test": "1.25.1",
+ "@playwright/test": "1.27.1",
"@pmmmwh/react-refresh-webpack-plugin": "0.5.2",
"@storybook/addon-a11y": "6.5.7",
"@storybook/addon-actions": "6.5.7",
@@ -182,12 +182,14 @@
"cssnano": "5.0.7",
"deep-freeze": "0.0.1",
"equivalent-key-map": "0.2.2",
+ "escape-html": "1.0.3",
"eslint-import-resolver-node": "0.3.4",
"eslint-plugin-eslint-comments": "3.1.2",
"eslint-plugin-import": "2.25.2",
"eslint-plugin-jest-dom": "4.0.2",
"eslint-plugin-playwright": "0.8.0",
"eslint-plugin-ssr-friendly": "1.0.6",
+ "eslint-plugin-testing-library": "5.7.2",
"execa": "4.0.2",
"fast-glob": "3.2.7",
"filenamify": "4.2.0",
@@ -211,7 +213,7 @@
"node-watch": "0.7.0",
"npm-run-all": "4.1.5",
"patch-package": "6.2.2",
- "postcss": "8.4.5",
+ "postcss": "8.4.16",
"postcss-loader": "6.2.1",
"prettier": "npm:wp-prettier@2.6.2",
"progress": "2.0.3",
@@ -224,7 +226,7 @@
"redux": "4.1.2",
"resize-observer-polyfill": "1.5.1",
"rimraf": "3.0.2",
- "rtlcss": "2.6.2",
+ "rtlcss": "4.0.0",
"sass": "1.35.2",
"sass-loader": "12.1.0",
"semver": "7.3.5",
diff --git a/packages/block-editor/CHANGELOG.md b/packages/block-editor/CHANGELOG.md
index 1874e6f7852bc..25ebaac9760a8 100644
--- a/packages/block-editor/CHANGELOG.md
+++ b/packages/block-editor/CHANGELOG.md
@@ -2,6 +2,10 @@
## Unreleased
+### Bug Fix
+
+- `InserterListItem`: Fix dragging and dropping in Firefox. ([#44631](https://github.com/WordPress/gutenberg/pull/44631))
+
## 10.3.0 (2022-10-19)
### Bug Fix
diff --git a/packages/block-editor/package.json b/packages/block-editor/package.json
index abe8775b3028d..b5d6212930a86 100644
--- a/packages/block-editor/package.json
+++ b/packages/block-editor/package.json
@@ -59,6 +59,7 @@
"@wordpress/url": "file:../url",
"@wordpress/warning": "file:../warning",
"@wordpress/wordcount": "file:../wordcount",
+ "change-case": "^4.1.2",
"classnames": "^2.3.1",
"colord": "^2.7.0",
"diff": "^4.0.2",
diff --git a/packages/block-editor/src/components/alignment-control/ui.js b/packages/block-editor/src/components/alignment-control/ui.js
index ed6c40f54b70b..f50e69044f9e5 100644
--- a/packages/block-editor/src/components/alignment-control/ui.js
+++ b/packages/block-editor/src/components/alignment-control/ui.js
@@ -30,7 +30,7 @@ const DEFAULT_ALIGNMENT_CONTROLS = [
const POPOVER_PROPS = {
position: 'bottom right',
- isAlternate: true,
+ variant: 'toolbar',
};
function AlignmentUI( {
diff --git a/packages/block-editor/src/components/block-alignment-control/constants.js b/packages/block-editor/src/components/block-alignment-control/constants.js
index f32a815b02f67..2fa133740a4cf 100644
--- a/packages/block-editor/src/components/block-alignment-control/constants.js
+++ b/packages/block-editor/src/components/block-alignment-control/constants.js
@@ -41,5 +41,5 @@ export const BLOCK_ALIGNMENTS_CONTROLS = {
export const DEFAULT_CONTROL = 'none';
export const POPOVER_PROPS = {
- isAlternate: true,
+ variant: 'toolbar',
};
diff --git a/packages/block-editor/src/components/block-alignment-matrix-control/index.js b/packages/block-editor/src/components/block-alignment-matrix-control/index.js
index 6e9ef0def5a5a..6ea7b2a49c8a9 100644
--- a/packages/block-editor/src/components/block-alignment-matrix-control/index.js
+++ b/packages/block-editor/src/components/block-alignment-matrix-control/index.js
@@ -24,7 +24,7 @@ function BlockAlignmentMatrixControl( props ) {
return (
{
const openOnArrowDown = ( event ) => {
if ( ! isOpen && event.keyCode === DOWN ) {
diff --git a/packages/block-editor/src/components/block-breadcrumb/test/__snapshots__/index.js.snap b/packages/block-editor/src/components/block-breadcrumb/test/__snapshots__/index.js.snap
index 85dd26bc0a7f3..01f2d73d3e5f9 100644
--- a/packages/block-editor/src/components/block-breadcrumb/test/__snapshots__/index.js.snap
+++ b/packages/block-editor/src/components/block-breadcrumb/test/__snapshots__/index.js.snap
@@ -1,16 +1,18 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`BlockBreadcrumb should render correctly 1`] = `
-
-
+
- Document
-
-
+
+ Document
+
+
+
`;
diff --git a/packages/block-editor/src/components/block-breadcrumb/test/index.js b/packages/block-editor/src/components/block-breadcrumb/test/index.js
index ee8d2bc57af03..dcdf242831c71 100644
--- a/packages/block-editor/src/components/block-breadcrumb/test/index.js
+++ b/packages/block-editor/src/components/block-breadcrumb/test/index.js
@@ -12,7 +12,7 @@ describe( 'BlockBreadcrumb', () => {
it( 'should render correctly', () => {
const { container } = render( );
- expect( container.firstChild ).toMatchSnapshot();
+ expect( container ).toMatchSnapshot();
} );
describe( 'Root label text', () => {
diff --git a/packages/block-editor/src/components/block-compare/index.js b/packages/block-editor/src/components/block-compare/index.js
index b04cd3238dc9b..46454f82a070d 100644
--- a/packages/block-editor/src/components/block-compare/index.js
+++ b/packages/block-editor/src/components/block-compare/index.js
@@ -2,7 +2,6 @@
* External dependencies
*/
import classnames from 'classnames';
-import { castArray } from 'lodash';
// diff doesn't tree-shake correctly, so we import from the individual
// module here, to avoid including too much of the library
import { diffChars } from 'diff/lib/diff/character';
@@ -44,7 +43,9 @@ function BlockCompare( {
function getConvertedContent( convertedBlock ) {
// The convertor may return an array of items or a single item.
- const newBlocks = castArray( convertedBlock );
+ const newBlocks = Array.isArray( convertedBlock )
+ ? convertedBlock
+ : [ convertedBlock ];
// Get converted block details.
const newContent = newBlocks.map( ( item ) =>
diff --git a/packages/block-editor/src/components/block-edit/index.js b/packages/block-editor/src/components/block-edit/index.js
index 9b2875b3018a3..747e25b820847 100644
--- a/packages/block-editor/src/components/block-edit/index.js
+++ b/packages/block-editor/src/components/block-edit/index.js
@@ -20,11 +20,12 @@ import { BlockEditContextProvider, useBlockEditContext } from './context';
export { useBlockEditContext };
export default function BlockEdit( props ) {
- const { name, isSelected, clientId } = props;
+ const { name, isSelected, clientId, __unstableLayoutClassNames } = props;
const context = {
name,
isSelected,
clientId,
+ __unstableLayoutClassNames,
};
return (
);
diff --git a/packages/block-editor/src/components/block-list/style.scss b/packages/block-editor/src/components/block-list/style.scss
index 918906e62f8cc..66569fc6847a2 100644
--- a/packages/block-editor/src/components/block-list/style.scss
+++ b/packages/block-editor/src/components/block-list/style.scss
@@ -174,7 +174,7 @@
// With `position: static`, Safari marks a full-width selection rectangle, including margins.
// With `position: relative`, Safari marks an inline selection rectangle, similar to that of
// Blink based browsers, but it also does "crop" the marker, which can result in a small line
- // from the preceeding paragraph showing, which is effectively the above selection bleeding in.
+ // from the preceding paragraph showing, which is effectively the above selection bleeding in.
// We choose relative, as that matches the multi-selection, which is limited to the block footprint.
position: relative;
diff --git a/packages/block-editor/src/components/block-mover/stories/index.js b/packages/block-editor/src/components/block-mover/stories/index.js
index a6b5fad872f0b..aac98ecc84d6e 100644
--- a/packages/block-editor/src/components/block-mover/stories/index.js
+++ b/packages/block-editor/src/components/block-mover/stories/index.js
@@ -70,7 +70,7 @@ function BlockMoverStory() {
- But it can also accomodate horizontal blocks.
+ But it can also accommodate horizontal blocks.
`;
diff --git a/packages/components/src/tree-grid/test/__snapshots__/roving-tab-index.js.snap b/packages/components/src/tree-grid/test/__snapshots__/roving-tab-index.js.snap
index aa77ed429bd2e..83de76cbb88a1 100644
--- a/packages/components/src/tree-grid/test/__snapshots__/roving-tab-index.js.snap
+++ b/packages/components/src/tree-grid/test/__snapshots__/roving-tab-index.js.snap
@@ -2,6 +2,8 @@
exports[`RovingTabIndex does not render any elements other than its children 1`] = `
- child element
+
+ child element
+
`;
diff --git a/packages/components/src/tree-grid/test/__snapshots__/row.js.snap b/packages/components/src/tree-grid/test/__snapshots__/row.js.snap
index a5cbe7d37aa30..33d2a05bf2793 100644
--- a/packages/components/src/tree-grid/test/__snapshots__/row.js.snap
+++ b/packages/components/src/tree-grid/test/__snapshots__/row.js.snap
@@ -1,36 +1,40 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`TreeGridRow forwards other props to the rendered tr element 1`] = `
-
-
-
-
- Test
-
-
-
-
+
+
+
+
+
+ Test
+
+
+
+
+
`;
exports[`TreeGridRow renders a tr with support for level, positionInSet and setSize props 1`] = `
-