diff --git a/.eslintrc.js b/.eslintrc.js
index 484387a285e78b..caf01b7cbd71d4 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -330,6 +330,7 @@ module.exports = {
'SelectControl',
'TextControl',
'ToggleGroupControl',
+ 'UnitControl',
].map( ( componentName ) => ( {
// Falsy `__next40pxDefaultSize` without a non-default `size` prop.
selector: `JSXOpeningElement[name.name="${ componentName }"]:not(:has(JSXAttribute[name.name="__next40pxDefaultSize"][value.expression.value!=false])):not(:has(JSXAttribute[name.name="size"][value.value!="default"]))`,
@@ -345,7 +346,7 @@ module.exports = {
'FormFileUpload should have the `__next40pxDefaultSize` prop to opt-in to the new default size.',
},
// Temporary rules until all existing components have the `__next40pxDefaultSize` prop.
- ...[ 'Button', 'UnitControl' ].map( ( componentName ) => ( {
+ ...[ 'Button' ].map( ( componentName ) => ( {
// Not strict. Allows pre-existing __next40pxDefaultSize={ false } usage until they are all manually updated.
selector: `JSXOpeningElement[name.name="${ componentName }"]:not(:has(JSXAttribute[name.name="__next40pxDefaultSize"])):not(:has(JSXAttribute[name.name="size"]))`,
message:
diff --git a/backport-changelog/6.7/7258.md b/backport-changelog/6.7/7258.md
new file mode 100644
index 00000000000000..6714b13b70b8d2
--- /dev/null
+++ b/backport-changelog/6.7/7258.md
@@ -0,0 +1,3 @@
+https://github.com/WordPress/wordpress-develop/pull/7258
+
+* https://github.com/WordPress/gutenberg/pull/64570
\ No newline at end of file
diff --git a/gutenberg.php b/gutenberg.php
index f0e2f94ef57fd6..117f4168524d8a 100644
--- a/gutenberg.php
+++ b/gutenberg.php
@@ -5,7 +5,7 @@
* Description: Printing since 1440. This is the development plugin for the block editor, site editor, and other future WordPress core functionality.
* Requires at least: 6.5
* Requires PHP: 7.2
- * Version: 19.1.0
+ * Version: 19.2.0-rc.1
* Author: Gutenberg Team
* Text Domain: gutenberg
*
diff --git a/lib/compat/wordpress-6.7/block-bindings.php b/lib/compat/wordpress-6.7/block-bindings.php
index 398b53b340673b..9e82c1843f35a0 100644
--- a/lib/compat/wordpress-6.7/block-bindings.php
+++ b/lib/compat/wordpress-6.7/block-bindings.php
@@ -38,3 +38,18 @@ function gutenberg_add_server_block_bindings_sources_to_editor_settings( $editor
}
add_filter( 'block_editor_settings_all', 'gutenberg_add_server_block_bindings_sources_to_editor_settings', 10 );
+
+/**
+ * Initialize `canUpdateBlockBindings` editor setting if it doesn't exist. By default, it is `true` only for admin users.
+ *
+ * @param array $settings The block editor settings from the `block_editor_settings_all` filter.
+ * @return array The editor settings including `canUpdateBlockBindings`.
+ */
+function gutenberg_add_can_update_block_bindings_editor_setting( $editor_settings ) {
+ if ( empty( $editor_settings['canUpdateBlockBindings'] ) ) {
+ $editor_settings['canUpdateBlockBindings'] = current_user_can( 'manage_options' );
+ }
+ return $editor_settings;
+}
+
+add_filter( 'block_editor_settings_all', 'gutenberg_add_can_update_block_bindings_editor_setting', 10 );
diff --git a/lib/experimental/editor-settings.php b/lib/experimental/editor-settings.php
index c9878c12d8ffae..9e9f145c678400 100644
--- a/lib/experimental/editor-settings.php
+++ b/lib/experimental/editor-settings.php
@@ -28,21 +28,18 @@ function gutenberg_enable_experiments() {
if ( gutenberg_is_experiment_enabled( 'gutenberg-full-page-client-side-navigation' ) ) {
wp_add_inline_script( 'wp-block-library', 'window.__experimentalFullPageClientSideNavigation = true', 'before' );
}
- if ( $gutenberg_experiments && array_key_exists( 'gutenberg-zoomed-out-patterns-tab', $gutenberg_experiments ) ) {
- wp_add_inline_script( 'wp-block-editor', 'window.__experimentalEnableZoomedOutPatternsTab = true', 'before' );
- }
if ( $gutenberg_experiments && array_key_exists( 'gutenberg-block-comment', $gutenberg_experiments ) ) {
wp_add_inline_script( 'wp-block-editor', 'window.__experimentalEnableBlockComment = true', 'before' );
}
if ( $gutenberg_experiments && array_key_exists( 'gutenberg-quick-edit-dataviews', $gutenberg_experiments ) ) {
wp_add_inline_script( 'wp-block-editor', 'window.__experimentalQuickEditDataViews = true', 'before' );
}
- if ( $gutenberg_experiments && array_key_exists( 'gutenberg-block-bindings-ui', $gutenberg_experiments ) ) {
- wp_add_inline_script( 'wp-block-editor', 'window.__experimentalBlockBindingsUI = true', 'before' );
- }
if ( $gutenberg_experiments && array_key_exists( 'gutenberg-media-processing', $gutenberg_experiments ) ) {
wp_add_inline_script( 'wp-block-editor', 'window.__experimentalMediaProcessing = true', 'before' );
}
+ if ( $gutenberg_experiments && array_key_exists( 'gutenberg-zoom-out-experiment', $gutenberg_experiments ) ) {
+ wp_add_inline_script( 'wp-block-editor', 'window.__experimentalEnableZoomOutExperiment = true', 'before' );
+ }
}
add_action( 'admin_init', 'gutenberg_enable_experiments' );
diff --git a/lib/experiments-page.php b/lib/experiments-page.php
index fe3d75e61d8d7f..747221eb99e611 100644
--- a/lib/experiments-page.php
+++ b/lib/experiments-page.php
@@ -139,18 +139,6 @@ function gutenberg_initialize_experiments_settings() {
)
);
- add_settings_field(
- 'gutenberg-zoomed-out-patterns-tab',
- __( 'Enable zoomed out view when patterns are browsed in the inserter', 'gutenberg' ),
- 'gutenberg_display_experiment_field',
- 'gutenberg-experiments',
- 'gutenberg_experiments_section',
- array(
- 'label' => __( 'Enable zoomed out view when selecting a pattern category in the main inserter.', 'gutenberg' ),
- 'id' => 'gutenberg-zoomed-out-patterns-tab',
- )
- );
-
add_settings_field(
'gutenberg-new-posts-dashboard',
__( 'Redesigned posts dashboard', 'gutenberg' ),
@@ -188,29 +176,28 @@ function gutenberg_initialize_experiments_settings() {
);
add_settings_field(
- 'gutenberg-block-bindings-ui',
- __( 'UI to create block bindings', 'gutenberg' ),
+ 'gutenberg-media-processing',
+ __( 'Client-side media processing', 'gutenberg' ),
'gutenberg_display_experiment_field',
'gutenberg-experiments',
'gutenberg_experiments_section',
array(
- 'label' => __( 'Add UI to create and update block bindings in block inspector controls.', 'gutenberg' ),
- 'id' => 'gutenberg-block-bindings-ui',
+ 'label' => __( 'Enable client-side media processing.', 'gutenberg' ),
+ 'id' => 'gutenberg-media-processing',
)
);
add_settings_field(
- 'gutenberg-media-processing',
- __( 'Client-side media processing', 'gutenberg' ),
+ 'gutenberg-zoom-out-experiment',
+ __( 'Zoom out experiments', 'gutenberg' ),
'gutenberg_display_experiment_field',
'gutenberg-experiments',
'gutenberg_experiments_section',
array(
- 'label' => __( 'Enable client-side media processing.', 'gutenberg' ),
- 'id' => 'gutenberg-media-processing',
+ 'label' => __( 'Enable zoom out experiments; shows zoom out in the device preview and other zoom out experiments.', 'gutenberg' ),
+ 'id' => 'gutenberg-zoom-out-experiment',
)
);
-
register_setting(
'gutenberg-experiments',
'gutenberg-experiments'
diff --git a/package-lock.json b/package-lock.json
index a5841a06e163ed..0b5b92da05fa1d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "gutenberg",
- "version": "19.1.0",
+ "version": "19.2.0-rc.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "gutenberg",
- "version": "19.1.0",
+ "version": "19.2.0-rc.1",
"hasInstallScript": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -221,6 +221,7 @@
"postcss-local-keyframes": "^0.0.2",
"prettier": "npm:wp-prettier@3.0.3",
"progress": "2.0.3",
+ "puppeteer-core": "23.1.0",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-native": "0.73.3",
@@ -22569,15 +22570,6 @@
"node": ">=4.0"
}
},
- "node_modules/cross-fetch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
- "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
- "dev": true,
- "dependencies": {
- "node-fetch": "2.6.7"
- }
- },
"node_modules/cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
@@ -24111,10 +24103,11 @@
}
},
"node_modules/devtools-protocol": {
- "version": "0.0.981744",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz",
- "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==",
- "dev": true
+ "version": "0.0.1312386",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz",
+ "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==",
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/diff": {
"version": "4.0.2",
@@ -42325,33 +42318,120 @@
}
},
"node_modules/puppeteer-core": {
- "version": "13.7.0",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz",
- "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==",
+ "version": "23.1.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.1.0.tgz",
+ "integrity": "sha512-SvAsu+xnLN2FMXE/59bp3s3WXp8ewqUGzVV4AQtml/2xmsciZnU/bXcCW+eETHPWQ6Agg2vTI7QzWXPpEARK2g==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "cross-fetch": "3.1.5",
- "debug": "4.3.4",
- "devtools-protocol": "0.0.981744",
- "extract-zip": "2.0.1",
- "https-proxy-agent": "5.0.1",
- "pkg-dir": "4.2.0",
- "progress": "2.0.3",
- "proxy-from-env": "1.1.0",
- "rimraf": "3.0.2",
- "tar-fs": "2.1.1",
- "unbzip2-stream": "1.4.3",
- "ws": "8.5.0"
+ "@puppeteer/browsers": "2.3.1",
+ "chromium-bidi": "0.6.4",
+ "debug": "^4.3.6",
+ "devtools-protocol": "0.0.1312386",
+ "typed-query-selector": "^2.12.0",
+ "ws": "^8.18.0"
},
"engines": {
- "node": ">=10.18.1"
+ "node": ">=18"
}
},
+ "node_modules/puppeteer-core/node_modules/@puppeteer/browsers": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.1.tgz",
+ "integrity": "sha512-uK7o3hHkK+naEobMSJ+2ySYyXtQkBxIH8Gn4MK9ciePjNV+Pf+PgY/W7iPzn2MTjl3stcYB5AlcTmPYw7AXDwA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "debug": "^4.3.6",
+ "extract-zip": "^2.0.1",
+ "progress": "^2.0.3",
+ "proxy-agent": "^6.4.0",
+ "semver": "^7.6.3",
+ "tar-fs": "^3.0.6",
+ "unbzip2-stream": "^1.4.3",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/chromium-bidi": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.4.tgz",
+ "integrity": "sha512-8zoq6ogmhQQkAKZVKO2ObFTl4uOkqoX1PlKQX3hZQ5E9cbUotcAb7h4pTNVAGGv8Z36PF3CtdOriEp/Rz82JqQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mitt": "3.0.1",
+ "urlpattern-polyfill": "10.0.0",
+ "zod": "3.23.8"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/debug": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+ "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/puppeteer-core/node_modules/extract-zip": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
"integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"debug": "^4.1.1",
"get-stream": "^5.1.0",
@@ -42367,99 +42447,199 @@
"@types/yauzl": "^2.9.1"
}
},
- "node_modules/puppeteer-core/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "node_modules/puppeteer-core/node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">=8"
+ "node": ">= 14"
}
},
- "node_modules/puppeteer-core/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "node_modules/puppeteer-core/node_modules/https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "p-locate": "^4.1.0"
+ "agent-base": "^7.0.2",
+ "debug": "4"
},
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/puppeteer-core/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/puppeteer-core/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
"dev": true,
+ "license": "MIT"
+ },
+ "node_modules/puppeteer-core/node_modules/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,
+ "license": "MIT"
+ },
+ "node_modules/puppeteer-core/node_modules/proxy-agent": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz",
+ "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "p-try": "^2.0.0"
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.3",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.0.1",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.2"
},
"engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 14"
}
},
- "node_modules/puppeteer-core/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "node_modules/puppeteer-core/node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "p-limit": "^2.2.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
- "node_modules/puppeteer-core/node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "node_modules/puppeteer-core/node_modules/socks-proxy-agent": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz",
+ "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.1",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
"engines": {
- "node": ">=6"
+ "node": ">= 14"
}
},
- "node_modules/puppeteer-core/node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "node_modules/puppeteer-core/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
"engines": {
"node": ">=8"
}
},
- "node_modules/puppeteer-core/node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "node_modules/puppeteer-core/node_modules/tar-fs": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz",
+ "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "find-up": "^4.0.0"
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ },
+ "optionalDependencies": {
+ "bare-fs": "^2.1.1",
+ "bare-path": "^2.1.0"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/puppeteer-core/node_modules/ws": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
- "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
@@ -42470,6 +42650,45 @@
}
}
},
+ "node_modules/puppeteer-core/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/pure-rand": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
@@ -48633,6 +48852,12 @@
"node": ">= 10"
}
},
+ "node_modules/typed-query-selector": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz",
+ "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==",
+ "dev": true
+ },
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -49318,6 +49543,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/urlpattern-polyfill": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
+ "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
+ "dev": true
+ },
"node_modules/use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
@@ -52052,7 +52283,7 @@
},
"packages/a11y": {
"name": "@wordpress/a11y",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52066,7 +52297,7 @@
},
"packages/annotations": {
"name": "@wordpress/annotations",
- "version": "3.6.0",
+ "version": "3.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52094,7 +52325,7 @@
},
"packages/api-fetch": {
"name": "@wordpress/api-fetch",
- "version": "7.6.0",
+ "version": "7.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52108,7 +52339,7 @@
},
"packages/autop": {
"name": "@wordpress/autop",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -52120,7 +52351,7 @@
},
"packages/babel-plugin-import-jsx-pragma": {
"name": "@wordpress/babel-plugin-import-jsx-pragma",
- "version": "5.6.0",
+ "version": "5.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -52133,7 +52364,7 @@
},
"packages/babel-plugin-makepot": {
"name": "@wordpress/babel-plugin-makepot",
- "version": "6.6.0",
+ "version": "6.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -52151,7 +52382,7 @@
},
"packages/babel-preset-default": {
"name": "@wordpress/babel-preset-default",
- "version": "8.6.0",
+ "version": "8.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -52174,7 +52405,7 @@
},
"packages/base-styles": {
"name": "@wordpress/base-styles",
- "version": "5.6.0",
+ "version": "5.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -52184,7 +52415,7 @@
},
"packages/blob": {
"name": "@wordpress/blob",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -52196,7 +52427,7 @@
},
"packages/block-directory": {
"name": "@wordpress/block-directory",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52231,7 +52462,7 @@
},
"packages/block-editor": {
"name": "@wordpress/block-editor",
- "version": "14.1.0",
+ "version": "14.2.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52330,7 +52561,7 @@
},
"packages/block-library": {
"name": "@wordpress/block-library",
- "version": "9.6.1",
+ "version": "9.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52396,7 +52627,7 @@
},
"packages/block-serialization-default-parser": {
"name": "@wordpress/block-serialization-default-parser",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -52408,7 +52639,7 @@
},
"packages/block-serialization-spec-parser": {
"name": "@wordpress/block-serialization-spec-parser",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"pegjs": "^0.10.0",
@@ -52421,7 +52652,7 @@
},
"packages/blocks": {
"name": "@wordpress/blocks",
- "version": "13.6.0",
+ "version": "13.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52475,7 +52706,7 @@
},
"packages/browserslist-config": {
"name": "@wordpress/browserslist-config",
- "version": "6.6.0",
+ "version": "6.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -52485,7 +52716,7 @@
},
"packages/commands": {
"name": "@wordpress/commands",
- "version": "1.6.0",
+ "version": "1.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52658,7 +52889,7 @@
},
"packages/components": {
"name": "@wordpress/components",
- "version": "28.6.0",
+ "version": "28.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@ariakit/react": "^0.4.10",
@@ -52779,7 +53010,7 @@
},
"packages/compose": {
"name": "@wordpress/compose",
- "version": "7.6.0",
+ "version": "7.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52816,7 +53047,7 @@
},
"packages/core-commands": {
"name": "@wordpress/core-commands",
- "version": "1.6.0",
+ "version": "1.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52844,7 +53075,7 @@
},
"packages/core-data": {
"name": "@wordpress/core-data",
- "version": "7.6.0",
+ "version": "7.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52889,7 +53120,7 @@
},
"packages/create-block": {
"name": "@wordpress/create-block",
- "version": "4.49.0",
+ "version": "4.50.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -52917,7 +53148,7 @@
},
"packages/create-block-tutorial-template": {
"name": "@wordpress/create-block-tutorial-template",
- "version": "4.6.0",
+ "version": "4.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -52927,7 +53158,7 @@
},
"packages/customize-widgets": {
"name": "@wordpress/customize-widgets",
- "version": "5.6.1",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52965,7 +53196,7 @@
},
"packages/data": {
"name": "@wordpress/data",
- "version": "10.6.0",
+ "version": "10.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -52994,7 +53225,7 @@
},
"packages/data-controls": {
"name": "@wordpress/data-controls",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53012,7 +53243,7 @@
},
"packages/dataviews": {
"name": "@wordpress/dataviews",
- "version": "4.2.0",
+ "version": "4.3.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@ariakit/react": "^0.4.10",
@@ -53069,7 +53300,7 @@
},
"packages/date": {
"name": "@wordpress/date",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53084,7 +53315,7 @@
},
"packages/dependency-extraction-webpack-plugin": {
"name": "@wordpress/dependency-extraction-webpack-plugin",
- "version": "6.6.0",
+ "version": "6.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53100,7 +53331,7 @@
},
"packages/deprecated": {
"name": "@wordpress/deprecated",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53113,7 +53344,7 @@
},
"packages/docgen": {
"name": "@wordpress/docgen",
- "version": "2.6.0",
+ "version": "2.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53135,7 +53366,7 @@
},
"packages/dom": {
"name": "@wordpress/dom",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53148,7 +53379,7 @@
},
"packages/dom-ready": {
"name": "@wordpress/dom-ready",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -53160,7 +53391,7 @@
},
"packages/e2e-test-utils": {
"name": "@wordpress/e2e-test-utils",
- "version": "11.6.0",
+ "version": "11.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53183,7 +53414,7 @@
},
"packages/e2e-test-utils-playwright": {
"name": "@wordpress/e2e-test-utils-playwright",
- "version": "1.6.0",
+ "version": "1.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53211,7 +53442,7 @@
},
"packages/e2e-tests": {
"name": "@wordpress/e2e-tests",
- "version": "8.6.0",
+ "version": "8.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53251,7 +53482,7 @@
},
"packages/edit-post": {
"name": "@wordpress/edit-post",
- "version": "8.6.1",
+ "version": "8.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53298,7 +53529,7 @@
},
"packages/edit-site": {
"name": "@wordpress/edit-site",
- "version": "6.6.1",
+ "version": "6.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53360,7 +53591,7 @@
},
"packages/edit-widgets": {
"name": "@wordpress/edit-widgets",
- "version": "6.6.1",
+ "version": "6.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53403,7 +53634,7 @@
},
"packages/editor": {
"name": "@wordpress/editor",
- "version": "14.6.0",
+ "version": "14.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53464,7 +53695,7 @@
},
"packages/element": {
"name": "@wordpress/element",
- "version": "6.6.0",
+ "version": "6.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53483,7 +53714,7 @@
},
"packages/env": {
"name": "@wordpress/env",
- "version": "10.6.0",
+ "version": "10.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53625,7 +53856,7 @@
},
"packages/escape-html": {
"name": "@wordpress/escape-html",
- "version": "3.6.0",
+ "version": "3.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -53637,7 +53868,7 @@
},
"packages/eslint-plugin": {
"name": "@wordpress/eslint-plugin",
- "version": "20.3.0",
+ "version": "21.0.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53680,7 +53911,7 @@
},
"packages/format-library": {
"name": "@wordpress/format-library",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53708,7 +53939,7 @@
},
"packages/hooks": {
"name": "@wordpress/hooks",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -53720,7 +53951,7 @@
},
"packages/html-entities": {
"name": "@wordpress/html-entities",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -53732,7 +53963,7 @@
},
"packages/i18n": {
"name": "@wordpress/i18n",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53752,7 +53983,7 @@
},
"packages/icons": {
"name": "@wordpress/icons",
- "version": "10.6.0",
+ "version": "10.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53766,7 +53997,7 @@
},
"packages/interactivity": {
"name": "@wordpress/interactivity",
- "version": "6.6.0",
+ "version": "6.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@preact/signals": "^1.2.2",
@@ -53779,7 +54010,7 @@
},
"packages/interactivity-router": {
"name": "@wordpress/interactivity-router",
- "version": "2.6.0",
+ "version": "2.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/interactivity": "file:../interactivity"
@@ -53815,7 +54046,7 @@
},
"packages/interface": {
"name": "@wordpress/interface",
- "version": "6.6.0",
+ "version": "6.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53844,7 +54075,7 @@
},
"packages/is-shallow-equal": {
"name": "@wordpress/is-shallow-equal",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -53856,7 +54087,7 @@
},
"packages/jest-console": {
"name": "@wordpress/jest-console",
- "version": "8.6.0",
+ "version": "8.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53873,7 +54104,7 @@
},
"packages/jest-preset-default": {
"name": "@wordpress/jest-preset-default",
- "version": "12.6.0",
+ "version": "12.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53891,7 +54122,7 @@
},
"packages/jest-puppeteer-axe": {
"name": "@wordpress/jest-puppeteer-axe",
- "version": "7.6.0",
+ "version": "7.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53914,7 +54145,7 @@
},
"packages/keyboard-shortcuts": {
"name": "@wordpress/keyboard-shortcuts",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53932,7 +54163,7 @@
},
"packages/keycodes": {
"name": "@wordpress/keycodes",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53945,7 +54176,7 @@
},
"packages/lazy-import": {
"name": "@wordpress/lazy-import",
- "version": "2.6.0",
+ "version": "2.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -53960,7 +54191,7 @@
},
"packages/list-reusable-blocks": {
"name": "@wordpress/list-reusable-blocks",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53983,7 +54214,7 @@
},
"packages/media-utils": {
"name": "@wordpress/media-utils",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -53999,7 +54230,7 @@
},
"packages/notices": {
"name": "@wordpress/notices",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54016,7 +54247,7 @@
},
"packages/npm-package-json-lint-config": {
"name": "@wordpress/npm-package-json-lint-config",
- "version": "5.6.0",
+ "version": "5.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -54029,7 +54260,7 @@
},
"packages/nux": {
"name": "@wordpress/nux",
- "version": "9.6.0",
+ "version": "9.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54052,7 +54283,7 @@
},
"packages/patterns": {
"name": "@wordpress/patterns",
- "version": "2.6.0",
+ "version": "2.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54082,7 +54313,7 @@
},
"packages/plugins": {
"name": "@wordpress/plugins",
- "version": "7.6.0",
+ "version": "7.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54105,7 +54336,7 @@
},
"packages/postcss-plugins-preset": {
"name": "@wordpress/postcss-plugins-preset",
- "version": "5.6.0",
+ "version": "5.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -54122,7 +54353,7 @@
},
"packages/postcss-themes": {
"name": "@wordpress/postcss-themes",
- "version": "6.6.0",
+ "version": "6.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -54135,7 +54366,7 @@
},
"packages/preferences": {
"name": "@wordpress/preferences",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54161,7 +54392,7 @@
},
"packages/preferences-persistence": {
"name": "@wordpress/preferences-persistence",
- "version": "2.6.0",
+ "version": "2.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54174,7 +54405,7 @@
},
"packages/prettier-config": {
"name": "@wordpress/prettier-config",
- "version": "4.6.0",
+ "version": "4.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -54187,7 +54418,7 @@
},
"packages/primitives": {
"name": "@wordpress/primitives",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54204,7 +54435,7 @@
},
"packages/priority-queue": {
"name": "@wordpress/priority-queue",
- "version": "3.6.0",
+ "version": "3.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54217,7 +54448,7 @@
},
"packages/private-apis": {
"name": "@wordpress/private-apis",
- "version": "1.6.0",
+ "version": "1.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -54229,7 +54460,7 @@
},
"packages/project-management-automation": {
"name": "@wordpress/project-management-automation",
- "version": "2.6.0",
+ "version": "2.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -54259,7 +54490,7 @@
},
"packages/react-i18n": {
"name": "@wordpress/react-i18n",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54415,7 +54646,7 @@
},
"packages/readable-js-assets-webpack-plugin": {
"name": "@wordpress/readable-js-assets-webpack-plugin",
- "version": "3.6.0",
+ "version": "3.7.0",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -54428,7 +54659,7 @@
},
"packages/redux-routine": {
"name": "@wordpress/redux-routine",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54473,7 +54704,7 @@
},
"packages/reusable-blocks": {
"name": "@wordpress/reusable-blocks",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54500,7 +54731,7 @@
},
"packages/rich-text": {
"name": "@wordpress/rich-text",
- "version": "7.6.0",
+ "version": "7.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54524,7 +54755,7 @@
},
"packages/router": {
"name": "@wordpress/router",
- "version": "1.6.0",
+ "version": "1.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -54543,7 +54774,7 @@
},
"packages/scripts": {
"name": "@wordpress/scripts",
- "version": "28.6.0",
+ "version": "29.0.0",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -54591,7 +54822,7 @@
"postcss-import": "^16.1.0",
"postcss-loader": "^6.2.1",
"prettier": "npm:wp-prettier@3.0.3",
- "puppeteer-core": "^13.2.0",
+ "puppeteer-core": "^23.1.0",
"react-refresh": "^0.14.0",
"read-pkg-up": "^7.0.1",
"resolve-bin": "^0.4.0",
@@ -54998,7 +55229,7 @@
},
"packages/server-side-render": {
"name": "@wordpress/server-side-render",
- "version": "5.6.0",
+ "version": "5.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -55024,7 +55255,7 @@
},
"packages/shortcode": {
"name": "@wordpress/shortcode",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -55037,7 +55268,7 @@
},
"packages/style-engine": {
"name": "@wordpress/style-engine",
- "version": "2.6.0",
+ "version": "2.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -55050,7 +55281,7 @@
},
"packages/stylelint-config": {
"name": "@wordpress/stylelint-config",
- "version": "22.6.0",
+ "version": "22.7.0",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -55067,7 +55298,7 @@
},
"packages/sync": {
"name": "@wordpress/sync",
- "version": "1.6.0",
+ "version": "1.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -55088,7 +55319,7 @@
},
"packages/token-list": {
"name": "@wordpress/token-list",
- "version": "3.6.0",
+ "version": "3.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -55100,7 +55331,7 @@
},
"packages/undo-manager": {
"name": "@wordpress/undo-manager",
- "version": "1.6.0",
+ "version": "1.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -55113,7 +55344,7 @@
},
"packages/url": {
"name": "@wordpress/url",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -55126,7 +55357,7 @@
},
"packages/viewport": {
"name": "@wordpress/viewport",
- "version": "6.6.0",
+ "version": "6.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -55144,7 +55375,7 @@
},
"packages/warning": {
"name": "@wordpress/warning",
- "version": "3.6.0",
+ "version": "3.7.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -55153,7 +55384,7 @@
},
"packages/widgets": {
"name": "@wordpress/widgets",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0",
@@ -55181,7 +55412,7 @@
},
"packages/wordcount": {
"name": "@wordpress/wordcount",
- "version": "4.6.0",
+ "version": "4.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "^7.16.0"
@@ -68770,7 +69001,7 @@
"postcss-import": "^16.1.0",
"postcss-loader": "^6.2.1",
"prettier": "npm:wp-prettier@3.0.3",
- "puppeteer-core": "^13.2.0",
+ "puppeteer-core": "^23.1.0",
"react-refresh": "^0.14.0",
"read-pkg-up": "^7.0.1",
"resolve-bin": "^0.4.0",
@@ -73319,15 +73550,6 @@
"is-windows": "^1.0.0"
}
},
- "cross-fetch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
- "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
- "dev": true,
- "requires": {
- "node-fetch": "2.6.7"
- }
- },
"cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
@@ -74451,9 +74673,9 @@
}
},
"devtools-protocol": {
- "version": "0.0.981744",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz",
- "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==",
+ "version": "0.0.1312386",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz",
+ "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==",
"dev": true
},
"diff": {
@@ -88284,25 +88506,81 @@
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="
},
"puppeteer-core": {
- "version": "13.7.0",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz",
- "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==",
+ "version": "23.1.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.1.0.tgz",
+ "integrity": "sha512-SvAsu+xnLN2FMXE/59bp3s3WXp8ewqUGzVV4AQtml/2xmsciZnU/bXcCW+eETHPWQ6Agg2vTI7QzWXPpEARK2g==",
"dev": true,
"requires": {
- "cross-fetch": "3.1.5",
- "debug": "4.3.4",
- "devtools-protocol": "0.0.981744",
- "extract-zip": "2.0.1",
- "https-proxy-agent": "5.0.1",
- "pkg-dir": "4.2.0",
- "progress": "2.0.3",
- "proxy-from-env": "1.1.0",
- "rimraf": "3.0.2",
- "tar-fs": "2.1.1",
- "unbzip2-stream": "1.4.3",
- "ws": "8.5.0"
+ "@puppeteer/browsers": "2.3.1",
+ "chromium-bidi": "0.6.4",
+ "debug": "^4.3.6",
+ "devtools-protocol": "0.0.1312386",
+ "typed-query-selector": "^2.12.0",
+ "ws": "^8.18.0"
},
"dependencies": {
+ "@puppeteer/browsers": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.1.tgz",
+ "integrity": "sha512-uK7o3hHkK+naEobMSJ+2ySYyXtQkBxIH8Gn4MK9ciePjNV+Pf+PgY/W7iPzn2MTjl3stcYB5AlcTmPYw7AXDwA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.3.6",
+ "extract-zip": "^2.0.1",
+ "progress": "^2.0.3",
+ "proxy-agent": "^6.4.0",
+ "semver": "^7.6.3",
+ "tar-fs": "^3.0.6",
+ "unbzip2-stream": "^1.4.3",
+ "yargs": "^17.7.2"
+ }
+ },
+ "agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.3.4"
+ }
+ },
+ "chromium-bidi": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.4.tgz",
+ "integrity": "sha512-8zoq6ogmhQQkAKZVKO2ObFTl4uOkqoX1PlKQX3hZQ5E9cbUotcAb7h4pTNVAGGv8Z36PF3CtdOriEp/Rz82JqQ==",
+ "dev": true,
+ "requires": {
+ "mitt": "3.0.1",
+ "urlpattern-polyfill": "10.0.0",
+ "zod": "3.23.8"
+ }
+ },
+ "cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "debug": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+ "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
"extract-zip": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
@@ -88315,68 +88593,169 @@
"yauzl": "^2.10.0"
}
},
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
"requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
}
},
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
"dev": true,
"requires": {
- "p-locate": "^4.1.0"
+ "agent-base": "^7.0.2",
+ "debug": "4"
}
},
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true
+ },
+ "mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true
+ },
+ "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
+ },
+ "proxy-agent": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz",
+ "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.3",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.0.1",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.2"
}
},
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"requires": {
- "p-limit": "^2.2.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true
},
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
+ "socks-proxy-agent": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz",
+ "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==",
+ "dev": true,
+ "requires": {
+ "agent-base": "^7.1.1",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ }
},
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
- "find-up": "^4.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "tar-fs": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz",
+ "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==",
+ "dev": true,
+ "requires": {
+ "bare-fs": "^2.1.1",
+ "bare-path": "^2.1.0",
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ }
+ },
+ "tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "dev": true,
+ "requires": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
}
},
"ws": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
- "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "dev": true
+ },
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "requires": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true
}
}
@@ -93104,6 +93483,12 @@
"integrity": "sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==",
"dev": true
},
+ "typed-query-selector": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz",
+ "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==",
+ "dev": true
+ },
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -93631,6 +94016,12 @@
"integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==",
"dev": true
},
+ "urlpattern-polyfill": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
+ "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
+ "dev": true
+ },
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
diff --git a/package.json b/package.json
index c0a7853a418178..a67b376f3dbdc1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gutenberg",
- "version": "19.1.0",
+ "version": "19.2.0-rc.1",
"private": true,
"description": "A new WordPress editor experience.",
"author": "The WordPress Contributors",
@@ -233,6 +233,7 @@
"postcss-local-keyframes": "^0.0.2",
"prettier": "npm:wp-prettier@3.0.3",
"progress": "2.0.3",
+ "puppeteer-core": "23.1.0",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-native": "0.73.3",
diff --git a/packages/a11y/CHANGELOG.md b/packages/a11y/CHANGELOG.md
index 5a90a6cc98f0de..36973cce020f33 100644
--- a/packages/a11y/CHANGELOG.md
+++ b/packages/a11y/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.7.0 (2024-09-05)
+
## 4.6.0 (2024-08-21)
## 4.5.0 (2024-08-07)
diff --git a/packages/a11y/package.json b/packages/a11y/package.json
index 0e307e813c56ad..88123b3c6c7126 100644
--- a/packages/a11y/package.json
+++ b/packages/a11y/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/a11y",
- "version": "4.6.0",
+ "version": "4.7.0",
"description": "Accessibility (a11y) utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/annotations/CHANGELOG.md b/packages/annotations/CHANGELOG.md
index b3e0dbab635b8b..6211cf30688e5c 100644
--- a/packages/annotations/CHANGELOG.md
+++ b/packages/annotations/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.7.0 (2024-09-05)
+
## 3.6.0 (2024-08-21)
## 3.5.0 (2024-08-07)
diff --git a/packages/annotations/package.json b/packages/annotations/package.json
index 95ceadb1d990ed..c189dcc11fd09f 100644
--- a/packages/annotations/package.json
+++ b/packages/annotations/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/annotations",
- "version": "3.6.0",
+ "version": "3.7.0",
"description": "Annotate content in the Gutenberg editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/api-fetch/CHANGELOG.md b/packages/api-fetch/CHANGELOG.md
index 49319c18ab7543..01b37d4e14a7d1 100644
--- a/packages/api-fetch/CHANGELOG.md
+++ b/packages/api-fetch/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.7.0 (2024-09-05)
+
## 7.6.0 (2024-08-21)
## 7.5.0 (2024-08-07)
diff --git a/packages/api-fetch/package.json b/packages/api-fetch/package.json
index abbe8cce374c31..76d797f4ddfa57 100644
--- a/packages/api-fetch/package.json
+++ b/packages/api-fetch/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/api-fetch",
- "version": "7.6.0",
+ "version": "7.7.0",
"description": "Utility to make WordPress REST API requests.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/autop/CHANGELOG.md b/packages/autop/CHANGELOG.md
index 353495eae8983d..ed19f1ceafbc58 100644
--- a/packages/autop/CHANGELOG.md
+++ b/packages/autop/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.7.0 (2024-09-05)
+
## 4.6.0 (2024-08-21)
## 4.5.0 (2024-08-07)
diff --git a/packages/autop/package.json b/packages/autop/package.json
index 03bb56412195ec..4e1cf577ebd09c 100644
--- a/packages/autop/package.json
+++ b/packages/autop/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/autop",
- "version": "4.6.0",
+ "version": "4.7.0",
"description": "WordPress's automatic paragraph functions `autop` and `removep`.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md b/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md
index d96d2315e2a51e..c916b788243a06 100644
--- a/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md
+++ b/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.7.0 (2024-09-05)
+
## 5.6.0 (2024-08-21)
## 5.5.0 (2024-08-07)
diff --git a/packages/babel-plugin-import-jsx-pragma/package.json b/packages/babel-plugin-import-jsx-pragma/package.json
index be1dbc4235f289..1af6bdf93cb044 100644
--- a/packages/babel-plugin-import-jsx-pragma/package.json
+++ b/packages/babel-plugin-import-jsx-pragma/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-plugin-import-jsx-pragma",
- "version": "5.6.0",
+ "version": "5.7.0",
"description": "Babel transform plugin for automatically injecting an import to be used as the pragma for the React JSX Transform plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-plugin-makepot/CHANGELOG.md b/packages/babel-plugin-makepot/CHANGELOG.md
index 98da250e2ba6b6..e7345f314d5788 100644
--- a/packages/babel-plugin-makepot/CHANGELOG.md
+++ b/packages/babel-plugin-makepot/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.7.0 (2024-09-05)
+
## 6.6.0 (2024-08-21)
## 6.5.0 (2024-08-07)
diff --git a/packages/babel-plugin-makepot/package.json b/packages/babel-plugin-makepot/package.json
index 4d439baf28163d..a7c18d891538d1 100644
--- a/packages/babel-plugin-makepot/package.json
+++ b/packages/babel-plugin-makepot/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-plugin-makepot",
- "version": "6.6.0",
+ "version": "6.7.0",
"description": "WordPress Babel internationalization (i18n) plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-preset-default/CHANGELOG.md b/packages/babel-preset-default/CHANGELOG.md
index 43c9675fcb885b..70a740f60cad38 100644
--- a/packages/babel-preset-default/CHANGELOG.md
+++ b/packages/babel-preset-default/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 8.7.0 (2024-09-05)
+
## 8.6.0 (2024-08-21)
## 8.5.0 (2024-08-07)
diff --git a/packages/babel-preset-default/package.json b/packages/babel-preset-default/package.json
index 2559b60401790e..be5b3786346eb2 100644
--- a/packages/babel-preset-default/package.json
+++ b/packages/babel-preset-default/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-preset-default",
- "version": "8.6.0",
+ "version": "8.7.0",
"description": "Default Babel preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/base-styles/CHANGELOG.md b/packages/base-styles/CHANGELOG.md
index ce98cebeae1c2a..cad2f94c98da7b 100644
--- a/packages/base-styles/CHANGELOG.md
+++ b/packages/base-styles/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.7.0 (2024-09-05)
+
## 5.6.0 (2024-08-21)
## 5.5.0 (2024-08-07)
diff --git a/packages/base-styles/_mixins.scss b/packages/base-styles/_mixins.scss
index 69735d75aac71a..ebccbe0e5e8aee 100644
--- a/packages/base-styles/_mixins.scss
+++ b/packages/base-styles/_mixins.scss
@@ -74,7 +74,7 @@
@mixin input-style__neutral() {
box-shadow: 0 0 0 transparent;
transition: box-shadow 0.1s linear;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
border: $border-width solid $gray-600;
@include reduce-motion("transition");
}
@@ -227,7 +227,7 @@
border: $border-width solid $gray-900;
margin-right: $grid-unit-15;
transition: none;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
&:focus {
box-shadow: 0 0 0 ($border-width * 2) $white, 0 0 0 ($border-width * 2 + $border-width-focus-fallback) var(--wp-admin-theme-color);
@@ -363,7 +363,7 @@
&:focus {
color: var(--wp-admin-theme-color--rgb);
box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color, #007cba);
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
}
}
@@ -375,7 +375,7 @@
padding: $grid-unit-15 !important;
border: $border-width solid $gray-900 !important;
box-shadow: none !important;
- border-radius: $radius-block-ui !important;
+ border-radius: $radius-small !important;
// Fonts smaller than 16px causes mobile safari to zoom.
font-size: $mobile-text-min-font-size !important;
diff --git a/packages/base-styles/package.json b/packages/base-styles/package.json
index fbe3bf149b1cdf..6839a8081e04a8 100644
--- a/packages/base-styles/package.json
+++ b/packages/base-styles/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/base-styles",
- "version": "5.6.0",
+ "version": "5.7.0",
"description": "Base SCSS utilities and variables for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/blob/CHANGELOG.md b/packages/blob/CHANGELOG.md
index 5c21e96d7269cd..f95598025a8b68 100644
--- a/packages/blob/CHANGELOG.md
+++ b/packages/blob/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.7.0 (2024-09-05)
+
## 4.6.0 (2024-08-21)
## 4.5.0 (2024-08-07)
diff --git a/packages/blob/package.json b/packages/blob/package.json
index 58feea189bed0e..3dea70c9771976 100644
--- a/packages/blob/package.json
+++ b/packages/blob/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/blob",
- "version": "4.6.0",
+ "version": "4.7.0",
"description": "Blob utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-directory/CHANGELOG.md b/packages/block-directory/CHANGELOG.md
index 4d15343f0c0926..70914f293ca998 100644
--- a/packages/block-directory/CHANGELOG.md
+++ b/packages/block-directory/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.7.0 (2024-09-05)
+
## 5.6.0 (2024-08-21)
## 5.5.0 (2024-08-07)
diff --git a/packages/block-directory/package.json b/packages/block-directory/package.json
index 85222ecaa38827..39f239edfcb44a 100644
--- a/packages/block-directory/package.json
+++ b/packages/block-directory/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-directory",
- "version": "5.6.0",
+ "version": "5.7.0",
"description": "Extend editor with block directory features to search, download and install blocks.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-directory/src/components/downloadable-block-list-item/index.js b/packages/block-directory/src/components/downloadable-block-list-item/index.js
index 03e6e79d8928e9..45a2930ad656e3 100644
--- a/packages/block-directory/src/components/downloadable-block-list-item/index.js
+++ b/packages/block-directory/src/components/downloadable-block-list-item/index.js
@@ -65,7 +65,7 @@ function getDownloadableBlockLabel(
);
}
-function DownloadableBlockListItem( { composite, item, onClick } ) {
+function DownloadableBlockListItem( { item, onClick } ) {
const { author, description, icon, rating, title } = item;
// getBlockType returns a block object if this block exists, or null if not.
const isInstalled = !! getBlockType( item.name );
@@ -116,7 +116,6 @@ function DownloadableBlockListItem( { composite, item, onClick } ) {
tooltipPosition="top center"
/>
}
- store={ composite }
disabled={ isInstalling || ! isInstallable }
>
diff --git a/packages/block-directory/src/components/downloadable-blocks-list/index.js b/packages/block-directory/src/components/downloadable-blocks-list/index.js
index 09f509c4ed49c9..3911c3297376db 100644
--- a/packages/block-directory/src/components/downloadable-blocks-list/index.js
+++ b/packages/block-directory/src/components/downloadable-blocks-list/index.js
@@ -13,12 +13,10 @@ import DownloadableBlockListItem from '../downloadable-block-list-item';
import { store as blockDirectoryStore } from '../../store';
import { unlock } from '../../lock-unlock';
-const { CompositeV2: Composite, useCompositeStoreV2: useCompositeStore } =
- unlock( componentsPrivateApis );
+const { CompositeV2: Composite } = unlock( componentsPrivateApis );
const noop = () => {};
function DownloadableBlocksList( { items, onHover = noop, onSelect } ) {
- const composite = useCompositeStore();
const { installBlockType } = useDispatch( blockDirectoryStore );
if ( ! items.length ) {
@@ -27,7 +25,6 @@ function DownloadableBlocksList( { items, onHover = noop, onSelect } ) {
return (
{
// Check if the block is registered (`getBlockType`
// will return an object). If so, insert the block.
diff --git a/packages/block-editor/CHANGELOG.md b/packages/block-editor/CHANGELOG.md
index 0b365c18ae8ad4..da44ebc4149f58 100644
--- a/packages/block-editor/CHANGELOG.md
+++ b/packages/block-editor/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 14.2.0 (2024-09-05)
+
## 14.1.0 (2024-08-21)
## 14.0.0 (2024-08-07)
diff --git a/packages/block-editor/package.json b/packages/block-editor/package.json
index 2a06a9da4a587b..8d6300da3c582c 100644
--- a/packages/block-editor/package.json
+++ b/packages/block-editor/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-editor",
- "version": "14.1.0",
+ "version": "14.2.0",
"description": "Generic block editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-editor/src/components/block-breadcrumb/style.scss b/packages/block-editor/src/components/block-breadcrumb/style.scss
index 5d2e3154dc2d90..78d422d7b09978 100644
--- a/packages/block-editor/src/components/block-breadcrumb/style.scss
+++ b/packages/block-editor/src/components/block-breadcrumb/style.scss
@@ -41,7 +41,7 @@
content: "";
display: block;
position: absolute;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
top: $border-width;
right: $border-width;
bottom: $border-width;
diff --git a/packages/block-editor/src/components/block-draggable/content.scss b/packages/block-editor/src/components/block-draggable/content.scss
index f1318daebd5a04..102230168e2133 100644
--- a/packages/block-editor/src/components/block-draggable/content.scss
+++ b/packages/block-editor/src/components/block-draggable/content.scss
@@ -3,7 +3,7 @@
.block-editor-block-list__layout .is-dragging {
background-color: currentColor !important;
opacity: 0.05 !important;
- border-radius: $radius-block-ui !important;
+ border-radius: $radius-small !important;
// Disabling pointer events during the drag event is necessary,
// lest the block might affect your drag operation.
diff --git a/packages/block-editor/src/components/block-draggable/style.scss b/packages/block-editor/src/components/block-draggable/style.scss
index afbf77319f7200..349afa2c3563c0 100644
--- a/packages/block-editor/src/components/block-draggable/style.scss
+++ b/packages/block-editor/src/components/block-draggable/style.scss
@@ -7,7 +7,7 @@
.block-editor-block-draggable-chip {
background-color: $gray-900;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
box-shadow: 0 6px 8px rgba($black, 0.3);
color: $white;
cursor: grabbing;
diff --git a/packages/block-editor/src/components/block-inspector/index.js b/packages/block-editor/src/components/block-inspector/index.js
index 75b5239f47d6cc..1986ad8730c121 100644
--- a/packages/block-editor/src/components/block-inspector/index.js
+++ b/packages/block-editor/src/components/block-inspector/index.js
@@ -322,6 +322,7 @@ const BlockInspectorSingleBlock = ( { clientId, blockName } ) => {
/>
+
diff --git a/packages/block-editor/src/components/block-list/block-invalid-warning.js b/packages/block-editor/src/components/block-list/block-invalid-warning.js
index 42ec5f9deb84d0..fb235cbce9ca21 100644
--- a/packages/block-editor/src/components/block-list/block-invalid-warning.js
+++ b/packages/block-editor/src/components/block-list/block-invalid-warning.js
@@ -107,12 +107,12 @@ export default function BlockInvalidWarning( { clientId } ) {
onClick={ convert.toRecoveredBlock }
variant="primary"
>
- { __( 'Attempt Block Recovery' ) }
+ { __( 'Attempt recovery' ) }
,
] }
secondaryActions={ secondaryActions }
>
- { __( 'This block contains unexpected or invalid content.' ) }
+ { __( 'Block contains unexpected or invalid content.' ) }
{ compare && (
{
+ if ( editorMode !== 'zoom-out' ) {
+ return;
+ }
+
+ function onDoubleClick( event ) {
+ if ( ! event.defaultPrevented ) {
+ event.preventDefault();
+ __unstableSetEditorMode( 'edit' );
+ }
+ }
+
+ node.addEventListener( 'dblclick', onDoubleClick );
+
+ return () => {
+ node.removeEventListener( 'dblclick', onDoubleClick );
+ };
+ },
+ [ editorMode, __unstableSetEditorMode ]
+ );
+}
diff --git a/packages/block-editor/src/components/block-lock/style.scss b/packages/block-editor/src/components/block-lock/style.scss
index 8dc6bfb2021f08..ad59030a8f4405 100644
--- a/packages/block-editor/src/components/block-lock/style.scss
+++ b/packages/block-editor/src/components/block-lock/style.scss
@@ -41,7 +41,7 @@
&:hover {
background-color: $gray-100;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
}
}
diff --git a/packages/block-editor/src/components/block-mover/style.scss b/packages/block-editor/src/components/block-mover/style.scss
index 11bc362663a4d9..c58ac9f19673fc 100644
--- a/packages/block-editor/src/components/block-mover/style.scss
+++ b/packages/block-editor/src/components/block-mover/style.scss
@@ -76,7 +76,7 @@
content: "";
position: absolute;
display: block;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
height: $grid-unit-40;
// Position the focus rectangle.
diff --git a/packages/block-editor/src/components/block-pattern-setup/index.js b/packages/block-editor/src/components/block-pattern-setup/index.js
index edd55e90dc3e27..6ec3f79b5f703b 100644
--- a/packages/block-editor/src/components/block-pattern-setup/index.js
+++ b/packages/block-editor/src/components/block-pattern-setup/index.js
@@ -22,11 +22,9 @@ import usePatternsSetup from './use-patterns-setup';
import { VIEWMODES } from './constants';
import { unlock } from '../../lock-unlock';
-const {
- CompositeV2: Composite,
- CompositeItemV2: CompositeItem,
- useCompositeStoreV2: useCompositeStore,
-} = unlock( componentsPrivateApis );
+const { CompositeV2: Composite, CompositeItemV2: CompositeItem } = unlock(
+ componentsPrivateApis
+);
const SetupContent = ( {
viewMode,
@@ -35,7 +33,6 @@ const SetupContent = ( {
onBlockPatternSelect,
showTitles,
} ) => {
- const compositeStore = useCompositeStore();
const containerClass = 'block-editor-block-pattern-setup__container';
if ( viewMode === VIEWMODES.carousel ) {
@@ -65,7 +62,6 @@ const SetupContent = ( {
return (
{
return (
@@ -23,11 +22,10 @@ export function BlockSettingsMenu( { clientIds, ...props } ) {
return (
-
{ commentID && (
) }
diff --git a/packages/block-editor/src/components/block-switcher/pattern-transformations-menu.js b/packages/block-editor/src/components/block-switcher/pattern-transformations-menu.js
index 46fd83c92d91f6..c2e7fa88a879be 100644
--- a/packages/block-editor/src/components/block-switcher/pattern-transformations-menu.js
+++ b/packages/block-editor/src/components/block-switcher/pattern-transformations-menu.js
@@ -21,11 +21,9 @@ import BlockPreview from '../block-preview';
import useTransformedPatterns from './use-transformed-patterns';
import { unlock } from '../../lock-unlock';
-const {
- CompositeV2: Composite,
- CompositeItemV2: CompositeItem,
- useCompositeStoreV2: useCompositeStore,
-} = unlock( componentsPrivateApis );
+const { CompositeV2: Composite, CompositeItemV2: CompositeItem } = unlock(
+ componentsPrivateApis
+);
function PatternTransformationsMenu( {
blocks,
@@ -82,10 +80,8 @@ function PreviewPatternsPopover( { patterns, onSelect } ) {
}
function BlockPatternsList( { patterns, onSelect } ) {
- const composite = useCompositeStore();
return (
{
const {
getBlockName,
@@ -74,6 +75,7 @@ export function PrivateBlockToolbar( {
isBlockValid,
getBlockEditingMode,
getBlockAttributes,
+ getBlockParentsByBlockName,
} = select( blockEditorStore );
const selectedBlockClientIds = getSelectedBlockClientIds();
const selectedBlockClientId = selectedBlockClientIds[ 0 ];
@@ -95,6 +97,12 @@ export function PrivateBlockToolbar( {
!! getBlockAttributes( clientId )?.metadata?.bindings
);
+ const _hasParentPattern = selectedBlockClientIds.every(
+ ( clientId ) =>
+ getBlockParentsByBlockName( clientId, 'core/block', true )
+ .length > 0
+ );
+
return {
blockClientId: selectedBlockClientId,
blockClientIds: selectedBlockClientIds,
@@ -114,6 +122,7 @@ export function PrivateBlockToolbar( {
selectedBlockClientIds.length === 1 &&
_isDefaultEditingMode,
isUsingBindings: _isUsingBindings,
+ hasParentPattern: _hasParentPattern,
};
}, [] );
@@ -168,7 +177,7 @@ export function PrivateBlockToolbar( {
isDefaultEditingMode && }
{ ( shouldShowVisualToolbar || isMultiToolbar ) &&
( isDefaultEditingMode ||
- isContentOnlyEditingMode ||
+ ( isContentOnlyEditingMode && ! hasParentPattern ) ||
isSynced ) && (
>
) }
-
) }
diff --git a/packages/block-editor/src/components/block-tools/style.scss b/packages/block-editor/src/components/block-tools/style.scss
index a37271e609b179..9f1325d7f95a1a 100644
--- a/packages/block-editor/src/components/block-tools/style.scss
+++ b/packages/block-editor/src/components/block-tools/style.scss
@@ -63,7 +63,6 @@
.block-editor-inserter__toggle.components-button.has-icon {
// Basic look
background: $gray-900;
- border-radius: $radius-block-ui;
color: $white;
padding: 0;
@@ -95,7 +94,7 @@
z-index: z-index(".block-editor-block-list__block-selection-button");
// Dark block UI appearance.
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
background-color: $gray-900;
font-size: $default-font-size;
@@ -188,7 +187,7 @@
.block-editor-block-contextual-toolbar {
border: $border-width solid $gray-900;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
overflow: visible; // allow the parent selector to be visible
position: static;
width: auto;
diff --git a/packages/block-editor/src/components/block-tools/zoom-out-mode-inserters.js b/packages/block-editor/src/components/block-tools/zoom-out-mode-inserters.js
index bb044f9479c024..30d51654b77cf4 100644
--- a/packages/block-editor/src/components/block-tools/zoom-out-mode-inserters.js
+++ b/packages/block-editor/src/components/block-tools/zoom-out-mode-inserters.js
@@ -32,8 +32,11 @@ function ZoomOutModeInserters() {
getSelectedBlockClientId,
getHoveredBlockClientId,
isBlockInsertionPointVisible,
- } = select( blockEditorStore );
- const { sectionRootClientId: root } = unlock( getSettings() );
+ getSectionRootClientId,
+ } = unlock( select( blockEditorStore ) );
+
+ const root = getSectionRootClientId();
+
return {
hasSelection: !! getSelectionStart().clientId,
blockInsertionPoint: getBlockInsertionPoint(),
diff --git a/packages/block-editor/src/components/block-variation-transforms/style.scss b/packages/block-editor/src/components/block-variation-transforms/style.scss
index cfb0ff04a5bc80..b8d2a1d4649fa0 100644
--- a/packages/block-editor/src/components/block-variation-transforms/style.scss
+++ b/packages/block-editor/src/components/block-variation-transforms/style.scss
@@ -4,7 +4,7 @@
.components-dropdown-menu__toggle {
border: $border-width solid $gray-700;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
min-height: 30px;
width: 100%;
position: relative;
diff --git a/packages/block-editor/src/components/button-block-appender/content.scss b/packages/block-editor/src/components/button-block-appender/content.scss
index 4e3f32b3f4ffc3..e462278c07c104 100644
--- a/packages/block-editor/src/components/button-block-appender/content.scss
+++ b/packages/block-editor/src/components/button-block-appender/content.scss
@@ -52,7 +52,6 @@
left: 0;
pointer-events: none;
border: $border-width dashed currentColor;
- border-radius: $radius-block-ui;
}
.block-editor-inserter {
diff --git a/packages/block-editor/src/components/collab/toolbar.js b/packages/block-editor/src/components/collab/toolbar.js
index 3271b9597f0a56..286711d27095ac 100644
--- a/packages/block-editor/src/components/collab/toolbar.js
+++ b/packages/block-editor/src/components/collab/toolbar.js
@@ -27,7 +27,6 @@ export default function BlockCommentToolbar() {
};
return (
-
-
);
}
diff --git a/packages/block-editor/src/components/colors-gradients/style.scss b/packages/block-editor/src/components/colors-gradients/style.scss
index b3539637a9904c..fc1b1a4d469033 100644
--- a/packages/block-editor/src/components/colors-gradients/style.scss
+++ b/packages/block-editor/src/components/colors-gradients/style.scss
@@ -73,15 +73,15 @@ $swatch-gap: 12px;
// Identify the first visible instance as placeholder items will not have this class.
&:nth-child(1 of &) {
margin-top: $grid-unit-30;
- border-top-left-radius: $radius-block-ui;
- border-top-right-radius: $radius-block-ui;
+ border-top-left-radius: $radius-small;
+ border-top-right-radius: $radius-small;
border-top: 1px solid $gray-300;
}
// Identify the last visible instance as placeholder items will not have this class.
&:nth-last-child(1 of &) {
- border-bottom-left-radius: $radius-block-ui;
- border-bottom-right-radius: $radius-block-ui;
+ border-bottom-left-radius: $radius-small;
+ border-bottom-right-radius: $radius-small;
}
> div,
diff --git a/packages/block-editor/src/components/default-block-appender/content.scss b/packages/block-editor/src/components/default-block-appender/content.scss
index 77725d2508ec5e..51e0b4381a15d5 100644
--- a/packages/block-editor/src/components/default-block-appender/content.scss
+++ b/packages/block-editor/src/components/default-block-appender/content.scss
@@ -48,7 +48,6 @@
.block-editor-inserter__toggle.components-button.has-icon {
// Basic look
background: $gray-900;
- border-radius: $radius-block-ui;
color: $white;
padding: 0;
diff --git a/packages/block-editor/src/components/global-styles/color-panel.js b/packages/block-editor/src/components/global-styles/color-panel.js
index 15f06310176c70..87c19adedbb27b 100644
--- a/packages/block-editor/src/components/global-styles/color-panel.js
+++ b/packages/block-editor/src/components/global-styles/color-panel.js
@@ -33,7 +33,7 @@ import { unlock } from '../../lock-unlock';
export function useHasColorPanel( settings ) {
const hasTextPanel = useHasTextPanel( settings );
- const hasBackgroundPanel = useHasBackgroundPanel( settings );
+ const hasBackgroundPanel = useHasBackgroundColorPanel( settings );
const hasLinkPanel = useHasLinkPanel( settings );
const hasHeadingPanel = useHasHeadingPanel( settings );
const hasButtonPanel = useHasButtonPanel( settings );
@@ -97,7 +97,7 @@ export function useHasButtonPanel( settings ) {
);
}
-export function useHasBackgroundPanel( settings ) {
+export function useHasBackgroundColorPanel( settings ) {
const colors = useColorsPerOrigin( settings );
const gradients = useGradientsPerOrigin( settings );
return (
@@ -347,7 +347,7 @@ export default function ColorPanel( {
};
// BackgroundColor
- const showBackgroundPanel = useHasBackgroundPanel( settings );
+ const showBackgroundPanel = useHasBackgroundColorPanel( settings );
const backgroundColor = decodeValue( inheritedValue?.color?.background );
const userBackgroundColor = decodeValue( value?.color?.background );
const gradient = decodeValue( inheritedValue?.color?.gradient );
diff --git a/packages/block-editor/src/components/global-styles/color-panel.native.js b/packages/block-editor/src/components/global-styles/color-panel.native.js
index fcbff4e5a07d78..87002b5fa3e22f 100644
--- a/packages/block-editor/src/components/global-styles/color-panel.native.js
+++ b/packages/block-editor/src/components/global-styles/color-panel.native.js
@@ -18,7 +18,7 @@ import InspectorControls from '../inspector-controls';
import {
useHasColorPanel,
useHasTextPanel,
- useHasBackgroundPanel,
+ useHasBackgroundColorPanel,
} from './color-panel.js';
import { useGlobalStyles } from './use-global-styles-context';
@@ -95,7 +95,7 @@ const ColorPanel = ( {
);
// BackgroundColor
- const showBackgroundPanel = useHasBackgroundPanel( settings );
+ const showBackgroundPanel = useHasBackgroundColorPanel( settings );
const backgroundColor = decodeValue( inheritedValue?.color?.background );
const gradient = decodeValue( inheritedValue?.color?.gradient );
const setBackgroundColor = useCallback(
diff --git a/packages/block-editor/src/components/global-styles/dimensions-panel.js b/packages/block-editor/src/components/global-styles/dimensions-panel.js
index 241d3bb93d1b13..8430703aec966d 100644
--- a/packages/block-editor/src/components/global-styles/dimensions-panel.js
+++ b/packages/block-editor/src/components/global-styles/dimensions-panel.js
@@ -11,12 +11,11 @@ import {
__experimentalToolsPanel as ToolsPanel,
__experimentalToolsPanelItem as ToolsPanelItem,
__experimentalBoxControl as BoxControl,
- __experimentalHStack as HStack,
__experimentalUnitControl as UnitControl,
__experimentalUseCustomUnits as useCustomUnits,
- __experimentalView as View,
+ __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,
} from '@wordpress/components';
-import { Icon, positionCenter, stretchWide } from '@wordpress/icons';
+import { Icon, alignNone, stretchWide } from '@wordpress/icons';
import { useCallback, useState, Platform } from '@wordpress/element';
/**
@@ -252,7 +251,7 @@ export default function DimensionsPanel( {
const minimumMargin = -Infinity;
const [ minMarginValue, setMinMarginValue ] = useState( minimumMargin );
- // Content Size
+ // Content Width
const showContentSizeControl =
useHasContentSize( settings ) && includeLayoutControls;
const contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );
@@ -268,7 +267,7 @@ export default function DimensionsPanel( {
const hasUserSetContentSizeValue = () => !! value?.layout?.contentSize;
const resetContentSizeValue = () => setContentSizeValue( undefined );
- // Wide Size
+ // Wide Width
const showWideSizeControl =
useHasWideSize( settings ) && includeLayoutControls;
const wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );
@@ -464,8 +463,7 @@ export default function DimensionsPanel( {
) }
{ showContentSizeControl && (
-
- {
- setContentSizeValue( nextContentSize );
- } }
- units={ units }
- />
-
-
-
-
+ {
+ setContentSizeValue( nextContentSize );
+ } }
+ units={ units }
+ prefix={
+
+
+
+ }
+ />
) }
{ showWideSizeControl && (
-
- {
- setWideSizeValue( nextWideSize );
- } }
- units={ units }
- />
-
-
-
-
+ {
+ setWideSizeValue( nextWideSize );
+ } }
+ units={ units }
+ prefix={
+
+
+
+ }
+ />
) }
{ showPaddingControl && (
diff --git a/packages/block-editor/src/components/global-styles/shadow-panel-components.js b/packages/block-editor/src/components/global-styles/shadow-panel-components.js
index e3a6c71adf8fc6..0f30f769f7b102 100644
--- a/packages/block-editor/src/components/global-styles/shadow-panel-components.js
+++ b/packages/block-editor/src/components/global-styles/shadow-panel-components.js
@@ -32,11 +32,9 @@ import { unlock } from '../../lock-unlock';
* @type {Array}
*/
const EMPTY_ARRAY = [];
-const {
- CompositeItemV2: CompositeItem,
- CompositeV2: Composite,
- useCompositeStoreV2: useCompositeStore,
-} = unlock( componentsPrivateApis );
+const { CompositeItemV2: CompositeItem, CompositeV2: Composite } = unlock(
+ componentsPrivateApis
+);
export function ShadowPopoverContainer( { shadow, onShadowChange, settings } ) {
const shadows = useShadowPresets( settings );
@@ -66,10 +64,8 @@ export function ShadowPopoverContainer( { shadow, onShadowChange, settings } ) {
}
export function ShadowPresets( { presets, activeShadow, onSelect } ) {
- const compositeStore = useCompositeStore();
return ! presets ? null : (
{
nearestFontWeight: '400',
},
},
+ {
+ message:
+ 'should return nearest fontStyle and fontWeight for normal/400 when fontFamilyFaces contain numerical fontWeight value',
+ fontFamilyFaces: [
+ {
+ fontFamily: 'IBM Plex Mono',
+ fontStyle: 'normal',
+ fontWeight: 400,
+ src: [
+ 'file:./assets/fonts/ibm-plex-mono/IBMPlexMono-Regular.woff2',
+ ],
+ },
+ {
+ fontFamily: 'IBM Plex Mono',
+ fontStyle: 'italic',
+ fontWeight: '400',
+ src: [
+ 'file:./assets/fonts/ibm-plex-mono/IBMPlexMono-Italic.woff2',
+ ],
+ },
+ {
+ fontFamily: 'IBM Plex Mono',
+ fontStyle: 'normal',
+ fontWeight: '700',
+ src: [
+ 'file:./assets/fonts/ibm-plex-mono/IBMPlexMono-Bold.woff2',
+ ],
+ },
+ ],
+ fontStyle: 'normal',
+ fontWeight: '400',
+ expected: {
+ nearestFontStyle: 'normal',
+ nearestFontWeight: '400',
+ },
+ },
+ {
+ message:
+ 'should return nearest fontStyle and fontWeight for normal/400 when fontFamilyFaces contain undefined fontWeight value',
+ fontFamilyFaces: [
+ {
+ fontFamily: 'IBM Plex Mono',
+ fontStyle: 'normal',
+ src: [
+ 'file:./assets/fonts/ibm-plex-mono/IBMPlexMono-Regular.woff2',
+ ],
+ },
+ ],
+ fontStyle: 'normal',
+ fontWeight: '400',
+ expected: {
+ nearestFontStyle: 'normal',
+ nearestFontWeight: '700',
+ },
+ },
].forEach(
( {
message,
diff --git a/packages/block-editor/src/components/global-styles/typography-utils.js b/packages/block-editor/src/components/global-styles/typography-utils.js
index 32fbd50db2dbff..4b7c90ae4f222c 100644
--- a/packages/block-editor/src/components/global-styles/typography-utils.js
+++ b/packages/block-editor/src/components/global-styles/typography-utils.js
@@ -174,6 +174,10 @@ export function findNearestFontWeight(
availableFontWeights,
newFontWeightValue
) {
+ newFontWeightValue =
+ 'number' === typeof newFontWeightValue
+ ? newFontWeightValue.toString()
+ : newFontWeightValue;
if ( ! newFontWeightValue || typeof newFontWeightValue !== 'string' ) {
return '';
}
@@ -260,7 +264,7 @@ export function findNearestStyleAndWeight(
( { value: fs } ) => fs === fontStyle
);
const hasFontWeight = fontWeights?.some(
- ( { value: fw } ) => fw === fontWeight
+ ( { value: fw } ) => fw?.toString() === fontWeight?.toString()
);
if ( ! hasFontStyle ) {
diff --git a/packages/block-editor/src/components/grid/style.scss b/packages/block-editor/src/components/grid/style.scss
index 6790d683ca7d03..3a04eb006e7910 100644
--- a/packages/block-editor/src/components/grid/style.scss
+++ b/packages/block-editor/src/components/grid/style.scss
@@ -117,7 +117,7 @@
content: "";
position: absolute;
display: block;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
height: $grid-unit-40;
// Position the focus rectangle.
diff --git a/packages/block-editor/src/components/inner-blocks/index.js b/packages/block-editor/src/components/inner-blocks/index.js
index c8db9f8cebf905..0d35b459190fef 100644
--- a/packages/block-editor/src/components/inner-blocks/index.js
+++ b/packages/block-editor/src/components/inner-blocks/index.js
@@ -203,7 +203,7 @@ export function useInnerBlocksProps( props = {}, options = {} ) {
getBlockEditingMode,
getBlockSettings,
isDragging,
- getSettings,
+ getSectionRootClientId,
} = unlock( select( blockEditorStore ) );
let _isDropZoneDisabled;
@@ -225,7 +225,7 @@ export function useInnerBlocksProps( props = {}, options = {} ) {
// In zoom out mode, we want to disable the drop zone for the sections.
// The inner blocks belonging to the section drop zone is
// already disabled by the blocks themselves being disabled.
- const { sectionRootClientId } = unlock( getSettings() );
+ const sectionRootClientId = getSectionRootClientId();
_isDropZoneDisabled = clientId !== sectionRootClientId;
}
diff --git a/packages/block-editor/src/components/inserter-list-item/style.scss b/packages/block-editor/src/components/inserter-list-item/style.scss
index f91e4365db30ce..435f60ed9e2f14 100644
--- a/packages/block-editor/src/components/inserter-list-item/style.scss
+++ b/packages/block-editor/src/components/inserter-list-item/style.scss
@@ -43,7 +43,6 @@
cursor: pointer;
background: transparent;
word-break: break-word;
- border-radius: $radius-block-ui;
transition: all 0.05s ease-in-out;
@include reduce-motion("transition");
position: relative;
@@ -72,7 +71,7 @@
bottom: 0;
left: 0;
right: 0;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
opacity: 0.04;
background: var(--wp-admin-theme-color);
// This fixes drag-and-drop in Firefox.
@@ -97,7 +96,6 @@
.block-editor-block-types-list__item-icon {
padding: 12px 20px;
- border-radius: $radius-block-ui;
color: $gray-900;
transition: all 0.05s ease-in-out;
@include reduce-motion("transition");
diff --git a/packages/block-editor/src/components/inserter-listbox/index.js b/packages/block-editor/src/components/inserter-listbox/index.js
index 6af26a1d746bfb..f1168f67fd6113 100644
--- a/packages/block-editor/src/components/inserter-listbox/index.js
+++ b/packages/block-editor/src/components/inserter-listbox/index.js
@@ -12,17 +12,11 @@ export { default as InserterListboxGroup } from './group';
export { default as InserterListboxRow } from './row';
export { default as InserterListboxItem } from './item';
-const { CompositeV2: Composite, useCompositeStoreV2: useCompositeStore } =
- unlock( componentsPrivateApis );
+const { CompositeV2: Composite } = unlock( componentsPrivateApis );
function InserterListbox( { children } ) {
- const store = useCompositeStore( {
- focusShift: true,
- focusWrap: 'horizontal',
- } );
-
return (
- > }>
+ > }>
{ children }
);
diff --git a/packages/block-editor/src/components/inserter/media-tab/media-list.js b/packages/block-editor/src/components/inserter/media-tab/media-list.js
index bfc858bc8c4de7..9d03b3086176f0 100644
--- a/packages/block-editor/src/components/inserter/media-tab/media-list.js
+++ b/packages/block-editor/src/components/inserter/media-tab/media-list.js
@@ -10,8 +10,7 @@ import { __ } from '@wordpress/i18n';
import { MediaPreview } from './media-preview';
import { unlock } from '../../../lock-unlock';
-const { CompositeV2: Composite, useCompositeStoreV2: useCompositeStore } =
- unlock( componentsPrivateApis );
+const { CompositeV2: Composite } = unlock( componentsPrivateApis );
function MediaList( {
mediaList,
@@ -19,10 +18,8 @@ function MediaList( {
onClick,
label = __( 'Media List' ),
} ) {
- const compositeStore = useCompositeStore();
return (
{};
function InserterMenu(
@@ -102,12 +101,12 @@ function InserterMenu(
window.requestAnimationFrame( () => {
if (
! shouldFocusBlock &&
- ! blockTypesTabRef?.current.contains(
+ ! blockTypesTabRef.current?.contains(
ref.current.ownerDocument.activeElement
)
) {
// There has been a focus loss, so focus the first button in the block types tab
- blockTypesTabRef?.current.querySelector( 'button' ).focus();
+ blockTypesTabRef.current?.querySelector( 'button' ).focus();
}
} );
},
@@ -147,11 +146,6 @@ function InserterMenu(
const showMediaPanel = selectedTab === 'media' && !! selectedMediaCategory;
- const showZoomOut =
- showPatternPanel && !! window.__experimentalEnableZoomedOutPatternsTab;
-
- useZoomOut( showZoomOut );
-
const inserterSearch = useMemo( () => {
if ( selectedTab === 'media' ) {
return null;
diff --git a/packages/block-editor/src/components/inserter/style.scss b/packages/block-editor/src/components/inserter/style.scss
index 21f8abfa59c9e8..bd3ac3f961b88a 100644
--- a/packages/block-editor/src/components/inserter/style.scss
+++ b/packages/block-editor/src/components/inserter/style.scss
@@ -44,12 +44,12 @@ $block-inserter-tabs-height: 44px;
&:first-child {
border-top: $border-width solid $gray-400;
- border-radius: $radius-block-ui $radius-block-ui 0 0;
+ border-radius: $radius-medium $radius-medium 0 0;
}
&:last-child {
border-bottom: $border-width solid $gray-400;
- border-radius: 0 0 $radius-block-ui $radius-block-ui;
+ border-radius: 0 0 $radius-medium $radius-medium;
}
&.components-button {
@@ -276,7 +276,7 @@ $block-inserter-tabs-height: 44px;
bottom: 0;
left: 0;
right: 0;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
opacity: 0.04;
background: var(--wp-admin-theme-color);
height: 100%;
@@ -359,7 +359,7 @@ $block-inserter-tabs-height: 44px;
min-height: $grid-unit-60 * 3;
color: $gray-700;
background: $gray-100;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
}
.block-editor-inserter__tips {
@@ -577,7 +577,6 @@ $block-inserter-tabs-height: 44px;
> button {
background: $white;
- border-radius: $radius-block-ui;
display: none;
// These styles are important so as focus isn't lost
@@ -611,7 +610,6 @@ $block-inserter-tabs-height: 44px;
max-width: 100%;
outline: $border-width solid rgba($black, 0.1);
outline-offset: -$border-width;
- border-radius: $radius-block-ui;
}
.block-editor-inserter__media-list__item-preview-spinner {
diff --git a/packages/block-editor/src/components/inspector-controls-tabs/settings-tab.js b/packages/block-editor/src/components/inspector-controls-tabs/settings-tab.js
index ec34035b754a91..ea2f45114bf9cf 100644
--- a/packages/block-editor/src/components/inspector-controls-tabs/settings-tab.js
+++ b/packages/block-editor/src/components/inspector-controls-tabs/settings-tab.js
@@ -9,6 +9,7 @@ const SettingsTab = ( { showAdvancedControls = false } ) => (
<>
+
{ showAdvancedControls && (
diff --git a/packages/block-editor/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js b/packages/block-editor/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js
index ff68be82a829f1..6a80d47f024816 100644
--- a/packages/block-editor/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js
+++ b/packages/block-editor/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js
@@ -32,6 +32,7 @@ function getShowTabs( blockName, tabSettings = {} ) {
export default function useInspectorControlsTabs( blockName ) {
const tabs = [];
const {
+ bindings: bindingsGroup,
border: borderGroup,
color: colorGroup,
default: defaultGroup,
@@ -64,8 +65,10 @@ export default function useInspectorControlsTabs( blockName ) {
// (i.e. both list view and styles), check only the default and position
// InspectorControls slots. If we have multiple tabs, we'll need to check
// the advanced controls slot as well to ensure they are rendered.
- const advancedFills =
- useSlotFills( InspectorAdvancedControls.slotName ) || [];
+ const advancedFills = [
+ ...( useSlotFills( InspectorAdvancedControls.slotName ) || [] ),
+ ...( useSlotFills( bindingsGroup.Slot.__unstableName ) || [] ),
+ ];
const settingsFills = [
...( useSlotFills( defaultGroup.Slot.__unstableName ) || [] ),
diff --git a/packages/block-editor/src/components/inspector-controls/groups.js b/packages/block-editor/src/components/inspector-controls/groups.js
index 9ca1a72b9918a6..34ec49a5e1cb41 100644
--- a/packages/block-editor/src/components/inspector-controls/groups.js
+++ b/packages/block-editor/src/components/inspector-controls/groups.js
@@ -5,6 +5,7 @@ import { createSlotFill } from '@wordpress/components';
const InspectorControlsDefault = createSlotFill( 'InspectorControls' );
const InspectorControlsAdvanced = createSlotFill( 'InspectorAdvancedControls' );
+const InspectorControlsBindings = createSlotFill( 'InspectorControlsBindings' );
const InspectorControlsBackground = createSlotFill(
'InspectorControlsBackground'
);
@@ -26,6 +27,7 @@ const groups = {
default: InspectorControlsDefault,
advanced: InspectorControlsAdvanced,
background: InspectorControlsBackground,
+ bindings: InspectorControlsBindings,
border: InspectorControlsBorder,
color: InspectorControlsColor,
dimensions: InspectorControlsDimensions,
diff --git a/packages/block-editor/src/components/link-control/style.scss b/packages/block-editor/src/components/link-control/style.scss
index 1390a285fe163e..b0a5f6af2651b3 100644
--- a/packages/block-editor/src/components/link-control/style.scss
+++ b/packages/block-editor/src/components/link-control/style.scss
@@ -78,7 +78,6 @@ $block-editor-link-control-number-of-actions: 1;
@include input-control;
display: block;
border: $border-width solid $gray-600;
- border-radius: $radius-block-ui;
height: $button-size-next-default-40px; // components do not properly support unstable-large yet.
margin: 0;
padding: $grid-unit-10 $button-size-next-default-40px $grid-unit-10 $grid-unit-20;
@@ -230,7 +229,7 @@ $block-editor-link-control-number-of-actions: 1;
background-color: $gray-100;
width: $grid-unit-40;
height: $grid-unit-40;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
}
.block-editor-link-control__search-item-icon {
@@ -252,7 +251,6 @@ $block-editor-link-control-number-of-actions: 1;
}
.block-editor-link-control__search-item-title {
- border-radius: $radius-block-ui;
line-height: 1.1;
diff --git a/packages/block-editor/src/components/list-view/style.scss b/packages/block-editor/src/components/list-view/style.scss
index 406053af89317c..3d25597d2af904 100644
--- a/packages/block-editor/src/components/list-view/style.scss
+++ b/packages/block-editor/src/components/list-view/style.scss
@@ -101,16 +101,16 @@
// Border radius for corners of the selected item.
&.is-first-selected td:first-child {
- border-top-left-radius: $radius-block-ui;
+ border-top-left-radius: $radius-small;
}
&.is-first-selected td:last-child {
- border-top-right-radius: $radius-block-ui;
+ border-top-right-radius: $radius-small;
}
&.is-last-selected td:first-child {
- border-bottom-left-radius: $radius-block-ui;
+ border-bottom-left-radius: $radius-small;
}
&.is-last-selected td:last-child {
- border-bottom-right-radius: $radius-block-ui;
+ border-bottom-right-radius: $radius-small;
}
&.is-branch-selected:not(.is-selected):not(.is-synced-branch) {
background: rgba(var(--wp-admin-theme-color--rgb), 0.04);
@@ -119,23 +119,23 @@
background: rgba(var(--wp-block-synced-color--rgb), 0.04);
}
&.is-branch-selected.is-first-selected td:first-child {
- border-top-left-radius: $radius-block-ui;
+ border-top-left-radius: $radius-small;
}
&.is-branch-selected.is-first-selected td:last-child {
- border-top-right-radius: $radius-block-ui;
+ border-top-right-radius: $radius-small;
}
&[data-expanded="false"] {
&.is-branch-selected.is-first-selected td:first-child {
- border-top-left-radius: $radius-block-ui;
+ border-top-left-radius: $radius-small;
}
&.is-branch-selected.is-first-selected td:last-child {
- border-top-right-radius: $radius-block-ui;
+ border-top-right-radius: $radius-small;
}
&.is-branch-selected.is-last-selected td:first-child {
- border-bottom-left-radius: $radius-block-ui;
+ border-bottom-left-radius: $radius-small;
}
&.is-branch-selected.is-last-selected td:last-child {
- border-bottom-right-radius: $radius-block-ui;
+ border-bottom-right-radius: $radius-small;
}
}
&.is-branch-selected:not(.is-selected) td {
@@ -214,7 +214,6 @@
height: $grid-unit-40;
padding: ($grid-unit-15 * 0.5) $grid-unit-05 ($grid-unit-15 * 0.5) 0;
text-align: left;
- border-radius: $radius-block-ui;
position: relative;
white-space: nowrap;
@@ -406,7 +405,7 @@
right: 0;
transform: translateY(-50%);
background: rgba($black, 0.1);
- border-radius: $radius-block-ui;
+ border-radius: $radius-x-small;
padding: 2px 6px;
max-width: 100%;
box-sizing: border-box;
@@ -429,10 +428,10 @@
background-size: cover;
width: 18px;
height: 18px;
- border-radius: $radius-block-ui;
+ border-radius: $radius-x-small;
&:not(:only-child) {
- box-shadow: 0 0 0 $radius-block-ui $white;
+ box-shadow: 0 0 0 $radius-small $white;
}
&:not(:first-child) {
@@ -442,7 +441,7 @@
&.is-selected .block-editor-list-view-block-select-button__image {
&:not(:only-child) {
- box-shadow: 0 0 0 $radius-block-ui var(--wp-admin-theme-color);
+ box-shadow: 0 0 0 $radius-small var(--wp-admin-theme-color);
}
}
}
diff --git a/packages/block-editor/src/components/responsive-block-control/README.md b/packages/block-editor/src/components/responsive-block-control/README.md
index 379e245f03ff37..16183ccd6314f5 100644
--- a/packages/block-editor/src/components/responsive-block-control/README.md
+++ b/packages/block-editor/src/components/responsive-block-control/README.md
@@ -27,9 +27,6 @@ import {
InspectorControls,
__experimentalResponsiveBlockControl as ResponsiveBlockControl,
} from '@wordpress/block-editor';
-import {
- DimensionControl,
-} from '@wordpress/components';
registerBlockType( 'my-plugin/my-block', {
// ...
@@ -37,34 +34,13 @@ registerBlockType( 'my-plugin/my-block', {
edit( { attributes, setAttributes } ) {
const [ isResponsive, setIsResponsive ] = useState( false );
-
- // Used for example purposes only
- const sizeOptions = [
- {
- label: 'Small',
- value: 'small',
- },
- {
- label: 'Medium',
- value: 'medium',
- },
- {
- label: 'Large',
- value: 'large',
- },
- ];
-
const { paddingSize } = attributes;
-
// Your custom control can be anything you'd like to use.
- // You are not restricted to `DimensionControl`s, but this
- // makes life easier if dealing with standard CSS values.
- // see `packages/components/src/dimension-control/README.md`
const paddingControl = ( labelComponent, viewport ) => {
return (
-
{
// id: 'small',
// label: 'All'
// }
- return ;
+ return ;
};
```
diff --git a/packages/block-editor/src/components/rich-text/style.scss b/packages/block-editor/src/components/rich-text/style.scss
index a3bb78b2521db8..ca274d378d4088 100644
--- a/packages/block-editor/src/components/rich-text/style.scss
+++ b/packages/block-editor/src/components/rich-text/style.scss
@@ -12,7 +12,7 @@
}
.components-toolbar {
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
}
.components-toolbar__control,
diff --git a/packages/block-editor/src/components/spacing-sizes-control/style.scss b/packages/block-editor/src/components/spacing-sizes-control/style.scss
index cbcc8e30c58253..a387e5369d01ed 100644
--- a/packages/block-editor/src/components/spacing-sizes-control/style.scss
+++ b/packages/block-editor/src/components/spacing-sizes-control/style.scss
@@ -19,6 +19,7 @@
.spacing-sizes-control__range-control,
.spacing-sizes-control__custom-value-range {
flex: 1;
+ margin-bottom: 0; // Needed for some instances of the range control, such as the Spacer block.
}
.components-range-control__mark {
diff --git a/packages/block-editor/src/components/use-block-drop-zone/index.js b/packages/block-editor/src/components/use-block-drop-zone/index.js
index 8115fe8f72a647..5af82915233703 100644
--- a/packages/block-editor/src/components/use-block-drop-zone/index.js
+++ b/packages/block-editor/src/components/use-block-drop-zone/index.js
@@ -313,8 +313,8 @@ export default function useBlockDropZone( {
getAllowedBlocks,
isDragging,
isGroupable,
- getSettings,
isZoomOutMode,
+ getSectionRootClientId,
} = unlock( useSelect( blockEditorStore ) );
const {
showInsertionPoint,
@@ -360,7 +360,7 @@ export default function useBlockDropZone( {
return;
}
- const { sectionRootClientId } = unlock( getSettings() );
+ const sectionRootClientId = getSectionRootClientId();
// In Zoom Out mode, if the target is not the section root provided by settings then
// do not allow dropping as the drop target is not within the root (that which is
@@ -492,6 +492,8 @@ export default function useBlockDropZone( {
getBlockNamesByClientId,
getDraggedBlockClientIds,
getBlockType,
+ getSectionRootClientId,
+ isZoomOutMode,
getBlocks,
getBlockListSettings,
dropZoneElement,
@@ -504,8 +506,6 @@ export default function useBlockDropZone( {
isGroupable,
getBlockVariations,
getGroupingBlockName,
- getSettings,
- isZoomOutMode,
]
),
200
diff --git a/packages/block-editor/src/components/warning/content.scss b/packages/block-editor/src/components/warning/content.scss
index f4eeb253c1c2fb..9380a224b2ff95 100644
--- a/packages/block-editor/src/components/warning/content.scss
+++ b/packages/block-editor/src/components/warning/content.scss
@@ -7,7 +7,7 @@
// Block UI appearance.
border: $border-width solid $gray-900;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
background-color: $white;
.block-editor-warning__message {
@@ -30,21 +30,14 @@
flex-wrap: wrap;
align-items: baseline;
width: 100%;
+ gap: $grid-unit-15;
}
.block-editor-warning__actions {
align-items: center;
display: flex;
- margin-top: 1em;
+ gap: $grid-unit-10;
}
-
- .block-editor-warning__action {
- margin: 0 $grid-unit-10 0 0;
- }
-}
-
-.block-editor-warning__secondary {
- margin: auto 0 auto $grid-unit-10;
}
.components-popover.block-editor-warning__dropdown {
diff --git a/packages/block-editor/src/hooks/block-bindings.js b/packages/block-editor/src/hooks/block-bindings.js
index 3b90ecc1a0c178..3b59de2238b968 100644
--- a/packages/block-editor/src/hooks/block-bindings.js
+++ b/packages/block-editor/src/hooks/block-bindings.js
@@ -9,11 +9,10 @@ import {
__experimentalText as Text,
__experimentalToolsPanel as ToolsPanel,
__experimentalToolsPanelItem as ToolsPanelItem,
- __experimentalTruncate as Truncate,
__experimentalVStack as VStack,
privateApis as componentsPrivateApis,
} from '@wordpress/components';
-import { useRegistry } from '@wordpress/data';
+import { useRegistry, useSelect } from '@wordpress/data';
import { useContext, Fragment } from '@wordpress/element';
import { useViewportMatch } from '@wordpress/compose';
@@ -28,6 +27,7 @@ import { unlock } from '../lock-unlock';
import InspectorControls from '../components/inspector-controls';
import BlockContext from '../components/block-context';
import { useBlockBindingsUtils } from '../utils/block-bindings';
+import { store as blockEditorStore } from '../store';
const { DropdownMenuV2 } = unlock( componentsPrivateApis );
@@ -96,17 +96,19 @@ function BlockBindingsAttribute( { attribute, binding } ) {
const { source: sourceName, args } = binding || {};
const sourceProps =
unlock( blocksPrivateApis ).getBlockBindingsSource( sourceName );
+ const isSourceInvalid = ! sourceProps;
return (
-
- { attribute }
+
+ { attribute }
{ !! binding && (
-
- { args?.key || sourceProps?.label || sourceName }
-
+ { isSourceInvalid
+ ? __( 'Invalid source' )
+ : args?.key || sourceProps?.label || sourceName }
) }
@@ -195,6 +197,13 @@ export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
}
} );
+ const { canUpdateBlockBindings } = useSelect( ( select ) => {
+ return {
+ canUpdateBlockBindings:
+ select( blockEditorStore ).getSettings().canUpdateBlockBindings,
+ };
+ }, [] );
+
if ( ! bindableAttributes || bindableAttributes.length === 0 ) {
return null;
}
@@ -230,17 +239,16 @@ export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
}
} );
- // Lock the UI when the experiment is not enabled or there are no fields to connect to.
+ // Lock the UI when the user can't update bindings or there are no fields to connect to.
const readOnly =
- ! window.__experimentalBlockBindingsUI ||
- ! Object.keys( fieldsList ).length;
+ ! canUpdateBlockBindings || ! Object.keys( fieldsList ).length;
if ( readOnly && Object.keys( filteredBindings ).length === 0 ) {
return null;
}
return (
-
+
{
@@ -262,9 +270,13 @@ export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
/>
) }
-
- { __( 'Attributes connected to various sources.' ) }
-
+
+
+ { __(
+ 'Attributes connected to custom fields or other dynamic data.'
+ ) }
+
+
);
diff --git a/packages/block-editor/src/hooks/block-bindings.scss b/packages/block-editor/src/hooks/block-bindings.scss
index 69eaa18d57daea..e8f05895922f0f 100644
--- a/packages/block-editor/src/hooks/block-bindings.scss
+++ b/packages/block-editor/src/hooks/block-bindings.scss
@@ -1,6 +1,6 @@
div.block-editor-bindings__panel {
grid-template-columns: repeat(auto-fit, minmax(100%, 1fr));
- button:hover .block-editor-bindings__item-explanation {
+ button:hover .block-editor-bindings__item span {
color: inherit;
}
}
diff --git a/packages/block-editor/src/hooks/layout.scss b/packages/block-editor/src/hooks/layout.scss
index 83a044e3cdca75..3eedd1f629a633 100644
--- a/packages/block-editor/src/hooks/layout.scss
+++ b/packages/block-editor/src/hooks/layout.scss
@@ -1,15 +1,7 @@
-.block-editor-hooks__layout-controls {
+.block-editor-hooks__layout-controls-units {
display: flex;
- margin-bottom: $grid-unit-10;
-
- .block-editor-hooks__layout-controls-unit {
- display: flex;
- margin-right: $grid-unit-30;
-
- svg {
- margin: auto 0 $grid-unit-05 $grid-unit-10;
- }
- }
+ flex-direction: column;
+ gap: $grid-unit-20;
}
.block-editor-block-inspector .block-editor-hooks__layout-controls-unit-input {
diff --git a/packages/block-editor/src/layouts/constrained.js b/packages/block-editor/src/layouts/constrained.js
index b8dcde637a4d30..21aca422a315ff 100644
--- a/packages/block-editor/src/layouts/constrained.js
+++ b/packages/block-editor/src/layouts/constrained.js
@@ -6,11 +6,12 @@ import {
__experimentalUnitControl as UnitControl,
__experimentalToggleGroupControl as ToggleGroupControl,
__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,
+ __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import {
Icon,
- positionCenter,
+ alignNone,
stretchWide,
justifyLeft,
justifyCenter,
@@ -71,61 +72,59 @@ export default {
return (
<>
{ allowCustomContentAndWideSize && (
- <>
-
-
- {
- nextWidth =
- 0 > parseFloat( nextWidth )
- ? '0'
- : nextWidth;
- onChange( {
- ...layout,
- contentSize: nextWidth,
- } );
- } }
- units={ units }
- />
-
-
-
- {
- nextWidth =
- 0 > parseFloat( nextWidth )
- ? '0'
- : nextWidth;
- onChange( {
- ...layout,
- wideSize: nextWidth,
- } );
- } }
- units={ units }
- />
-
-
-
+
+
{
+ nextWidth =
+ 0 > parseFloat( nextWidth )
+ ? '0'
+ : nextWidth;
+ onChange( {
+ ...layout,
+ contentSize: nextWidth,
+ } );
+ } }
+ units={ units }
+ prefix={
+
+
+
+ }
+ />
+ {
+ nextWidth =
+ 0 > parseFloat( nextWidth )
+ ? '0'
+ : nextWidth;
+ onChange( {
+ ...layout,
+ wideSize: nextWidth,
+ } );
+ } }
+ units={ units }
+ prefix={
+
+
+
+ }
+ />
{ __(
'Customize the width for all elements that are assigned to the center or wide columns.'
) }
- >
+
) }
{ allowJustification && (
- ( { dispatch, select, registry } ) => {
+ ( { dispatch, select } ) => {
// When switching to zoom-out mode, we need to select the parent section
if ( mode === 'zoom-out' ) {
const firstSelectedClientId = select.getBlockSelectionStart();
- const { sectionRootClientId } = unlock(
- registry.select( STORE_NAME ).getSettings()
- );
+
+ const sectionRootClientId = select.getSectionRootClientId();
+
if ( firstSelectedClientId ) {
let sectionClientId;
diff --git a/packages/block-editor/src/store/private-keys.js b/packages/block-editor/src/store/private-keys.js
index 00fac5531b9c3f..e24b4a6264e72f 100644
--- a/packages/block-editor/src/store/private-keys.js
+++ b/packages/block-editor/src/store/private-keys.js
@@ -2,3 +2,4 @@ export const globalStylesDataKey = Symbol( 'globalStylesDataKey' );
export const globalStylesLinksDataKey = Symbol( 'globalStylesLinks' );
export const selectBlockPatternsKey = Symbol( 'selectBlockPatternsKey' );
export const reusableBlocksSelectKey = Symbol( 'reusableBlocksSelect' );
+export const sectionRootClientIdKey = Symbol( 'sectionRootClientIdKey' );
diff --git a/packages/block-editor/src/store/private-selectors.js b/packages/block-editor/src/store/private-selectors.js
index 9cc793362296c4..7e323cee6581ae 100644
--- a/packages/block-editor/src/store/private-selectors.js
+++ b/packages/block-editor/src/store/private-selectors.js
@@ -28,6 +28,7 @@ import { unlock } from '../lock-unlock';
import {
selectBlockPatternsKey,
reusableBlocksSelectKey,
+ sectionRootClientIdKey,
} from './private-keys';
export { getBlockSettings } from './get-block-settings';
@@ -543,3 +544,7 @@ export const getBlockStyles = createSelector(
export function isZoomOutMode( state ) {
return state.editorMode === 'zoom-out';
}
+
+export function getSectionRootClientId( state ) {
+ return state.settings?.[ sectionRootClientIdKey ];
+}
diff --git a/packages/block-editor/src/store/selectors.js b/packages/block-editor/src/store/selectors.js
index b30a719d21fd4d..30fdb76bdbe787 100644
--- a/packages/block-editor/src/store/selectors.js
+++ b/packages/block-editor/src/store/selectors.js
@@ -37,6 +37,7 @@ import {
getContentLockingParent,
getTemporarilyEditingAsBlocks,
getTemporarilyEditingFocusModeToRevert,
+ getSectionRootClientId,
} from './private-selectors';
/**
@@ -2058,9 +2059,8 @@ export const getInserterItems = createRegistrySelector( ( select ) =>
if ( ! item.rootClientId ) {
let sectionRootClientId;
try {
- sectionRootClientId = unlock(
- getSettings( state )
- ).sectionRootClientId;
+ sectionRootClientId =
+ getSectionRootClientId( state );
} catch ( e ) {}
if (
sectionRootClientId &&
@@ -2838,7 +2838,7 @@ export function __unstableHasActiveBlockOverlayActive( state, clientId ) {
// In zoom-out mode, the block overlay is always active for section level blocks.
if ( editorMode === 'zoom-out' ) {
- const { sectionRootClientId } = unlock( getSettings( state ) );
+ const sectionRootClientId = getSectionRootClientId( state );
if ( sectionRootClientId ) {
const sectionClientIds = getBlockOrder(
state,
@@ -2931,7 +2931,8 @@ export const getBlockEditingMode = createRegistrySelector(
// sections.
const editorMode = __unstableGetEditorMode( state );
if ( editorMode === 'zoom-out' ) {
- const { sectionRootClientId } = unlock( getSettings( state ) );
+ const sectionRootClientId = getSectionRootClientId( state );
+
if ( clientId === '' /* ROOT_CONTAINER_CLIENT_ID */ ) {
return sectionRootClientId ? 'disabled' : 'contentOnly';
}
diff --git a/packages/block-editor/src/utils/dom.js b/packages/block-editor/src/utils/dom.js
index bfdce60b9f0060..9c2e813ef742b6 100644
--- a/packages/block-editor/src/utils/dom.js
+++ b/packages/block-editor/src/utils/dom.js
@@ -96,11 +96,26 @@ function isElementVisible( element ) {
return false;
}
- return element.checkVisibility( {
- opacityProperty: true,
- contentVisibilityAuto: true,
- visibilityProperty: true,
- } );
+ // Older browsers, e.g. Safari < 17.4 may not support the `checkVisibility` method.
+ if ( element.checkVisibility ) {
+ return element.checkVisibility?.( {
+ opacityProperty: true,
+ contentVisibilityAuto: true,
+ visibilityProperty: true,
+ } );
+ }
+
+ const style = viewport.getComputedStyle( element );
+
+ if (
+ style.display === 'none' ||
+ style.visibility === 'hidden' ||
+ style.opacity === '0'
+ ) {
+ return false;
+ }
+
+ return true;
}
/**
diff --git a/packages/block-editor/src/utils/get-font-styles-and-weights.js b/packages/block-editor/src/utils/get-font-styles-and-weights.js
index 88b40a5aacfeb5..dcb56fc86b2673 100644
--- a/packages/block-editor/src/utils/get-font-styles-and-weights.js
+++ b/packages/block-editor/src/utils/get-font-styles-and-weights.js
@@ -79,7 +79,10 @@ export function getFontStylesAndWeights( fontFamilyFaces ) {
fontFamilyFaces?.forEach( ( face ) => {
// Check for variable font by looking for a space in the font weight value. e.g. "100 900"
- if ( /\s/.test( face.fontWeight.trim() ) ) {
+ if (
+ 'string' === typeof face.fontWeight &&
+ /\s/.test( face.fontWeight.trim() )
+ ) {
isVariableFont = true;
// Find font weight start and end values.
@@ -105,11 +108,15 @@ export function getFontStylesAndWeights( fontFamilyFaces ) {
}
// Format font style and weight values.
- const fontWeight = formatFontWeight( face.fontWeight );
+ const fontWeight = formatFontWeight(
+ 'number' === typeof face.fontWeight
+ ? face.fontWeight.toString()
+ : face.fontWeight
+ );
const fontStyle = formatFontStyle( face.fontStyle );
// Create font style and font weight lists without duplicates.
- if ( fontStyle ) {
+ if ( fontStyle && Object.keys( fontStyle ).length ) {
if (
! fontStyles.some(
( style ) => style.value === fontStyle.value
@@ -118,7 +125,8 @@ export function getFontStylesAndWeights( fontFamilyFaces ) {
fontStyles.push( fontStyle );
}
}
- if ( fontWeight ) {
+
+ if ( fontWeight && Object.keys( fontWeight ).length ) {
if (
! fontWeights.some(
( weight ) => weight.value === fontWeight.value
diff --git a/packages/block-editor/src/utils/test/get-font-styles-and-weights.js b/packages/block-editor/src/utils/test/get-font-styles-and-weights.js
index ffc1a635aa1fb1..7c50409bae1acc 100644
--- a/packages/block-editor/src/utils/test/get-font-styles-and-weights.js
+++ b/packages/block-editor/src/utils/test/get-font-styles-and-weights.js
@@ -343,6 +343,17 @@ describe( 'getFontStylesAndWeights', () => {
fontWeight: '400',
src: 'http://www.wordpress.org/wp-content/uploads/fonts/N0b52SlTPu5rIkWIZjVKKtYtfxYqZ4RJBFzFfYUjkSDdlqZgy7LYxnL31AHfAAy5.woff2',
},
+ {
+ fontFamily: 'Piazzolla',
+ fontStyle: 'normal',
+ fontWeight: 600,
+ src: 'http://www.wordpress.org/wp-content/uploads/fonts/N0b52SlTPu5rIkWIZjVKKtYtfxYqZ4RJBFzFfYUjkSDdlqZgy7JxwXL31AHfAAy5.woff2',
+ },
+ {
+ fontFamily: 'Piazzolla',
+ fontStyle: 'normal',
+ src: 'http://www.wordpress.org/wp-content/uploads/fonts/N0b52SlTPu5rIkWIZjVKKtYtfxYqZ4RJBFzFfYUjkSDdlqZgy7JxwXL31AHfAAy5.woff2',
+ },
{
fontFamily: 'Piazzolla',
fontStyle: 'normal',
@@ -378,6 +389,10 @@ describe( 'getFontStylesAndWeights', () => {
name: 'Regular',
value: '400',
},
+ {
+ name: 'Semi Bold',
+ value: '600',
+ },
{
name: 'Black',
value: '900',
@@ -396,6 +411,14 @@ describe( 'getFontStylesAndWeights', () => {
fontWeight: '400',
},
},
+ {
+ key: 'normal-600',
+ name: 'Semi Bold',
+ style: {
+ fontStyle: 'normal',
+ fontWeight: '600',
+ },
+ },
{
key: 'normal-900',
name: 'Black',
@@ -420,6 +443,14 @@ describe( 'getFontStylesAndWeights', () => {
fontWeight: '400',
},
},
+ {
+ key: 'italic-600',
+ name: 'Semi Bold Italic',
+ style: {
+ fontStyle: 'italic',
+ fontWeight: '600',
+ },
+ },
{
key: 'italic-900',
name: 'Black Italic',
@@ -510,4 +541,121 @@ describe( 'getFontStylesAndWeights', () => {
isVariableFont: false,
} );
} );
+
+ it( 'should return available styles and weights for a font without fontWeight', () => {
+ const fontFamilyFaces = [
+ {
+ fontFamily: 'AR One Sans',
+ fontStyle: 'normal',
+ src: 'http://www.wordpress.org/wp-content/uploads/fonts/AROneSans-VariableFont_ARRRwght.ttf',
+ },
+ ];
+ expect( getFontStylesAndWeights( fontFamilyFaces ) ).toEqual( {
+ fontStyles: [
+ {
+ name: 'Regular',
+ value: 'normal',
+ },
+ {
+ name: 'Italic',
+ value: 'italic',
+ },
+ ],
+ fontWeights: [
+ {
+ name: 'Bold',
+ value: '700',
+ },
+ ],
+ combinedStyleAndWeightOptions: [
+ {
+ key: 'normal-700',
+ name: 'Bold',
+ style: {
+ fontStyle: 'normal',
+ fontWeight: '700',
+ },
+ },
+ {
+ key: 'italic-700',
+ name: 'Bold Italic',
+ style: {
+ fontStyle: 'italic',
+ fontWeight: '700',
+ },
+ },
+ ],
+ isSystemFont: false,
+ isVariableFont: false,
+ } );
+ } );
+
+ it( 'should return available styles and weights for a font with numeric fontWeight', () => {
+ const fontFamilyFaces = [
+ {
+ fontFamily: 'AR One Sans',
+ fontStyle: 'normal',
+ fontWeight: 400,
+ src: 'http://www.wordpress.org/wp-content/uploads/fonts/AROneSans-VariableFont_ARRRwght.ttf',
+ },
+ ];
+ expect( getFontStylesAndWeights( fontFamilyFaces ) ).toEqual( {
+ fontStyles: [
+ {
+ name: 'Regular',
+ value: 'normal',
+ },
+ {
+ name: 'Italic',
+ value: 'italic',
+ },
+ ],
+ fontWeights: [
+ {
+ name: 'Regular',
+ value: '400',
+ },
+ {
+ name: 'Bold',
+ value: '700',
+ },
+ ],
+ combinedStyleAndWeightOptions: [
+ {
+ key: 'normal-400',
+ name: 'Regular',
+ style: {
+ fontStyle: 'normal',
+ fontWeight: '400',
+ },
+ },
+ {
+ key: 'normal-700',
+ name: 'Bold',
+ style: {
+ fontStyle: 'normal',
+ fontWeight: '700',
+ },
+ },
+ {
+ key: 'italic-400',
+ name: 'Regular Italic',
+ style: {
+ fontStyle: 'italic',
+ fontWeight: '400',
+ },
+ },
+ {
+ key: 'italic-700',
+ name: 'Bold Italic',
+ style: {
+ fontStyle: 'italic',
+ fontWeight: '700',
+ },
+ },
+ ],
+ isSystemFont: false,
+ isVariableFont: false,
+ } );
+ } );
} );
diff --git a/packages/block-library/CHANGELOG.md b/packages/block-library/CHANGELOG.md
index 319d2b04a31687..4ee3ebc7564b53 100644
--- a/packages/block-library/CHANGELOG.md
+++ b/packages/block-library/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 9.7.0 (2024-09-05)
+
## 9.6.0 (2024-08-21)
## 9.5.0 (2024-08-07)
diff --git a/packages/block-library/package.json b/packages/block-library/package.json
index 5b522f01ea7786..4d0212490858c9 100644
--- a/packages/block-library/package.json
+++ b/packages/block-library/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-library",
- "version": "9.6.1",
+ "version": "9.7.0",
"description": "Block library for the WordPress editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-library/src/block/edit.js b/packages/block-library/src/block/edit.js
index 53422e1c4cb8c0..af9c99876e9d20 100644
--- a/packages/block-library/src/block/edit.js
+++ b/packages/block-library/src/block/edit.js
@@ -29,6 +29,7 @@ import {
privateApis as blockEditorPrivateApis,
store as blockEditorStore,
BlockControls,
+ InnerBlocks,
} from '@wordpress/block-editor';
import { privateApis as patternsPrivateApis } from '@wordpress/patterns';
import { store as blocksStore } from '@wordpress/blocks';
@@ -247,14 +248,15 @@ function ReusableBlockEdit( {
),
} );
- // Use `blocks` variable until `innerBlocks` is populated, which has the proper clientIds.
const innerBlocksProps = useInnerBlocksProps( blockProps, {
templateLock: 'all',
layout,
- value: innerBlocks.length > 0 ? innerBlocks : blocks,
+ value: blocks,
onInput: NOOP,
onChange: NOOP,
- renderAppender: blocks?.length ? undefined : blocks.ButtonBlockAppender,
+ renderAppender: blocks?.length
+ ? undefined
+ : InnerBlocks.ButtonBlockAppender,
} );
const handleEditOriginal = () => {
@@ -292,7 +294,7 @@ function ReusableBlockEdit( {
return (
<>
- { hasResolved && (
+ { hasResolved && ! isMissing && (
%2$s';
$items_markup = wp_list_categories( $args );
$type = 'list';
+
+ if ( ! empty( $block->context['enhancedPagination'] ) ) {
+ $p = new WP_HTML_Tag_Processor( $items_markup );
+ while ( $p->next_tag( 'a' ) ) {
+ $p->set_attribute( 'data-wp-on--click', 'core/query::actions.navigate' );
+ }
+ $items_markup = $p->get_updated_html();
+ }
}
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => "wp-block-categories-{$type}" ) );
diff --git a/packages/block-library/src/comment-edit-link/block.json b/packages/block-library/src/comment-edit-link/block.json
index a49f9a23161b80..578b284715c2a0 100644
--- a/packages/block-library/src/comment-edit-link/block.json
+++ b/packages/block-library/src/comment-edit-link/block.json
@@ -30,7 +30,11 @@
},
"spacing": {
"margin": true,
- "padding": true
+ "padding": true,
+ "__experimentalDefaultControls": {
+ "margin": false,
+ "padding": false
+ }
},
"typography": {
"fontSize": true,
@@ -47,6 +51,13 @@
},
"interactivity": {
"clientNavigation": true
+ },
+ "__experimentalBorder": {
+ "radius": true,
+ "color": true,
+ "width": true,
+ "style": true
}
- }
+ },
+ "style": "wp-block-comment-edit-link"
}
diff --git a/packages/block-library/src/comment-edit-link/style.scss b/packages/block-library/src/comment-edit-link/style.scss
new file mode 100644
index 00000000000000..1ae7daf55009e4
--- /dev/null
+++ b/packages/block-library/src/comment-edit-link/style.scss
@@ -0,0 +1,4 @@
+.wp-block-comment-edit-link {
+ // This block has customizable padding, border-box makes that more predictable.
+ box-sizing: border-box;
+}
diff --git a/packages/block-library/src/comment-reply-link/block.json b/packages/block-library/src/comment-reply-link/block.json
index c10129412145c8..68aa93c3c1526a 100644
--- a/packages/block-library/src/comment-reply-link/block.json
+++ b/packages/block-library/src/comment-reply-link/block.json
@@ -25,7 +25,11 @@
},
"spacing": {
"margin": true,
- "padding": true
+ "padding": true,
+ "__experimentalDefaultControls": {
+ "margin": false,
+ "padding": false
+ }
},
"typography": {
"fontSize": true,
@@ -40,6 +44,13 @@
"fontSize": true
}
},
+ "__experimentalBorder": {
+ "radius": true,
+ "color": true,
+ "width": true,
+ "style": true
+ },
"html": false
- }
+ },
+ "style": "wp-block-comment-reply-link"
}
diff --git a/packages/block-library/src/comment-reply-link/style.scss b/packages/block-library/src/comment-reply-link/style.scss
new file mode 100644
index 00000000000000..7eca6cee1aa979
--- /dev/null
+++ b/packages/block-library/src/comment-reply-link/style.scss
@@ -0,0 +1,4 @@
+.wp-block-comment-reply-link {
+ // This block has customizable padding, border-box makes that more predictable.
+ box-sizing: border-box;
+}
diff --git a/packages/block-library/src/freeform/editor.scss b/packages/block-library/src/freeform/editor.scss
index 7329eb6e5fb064..c2256ecd7a795f 100644
--- a/packages/block-library/src/freeform/editor.scss
+++ b/packages/block-library/src/freeform/editor.scss
@@ -299,7 +299,7 @@ div[data-type="core/freeform"] {
top: 0;
border: $border-width solid $gray-300;
border-bottom: none;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
margin-bottom: $grid-unit-10;
// On mobile, toolbars go edge to edge.
diff --git a/packages/block-library/src/gallery/editor.scss b/packages/block-library/src/gallery/editor.scss
index 3184b9d3d8fb22..61121f3dd866dc 100644
--- a/packages/block-library/src/gallery/editor.scss
+++ b/packages/block-library/src/gallery/editor.scss
@@ -139,7 +139,7 @@
z-index: z-index(".block-library-gallery-item__inline-menu");
transition: box-shadow 0.2s ease-out;
@include reduce-motion("transition");
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
background: $white;
border: $border-width solid $gray-900;
diff --git a/packages/block-library/src/group/editor.scss b/packages/block-library/src/group/editor.scss
index 041a2f9f884e84..11beecbab0eb68 100644
--- a/packages/block-library/src/group/editor.scss
+++ b/packages/block-library/src/group/editor.scss
@@ -43,7 +43,6 @@
pointer-events: none;
min-height: $grid-unit-60 - $border-width - $border-width;
border: $border-width dashed currentColor;
- border-radius: $radius-block-ui;
}
// Let the parent be selectable in the placeholder area.
diff --git a/packages/block-library/src/image/editor.scss b/packages/block-library/src/image/editor.scss
index db6928766c0b72..636741c7d9ddbb 100644
--- a/packages/block-library/src/image/editor.scss
+++ b/packages/block-library/src/image/editor.scss
@@ -13,9 +13,6 @@
// Disable any duotone filter applied in the selected state.
filter: none !important;
- // @todo this should eventually be overridden by a custom border-radius set in the inspector.
- border-radius: $radius-block-ui;
-
> svg {
opacity: 0;
}
diff --git a/packages/block-library/src/media-text/deprecated.js b/packages/block-library/src/media-text/deprecated.js
index 1cd1472f876c05..54c6f863311ffe 100644
--- a/packages/block-library/src/media-text/deprecated.js
+++ b/packages/block-library/src/media-text/deprecated.js
@@ -30,7 +30,7 @@ const v1ToV5ImageFillStyles = ( url, focalPoint ) => {
: {};
};
-const v6ImageFillStyles = ( url, focalPoint ) => {
+const v6ToV7ImageFillStyles = ( url, focalPoint ) => {
return url
? {
backgroundImage: `url(${ url })`,
@@ -198,6 +198,20 @@ const v6Attributes = {
},
};
+const v7Attributes = {
+ ...v6Attributes,
+ align: {
+ type: 'string',
+ // v7 changed the default for the `align` attribute.
+ default: 'none',
+ },
+ // New attribute.
+ useFeaturedImage: {
+ type: 'boolean',
+ default: false,
+ },
+};
+
const v4ToV5Supports = {
anchor: true,
align: [ 'wide', 'full' ],
@@ -237,6 +251,148 @@ const v6Supports = {
},
};
+const v7Supports = {
+ ...v6Supports,
+ __experimentalBorder: {
+ color: true,
+ radius: true,
+ style: true,
+ width: true,
+ __experimentalDefaultControls: {
+ color: true,
+ radius: true,
+ style: true,
+ width: true,
+ },
+ },
+ color: {
+ gradients: true,
+ heading: true,
+ link: true,
+ __experimentalDefaultControls: {
+ background: true,
+ text: true,
+ },
+ },
+ interactivity: {
+ clientNavigation: true,
+ },
+};
+
+// Version with 'none' as the default alignment.
+// See: https://github.com/WordPress/gutenberg/pull/64981
+const v7 = {
+ attributes: v7Attributes,
+ supports: v7Supports,
+ usesContext: [ 'postId', 'postType' ],
+ save( { attributes } ) {
+ const {
+ isStackedOnMobile,
+ mediaAlt,
+ mediaPosition,
+ mediaType,
+ mediaUrl,
+ mediaWidth,
+ mediaId,
+ verticalAlignment,
+ imageFill,
+ focalPoint,
+ linkClass,
+ href,
+ linkTarget,
+ rel,
+ } = attributes;
+ const mediaSizeSlug =
+ attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG;
+ const newRel = ! rel ? undefined : rel;
+
+ const imageClasses = clsx( {
+ [ `wp-image-${ mediaId }` ]: mediaId && mediaType === 'image',
+ [ `size-${ mediaSizeSlug }` ]: mediaId && mediaType === 'image',
+ } );
+
+ let image = mediaUrl ? (
+
+ ) : null;
+
+ if ( href ) {
+ image = (
+
+ { image }
+
+ );
+ }
+
+ const mediaTypeRenders = {
+ image: () => image,
+ video: () => ,
+ };
+ const className = clsx( {
+ 'has-media-on-the-right': 'right' === mediaPosition,
+ 'is-stacked-on-mobile': isStackedOnMobile,
+ [ `is-vertically-aligned-${ verticalAlignment }` ]:
+ verticalAlignment,
+ 'is-image-fill': imageFill,
+ } );
+ const backgroundStyles = imageFill
+ ? v6ToV7ImageFillStyles( mediaUrl, focalPoint )
+ : {};
+
+ let gridTemplateColumns;
+ if ( mediaWidth !== DEFAULT_MEDIA_WIDTH ) {
+ gridTemplateColumns =
+ 'right' === mediaPosition
+ ? `auto ${ mediaWidth }%`
+ : `${ mediaWidth }% auto`;
+ }
+ const style = {
+ gridTemplateColumns,
+ };
+
+ if ( 'right' === mediaPosition ) {
+ return (
+
+
+
+
+ );
+ }
+ return (
+
+
+
+
+ );
+ },
+};
+
// Version with wide as the default alignment.
// See: https://github.com/WordPress/gutenberg/pull/48404
const v6 = {
@@ -301,7 +457,7 @@ const v6 = {
'is-image-fill': imageFill,
} );
const backgroundStyles = imageFill
- ? v6ImageFillStyles( mediaUrl, focalPoint )
+ ? v6ToV7ImageFillStyles( mediaUrl, focalPoint )
: {};
let gridTemplateColumns;
@@ -902,4 +1058,4 @@ const v1 = {
},
};
-export default [ v6, v5, v4, v3, v2, v1 ];
+export default [ v7, v6, v5, v4, v3, v2, v1 ];
diff --git a/packages/block-library/src/media-text/edit.js b/packages/block-library/src/media-text/edit.js
index 2c020506dc889c..a946a499b26f21 100644
--- a/packages/block-library/src/media-text/edit.js
+++ b/packages/block-library/src/media-text/edit.js
@@ -213,11 +213,11 @@ function MediaTextEdit( {
[ isSelected, mediaId ]
);
- const refMediaContainer = useRef();
+ const refMedia = useRef();
const imperativeFocalPointPreview = ( value ) => {
- const { style } = refMediaContainer.current.resizable;
+ const { style } = refMedia.current;
const { x, y } = value;
- style.backgroundPosition = `${ x * 100 }% ${ y * 100 }%`;
+ style.objectPosition = `${ x * 100 }% ${ y * 100 }%`;
};
const [ temporaryMediaWidth, setTemporaryMediaWidth ] = useState( null );
@@ -243,7 +243,7 @@ function MediaTextEdit( {
'is-selected': isSelected,
'is-stacked-on-mobile': isStackedOnMobile,
[ `is-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,
- 'is-image-fill': imageFill,
+ 'is-image-fill-element': imageFill,
} );
const widthString = `${ temporaryMediaWidth || mediaWidth }%`;
const gridTemplateColumns =
@@ -480,7 +480,7 @@ function MediaTextEdit( {
onSelectMedia={ onSelectMedia }
onWidthChange={ onWidthChange }
commitWidthChange={ commitWidthChange }
- ref={ refMediaContainer }
+ refMedia={ refMedia }
enableResize={ blockEditingMode === 'default' }
toggleUseFeaturedImage={ toggleUseFeaturedImage }
{ ...{
diff --git a/packages/block-library/src/media-text/editor.scss b/packages/block-library/src/media-text/editor.scss
index b417fb951e99d0..639ceaed8ea99c 100644
--- a/packages/block-library/src/media-text/editor.scss
+++ b/packages/block-library/src/media-text/editor.scss
@@ -27,7 +27,9 @@
}
.wp-block-media-text.is-image-fill .editor-media-container__resizer,
-.wp-block-media-text.is-image-fill .components-placeholder.has-illustration {
+.wp-block-media-text.is-image-fill .components-placeholder.has-illustration,
+.wp-block-media-text.is-image-fill-element .editor-media-container__resizer,
+.wp-block-media-text.is-image-fill-element .components-placeholder.has-illustration {
// The resizer sets an inline height but for the image fill we set it to full height.
height: 100% !important;
}
diff --git a/packages/block-library/src/media-text/image-fill.js b/packages/block-library/src/media-text/image-fill.js
new file mode 100644
index 00000000000000..c277c49b5c310b
--- /dev/null
+++ b/packages/block-library/src/media-text/image-fill.js
@@ -0,0 +1,11 @@
+export function imageFillStyles( url, focalPoint ) {
+ return url
+ ? {
+ objectPosition: focalPoint
+ ? `${ Math.round( focalPoint.x * 100 ) }% ${ Math.round(
+ focalPoint.y * 100
+ ) }%`
+ : `50% 50%`,
+ }
+ : {};
+}
diff --git a/packages/block-library/src/media-text/index.php b/packages/block-library/src/media-text/index.php
index 87be164a04bb99..b65137b150ba53 100644
--- a/packages/block-library/src/media-text/index.php
+++ b/packages/block-library/src/media-text/index.php
@@ -29,15 +29,32 @@ function render_block_core_media_text( $attributes, $content ) {
return $content;
}
+ $has_media_on_right = isset( $attributes['mediaPosition'] ) && 'right' === $attributes['mediaPosition'];
+ $image_fill = isset( $attributes['imageFill'] ) && $attributes['imageFill'];
+ $focal_point = isset( $attributes['focalPoint'] ) ? round( $attributes['focalPoint']['x'] * 100 ) . '% ' . round( $attributes['focalPoint']['y'] * 100 ) . '%' : '50% 50%';
+ $unique_id = 'wp-block-media-text__media-' . wp_unique_id();
+
+ $block_tag_processor = new WP_HTML_Tag_Processor( $content );
+ $block_query = array(
+ 'tag_name' => 'div',
+ 'class_name' => 'wp-block-media-text',
+ );
+
+ while ( $block_tag_processor->next_tag( $block_query ) ) {
+ if ( $image_fill ) {
+ // The markup below does not work with the deprecated `is-image-fill` class.
+ $block_tag_processor->remove_class( 'is-image-fill' );
+ $block_tag_processor->add_class( 'is-image-fill-element' );
+ }
+ }
+
+ $content = $block_tag_processor->get_updated_html();
+
$media_tag_processor = new WP_HTML_Tag_Processor( $content );
$wrapping_figure_query = array(
'tag_name' => 'figure',
'class_name' => 'wp-block-media-text__media',
);
- $has_media_on_right = isset( $attributes['mediaPosition'] ) && 'right' === $attributes['mediaPosition'];
- $image_fill = isset( $attributes['imageFill'] ) && $attributes['imageFill'];
- $focal_point = isset( $attributes['focalPoint'] ) ? round( $attributes['focalPoint']['x'] * 100 ) . '% ' . round( $attributes['focalPoint']['y'] * 100 ) . '%' : '50% 50%';
- $unique_id = 'wp-block-media-text__media-' . wp_unique_id();
if ( $has_media_on_right ) {
// Loop through all the figure tags and set a bookmark on the last figure tag.
@@ -46,59 +63,52 @@ function render_block_core_media_text( $attributes, $content ) {
}
if ( $media_tag_processor->has_bookmark( 'last_figure' ) ) {
$media_tag_processor->seek( 'last_figure' );
- if ( $image_fill ) {
- $media_tag_processor->set_attribute( 'style', 'background-image:url(' . esc_url( $current_featured_image ) . ');background-position:' . $focal_point . ';' );
- } else {
- // Insert a unique ID to identify the figure tag.
- $media_tag_processor->set_attribute( 'id', $unique_id );
- }
+ // Insert a unique ID to identify the figure tag.
+ $media_tag_processor->set_attribute( 'id', $unique_id );
}
} else {
if ( $media_tag_processor->next_tag( $wrapping_figure_query ) ) {
- if ( $image_fill ) {
- $media_tag_processor->set_attribute( 'style', 'background-image:url(' . esc_url( $current_featured_image ) . ');background-position:' . $focal_point . ';' );
- } else {
- // Insert a unique ID to identify the figure tag.
- $media_tag_processor->set_attribute( 'id', $unique_id );
- }
+ // Insert a unique ID to identify the figure tag.
+ $media_tag_processor->set_attribute( 'id', $unique_id );
}
}
$content = $media_tag_processor->get_updated_html();
- // If the image is not set to fill, add the image tag inside the figure tag,
- // and update the image attributes in order to display the featured image.
- if ( ! $image_fill ) {
- $media_size_slug = isset( $attributes['mediaSizeSlug'] ) ? $attributes['mediaSizeSlug'] : 'full';
- $image_tag = '';
- $content = preg_replace(
- '/(
@@ -107,10 +106,7 @@ export default function save( { attributes } ) {
}
return (
-
+
{ ( mediaTypeRenders[ mediaType ] || noop )() }
.wp-block-media-text__media {
height: 100%;
min-height: 250px;
@@ -102,6 +103,26 @@
clip: rect(0, 0, 0, 0);
border: 0;
}
+
+/* Image fill for versions 8 and onwards */
+.wp-block-media-text.is-image-fill-element > .wp-block-media-text__media {
+ position: relative;
+ height: 100%;
+ min-height: 250px;
+}
+
+.wp-block-media-text.is-image-fill-element > .wp-block-media-text__media > a {
+ display: block;
+ height: 100%;
+}
+
+.wp-block-media-text.is-image-fill-element > .wp-block-media-text__media img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+
/*
* Here we here not able to use a mobile first CSS approach.
* Custom widths are set using inline styles, and on mobile,
diff --git a/packages/block-library/src/media-text/test/image-fill.js b/packages/block-library/src/media-text/test/image-fill.js
new file mode 100644
index 00000000000000..4862fcbfb02453
--- /dev/null
+++ b/packages/block-library/src/media-text/test/image-fill.js
@@ -0,0 +1,19 @@
+/**
+ * Internal dependencies
+ */
+import { imageFillStyles } from '../image-fill';
+
+describe( 'imageFillStyles()', () => {
+ it( 'should return centered object position', () => {
+ const { objectPosition } = imageFillStyles( 'image.jpg' );
+ expect( objectPosition ).toBe( '50% 50%' );
+ } );
+
+ it( 'should return custom object position', () => {
+ const { objectPosition } = imageFillStyles( 'image.jpg', {
+ x: 0.56,
+ y: 0.57,
+ } );
+ expect( objectPosition ).toBe( '56% 57%' );
+ } );
+} );
diff --git a/packages/block-library/src/media-text/test/media-container.js b/packages/block-library/src/media-text/test/media-container.js
deleted file mode 100644
index 582ec2be8d5ad8..00000000000000
--- a/packages/block-library/src/media-text/test/media-container.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Internal dependencies
- */
-import { imageFillStyles } from '../media-container';
-
-describe( 'imageFillStyles()', () => {
- it( 'should return image url', () => {
- const { backgroundImage } = imageFillStyles( 'image.jpg' );
- expect( backgroundImage ).toBe( 'url(image.jpg)' );
- } );
-
- it( 'should return centered background position', () => {
- const { backgroundPosition } = imageFillStyles( 'image.jpg' );
- expect( backgroundPosition ).toBe( '50% 50%' );
- } );
-
- it( 'should return custom background position', () => {
- const { backgroundPosition } = imageFillStyles( 'image.jpg', {
- x: 0.56,
- y: 0.57,
- } );
- expect( backgroundPosition ).toBe( '56% 57%' );
- } );
-} );
diff --git a/packages/block-library/src/missing/edit.js b/packages/block-library/src/missing/edit.js
index 9fb507794756f8..70b032cb9a2fe8 100644
--- a/packages/block-library/src/missing/edit.js
+++ b/packages/block-library/src/missing/edit.js
@@ -75,7 +75,7 @@ export default function MissingEdit( { attributes, clientId } ) {
messageHTML = sprintf(
/* translators: %s: block name */
__(
- 'Your site doesn’t include support for the "%s" block. You can leave this block intact, convert its content to a Custom HTML block, or remove it entirely.'
+ 'Your site doesn’t include support for the "%s" block. You can leave it as-is, convert it to custom HTML, or remove it.'
),
originalName
);
@@ -84,7 +84,7 @@ export default function MissingEdit( { attributes, clientId } ) {
messageHTML = sprintf(
/* translators: %s: block name */
__(
- 'Your site doesn’t include support for the "%s" block. You can leave this block intact or remove it entirely.'
+ 'Your site doesn’t include support for the "%s" block. You can leave it as-is or remove it.'
),
originalName
);
diff --git a/packages/block-library/src/navigation/editor.scss b/packages/block-library/src/navigation/editor.scss
index 619b8dc6f0c7bd..a8d135656e44a1 100644
--- a/packages/block-library/src/navigation/editor.scss
+++ b/packages/block-library/src/navigation/editor.scss
@@ -104,7 +104,6 @@
background: $gray-900;
padding: 0;
width: $button-size-small;
- border-radius: $radius-block-ui;
margin-right: 0;
margin-left: auto;
}
@@ -326,7 +325,7 @@ $color-control-label-height: 20px;
}
.wp-block-navigation-placeholder__controls {
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
background-color: $white;
box-shadow: inset 0 0 0 $border-width $gray-900;
display: none;
diff --git a/packages/block-library/src/query-pagination/editor.scss b/packages/block-library/src/query-pagination/editor.scss
index 0b755d155091f3..ed8a2cc47a30f7 100644
--- a/packages/block-library/src/query-pagination/editor.scss
+++ b/packages/block-library/src/query-pagination/editor.scss
@@ -1,5 +1,3 @@
-$pagination-margin: 0.5em;
-
// Center flex items. This has an equivalent in style.scss.
.wp-block[data-align="center"] > .wp-block-query-pagination {
justify-content: center;
@@ -14,21 +12,3 @@ $pagination-margin: 0.5em;
}
}
-.wp-block-query-pagination {
- > .wp-block-query-pagination-next,
- > .wp-block-query-pagination-previous,
- > .wp-block-query-pagination-numbers {
- // Override editor auto block margins.
- margin-left: 0;
- margin-top: $pagination-margin;
-
- /*rtl:ignore*/
- margin-right: $pagination-margin;
- margin-bottom: $pagination-margin;
-
- &:last-child {
- /*rtl:ignore*/
- margin-right: 0;
- }
- }
-}
diff --git a/packages/block-library/src/query-pagination/style.scss b/packages/block-library/src/query-pagination/style.scss
index a7f2832af48c7a..e949c766e56511 100644
--- a/packages/block-library/src/query-pagination/style.scss
+++ b/packages/block-library/src/query-pagination/style.scss
@@ -1,19 +1,4 @@
-$pagination-margin: 0.5em;
.wp-block-query-pagination {
- // Increased specificity to override blocks default margin.
- > .wp-block-query-pagination-next,
- > .wp-block-query-pagination-previous,
- > .wp-block-query-pagination-numbers {
- /*rtl:ignore*/
- margin-right: $pagination-margin;
- margin-bottom: $pagination-margin;
-
- &:last-child {
- /*rtl:ignore*/
- margin-right: 0;
- }
- }
-
// This moves the next link to the right side of the container,
// which is important when it's the only block displayed
// and the block has a "space-between" justification.
diff --git a/packages/block-library/src/site-logo/edit.js b/packages/block-library/src/site-logo/edit.js
index edf8bbccfeb652..1d541ba35d6313 100644
--- a/packages/block-library/src/site-logo/edit.js
+++ b/packages/block-library/src/site-logo/edit.js
@@ -423,7 +423,7 @@ export default function LogoEdit( {
context: 'view',
} );
const _isRequestingMediaItem =
- _siteLogoId &&
+ !! _siteLogoId &&
! select( coreStore ).hasFinishedResolution( 'getMedia', [
_siteLogoId,
{ context: 'view' },
diff --git a/packages/block-library/src/style.scss b/packages/block-library/src/style.scss
index 7906a1231d922b..a8819c2084dc2e 100644
--- a/packages/block-library/src/style.scss
+++ b/packages/block-library/src/style.scss
@@ -13,6 +13,8 @@
@import "./comment-date/style.scss";
@import "./comment-content/style.scss";
@import "./comment-author-name/style.scss";
+@import "./comment-edit-link/style.scss";
+@import "./comment-reply-link/style.scss";
@import "./cover/style.scss";
@import "./details/style.scss";
@import "./embed/style.scss";
diff --git a/packages/block-serialization-default-parser/CHANGELOG.md b/packages/block-serialization-default-parser/CHANGELOG.md
index 7357d96bdcf7c5..9dd0bd70309764 100644
--- a/packages/block-serialization-default-parser/CHANGELOG.md
+++ b/packages/block-serialization-default-parser/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.7.0 (2024-09-05)
+
## 5.6.0 (2024-08-21)
## 5.5.0 (2024-08-07)
diff --git a/packages/block-serialization-default-parser/package.json b/packages/block-serialization-default-parser/package.json
index cbfcbfc0e4cb64..cac606bd7bd1ee 100644
--- a/packages/block-serialization-default-parser/package.json
+++ b/packages/block-serialization-default-parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-serialization-default-parser",
- "version": "5.6.0",
+ "version": "5.7.0",
"description": "Block serialization specification parser for WordPress posts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-serialization-spec-parser/CHANGELOG.md b/packages/block-serialization-spec-parser/CHANGELOG.md
index d4091d455937d7..b8d02b5348e1b6 100644
--- a/packages/block-serialization-spec-parser/CHANGELOG.md
+++ b/packages/block-serialization-spec-parser/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.7.0 (2024-09-05)
+
## 5.6.0 (2024-08-21)
## 5.5.0 (2024-08-07)
diff --git a/packages/block-serialization-spec-parser/package.json b/packages/block-serialization-spec-parser/package.json
index 0020908e338331..d48d1846e79095 100644
--- a/packages/block-serialization-spec-parser/package.json
+++ b/packages/block-serialization-spec-parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-serialization-spec-parser",
- "version": "5.6.0",
+ "version": "5.7.0",
"description": "Block serialization specification parser for WordPress posts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/blocks/CHANGELOG.md b/packages/blocks/CHANGELOG.md
index ce7417db1f35af..0755d5170d1b32 100644
--- a/packages/blocks/CHANGELOG.md
+++ b/packages/blocks/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 13.7.0 (2024-09-05)
+
## 13.6.0 (2024-08-21)
## 13.5.0 (2024-08-07)
diff --git a/packages/blocks/package.json b/packages/blocks/package.json
index e6c5253c7a4af1..f371ecc087af41 100644
--- a/packages/blocks/package.json
+++ b/packages/blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/blocks",
- "version": "13.6.0",
+ "version": "13.7.0",
"description": "Block API for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/browserslist-config/CHANGELOG.md b/packages/browserslist-config/CHANGELOG.md
index 2d0fafa7bc9889..b8ee58633b7ef2 100644
--- a/packages/browserslist-config/CHANGELOG.md
+++ b/packages/browserslist-config/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.7.0 (2024-09-05)
+
## 6.6.0 (2024-08-21)
## 6.5.0 (2024-08-07)
diff --git a/packages/browserslist-config/package.json b/packages/browserslist-config/package.json
index 6cf84334da5b30..c51d7318170c4e 100644
--- a/packages/browserslist-config/package.json
+++ b/packages/browserslist-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/browserslist-config",
- "version": "6.6.0",
+ "version": "6.7.0",
"description": "WordPress Browserslist shared configuration.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/commands/CHANGELOG.md b/packages/commands/CHANGELOG.md
index 86cefcc971b249..bde7767a0f61f6 100644
--- a/packages/commands/CHANGELOG.md
+++ b/packages/commands/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.7.0 (2024-09-05)
+
## 1.6.0 (2024-08-21)
## 1.5.0 (2024-08-07)
diff --git a/packages/commands/package.json b/packages/commands/package.json
index 5bca7f6ad6fae5..88b9b86f4b3aeb 100644
--- a/packages/commands/package.json
+++ b/packages/commands/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/commands",
- "version": "1.6.0",
+ "version": "1.7.0",
"description": "Handles the commands menu.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/commands/src/components/style.scss b/packages/commands/src/components/style.scss
index e69853bad95997..bcf3d17d7baa6c 100644
--- a/packages/commands/src/components/style.scss
+++ b/packages/commands/src/components/style.scss
@@ -33,7 +33,7 @@
border: $border-width solid $gray-600;
border-right: 0;
justify-content: center;
- border-radius: $radius-block-ui 0 0 $radius-block-ui;
+ border-radius: $radius-small 0 0 $radius-small;
& + [cmdk-input] {
border-top-left-radius: 0;
@@ -68,7 +68,7 @@
}
[cmdk-item] {
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
cursor: pointer;
display: flex;
align-items: center;
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index 3b8d45be5861bc..535f49ae00b11c 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -2,11 +2,14 @@
## Unreleased
+## 28.7.0 (2024-09-05)
+
### Deprecations
- Deprecate `replace` from the options accepted by `useNavigator().goTo()` ([#64675](https://github.com/WordPress/gutenberg/pull/64675)).
- Soft deprecate `size` prop on `AlignmentMatrixControl.Icon` ([#64827](https://github.com/WordPress/gutenberg/pull/64827)).
- `__experimentalAlignmentMatrixControl` can now be imported as a stable `AlignmentMatrixControl` ([#60913](https://github.com/WordPress/gutenberg/pull/60913)).
+- Deprecate `DimensionControl`, scheduled to be removed in WordPress 7.0 ([#64951](https://github.com/WordPress/gutenberg/pull/64951)).
### Enhancements
@@ -63,14 +66,17 @@
- `TimePicker`: use ToggleGroupControl for AM/PM toggle ([#64800](https://github.com/WordPress/gutenberg/pull/64800)).
- `ColorPalette` utils: do not normalize undefined color values ([#64969](https://github.com/WordPress/gutenberg/pull/64969)).
+- `DatePicker` restore round radius for event dot ([#65031](https://github.com/WordPress/gutenberg/pull/65031)).
### Internal
+- `DropdownMenu` v2: expose CompositeTypeaheadV2 and CompositeHoverV2 via private APIs ([#64985](https://github.com/WordPress/gutenberg/pull/64985)).
- `DropdownMenu` v2: fix flashing menu item styles when using keyboard ([#64873](https://github.com/WordPress/gutenberg/pull/64873), [#64942](https://github.com/WordPress/gutenberg/pull/64942)).
- `DropdownMenu` v2: refactor to overloaded naming convention ([#64654](https://github.com/WordPress/gutenberg/pull/64654)).
- `DropdownMenu` v2: add `GroupLabel` subcomponent ([#64854](https://github.com/WordPress/gutenberg/pull/64854)).
- `DropdownMenuV2`: update animation ([#64868](https://github.com/WordPress/gutenberg/pull/64868)).
- `Composite` V2: fix Storybook docgen ([#64682](https://github.com/WordPress/gutenberg/pull/64682)).
+- `Composite` V2: add "With Slot Fill" example ([#65051](https://github.com/WordPress/gutenberg/pull/65051)).
- `Composite` V2: accept store props on top-level component ([#64832](https://github.com/WordPress/gutenberg/pull/64832)).
## 28.6.0 (2024-08-21)
diff --git a/packages/components/package.json b/packages/components/package.json
index ba943ece33340f..17209986c0f17c 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/components",
- "version": "28.6.0",
+ "version": "28.7.0",
"description": "UI components for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/components/src/composite/stories/index.story.tsx b/packages/components/src/composite/stories/index.story.tsx
index 80e3d85e3ce296..2fdec079255490 100644
--- a/packages/components/src/composite/stories/index.story.tsx
+++ b/packages/components/src/composite/stories/index.story.tsx
@@ -1,16 +1,18 @@
/**
* External dependencies
*/
-import type { Meta, StoryFn } from '@storybook/react';
+import type { Meta, StoryFn, StoryContext } from '@storybook/react';
/**
* WordPress dependencies
*/
import { isRTL } from '@wordpress/i18n';
+import { useContext, useMemo } from '@wordpress/element';
/**
* Internal dependencies
*/
+import { createSlotFill, Provider as SlotFillProvider } from '../../slot-fill';
import { Composite } from '..';
import { useCompositeStore } from '../store';
import { UseCompositeStorePlaceholder, transform } from './utils';
@@ -204,3 +206,134 @@ Typeahead.parameters = {
},
},
};
+
+const ExampleSlotFill = createSlotFill( 'Example' );
+
+const Slot = () => {
+ const compositeContext = useContext( Composite.Context );
+
+ // Forward the Slot's composite context to the Fill via fillProps, so that
+ // Composite components rendered inside the Fill can work as expected.
+ const fillProps = useMemo(
+ () => ( {
+ forwardedContext: [
+ [ Composite.Context.Provider, { value: compositeContext } ],
+ ],
+ } ),
+ [ compositeContext ]
+ );
+
+ return (
+
+ );
+};
+
+type ForwardedContextTuple< P = {} > = [
+ React.ComponentType< React.PropsWithChildren< P > >,
+ P,
+];
+
+const Fill = ( { children }: { children: React.ReactNode } ) => {
+ const innerMarkup = <>{ children }>;
+
+ return (
+
+ { ( fillProps: { forwardedContext?: ForwardedContextTuple[] } ) => {
+ const { forwardedContext = [] } = fillProps;
+
+ // Render all context providers forwarded by the Slot via fillProps.
+ return forwardedContext.reduce(
+ ( inner: JSX.Element, [ Provider, props ] ) => (
+ { inner }
+ ),
+ innerMarkup
+ );
+ } }
+
+ );
+};
+
+export const WithSlotFill: StoryFn< typeof UseCompositeStorePlaceholder > = (
+ props
+) => {
+ return (
+
+
+ Item one (direct child)
+
+ Item four (direct child)
+
+
+
+ Item two (from slot fill)
+ Item three (from slot fill)
+
+
+ );
+};
+WithSlotFill.args = {
+ ...Default.args,
+};
+WithSlotFill.parameters = {
+ docs: {
+ description: {
+ story: 'When rendering Composite components across a SlotFill, the Composite.Context should be manually forwarded from the Slot to the Fill component.',
+ },
+ source: {
+ transform: ( code: string, storyContext: StoryContext ) => {
+ return `const ExampleSlotFill = createSlotFill( 'Example' );
+
+const Slot = () => {
+ const compositeContext = useContext( Composite.Context );
+
+ // Forward the Slot's composite context to the Fill via fillProps, so that
+ // Composite components rendered inside the Fill can work as expected.
+ const fillProps = useMemo(
+ () => ( {
+ forwardedContext: [
+ [ Composite.Context.Provider, { value: compositeContext } ],
+ ],
+ } ),
+ [ compositeContext ]
+ );
+
+ return (
+
+ );
+};
+
+const Fill = ( { children } ) => {
+ const innerMarkup = <>{ children }>;
+
+ return (
+
+ { ( fillProps ) => {
+ const { forwardedContext = [] } = fillProps;
+
+ // Render all context providers forwarded by the Slot via fillProps.
+ return forwardedContext.reduce(
+ ( inner, [ Provider, props ] ) => (
+ { inner }
+ ),
+ innerMarkup
+ );
+ } }
+
+ );
+};
+
+// In a separate component:
+
+${ transform( code, storyContext ) }`;
+ },
+ },
+ },
+};
diff --git a/packages/components/src/date-time/date/styles.ts b/packages/components/src/date-time/date/styles.ts
index 8f208b53fac22a..bffc8ae35d2a64 100644
--- a/packages/components/src/date-time/date/styles.ts
+++ b/packages/components/src/date-time/date/styles.ts
@@ -107,6 +107,7 @@ export const DayButton = styled( Button, {
`
::before {
background: ${ props.isSelected ? COLORS.white : COLORS.theme.accent };
+ border-radius: ${ CONFIG.radiusRound };
bottom: 2px;
content: " ";
height: 4px;
diff --git a/packages/components/src/dimension-control/README.md b/packages/components/src/dimension-control/README.md
index 3cd0191a046068..78c1a60275c13a 100644
--- a/packages/components/src/dimension-control/README.md
+++ b/packages/components/src/dimension-control/README.md
@@ -1,5 +1,9 @@
# DimensionControl
+
+This component is deprecated.
+
+
This feature is still experimental. “Experimental” means this is an early implementation subject to drastic and breaking changes.
diff --git a/packages/components/src/dimension-control/index.tsx b/packages/components/src/dimension-control/index.tsx
index 52662f31c3f24c..25880f9b4fdb38 100644
--- a/packages/components/src/dimension-control/index.tsx
+++ b/packages/components/src/dimension-control/index.tsx
@@ -17,6 +17,7 @@ import sizesTable, { findSizeBySlug } from './sizes';
import type { DimensionControlProps, Size } from './types';
import type { SelectControlSingleSelectionProps } from '../select-control/types';
import { ContextSystemProvider } from '../context';
+import deprecated from '@wordpress/deprecated';
const CONTEXT_VALUE = {
BaseControl: {
@@ -29,7 +30,7 @@ const CONTEXT_VALUE = {
/**
* `DimensionControl` is a component designed to provide a UI to control spacing and/or dimensions.
*
- * This feature is still experimental. “Experimental” means this is an early implementation subject to drastic and breaking changes.
+ * @deprecated
*
* ```jsx
* import { __experimentalDimensionControl as DimensionControl } from '@wordpress/components';
@@ -62,6 +63,11 @@ export function DimensionControl( props: DimensionControlProps ) {
className = '',
} = props;
+ deprecated( 'wp.components.DimensionControl', {
+ since: '6.7',
+ version: '7.0',
+ } );
+
const onChangeSpacingSize: SelectControlSingleSelectionProps[ 'onChange' ] =
( val ) => {
const theSize = findSizeBySlug( sizes, val );
diff --git a/packages/components/src/dimension-control/stories/index.story.tsx b/packages/components/src/dimension-control/stories/index.story.tsx
index 3a6da44f461164..15a63fcf6ccf6c 100644
--- a/packages/components/src/dimension-control/stories/index.story.tsx
+++ b/packages/components/src/dimension-control/stories/index.story.tsx
@@ -13,9 +13,15 @@ import sizes from '../sizes';
*/
import { desktop, tablet, mobile } from '@wordpress/icons';
+/**
+ * `DimensionControl` is a component designed to provide a UI to control spacing and/or dimensions.
+ *
+ * This component is deprecated.
+ */
const meta: Meta< typeof DimensionControl > = {
component: DimensionControl,
- title: 'Components (Experimental)/DimensionControl',
+ title: 'Components (Deprecated)/DimensionControl',
+ id: 'components-dimensioncontrol',
argTypes: {
onChange: { action: 'onChange' },
value: { control: { type: null } },
@@ -42,7 +48,6 @@ const Template: StoryFn< typeof DimensionControl > = ( args ) => (
);
export const Default = Template.bind( {} );
-
Default.args = {
__nextHasNoMarginBottom: true,
label: 'Please select a size',
diff --git a/packages/components/src/dimension-control/test/index.test.js b/packages/components/src/dimension-control/test/index.test.js
index 1b34d2983ad0f1..14f1c509f70cf9 100644
--- a/packages/components/src/dimension-control/test/index.test.js
+++ b/packages/components/src/dimension-control/test/index.test.js
@@ -31,6 +31,7 @@ describe( 'DimensionControl', () => {
const { container } = render(
);
+ expect( console ).toHaveWarned();
expect( container ).toMatchSnapshot();
} );
diff --git a/packages/components/src/private-apis.ts b/packages/components/src/private-apis.ts
index fa9fece048617e..7bcab0e052e022 100644
--- a/packages/components/src/private-apis.ts
+++ b/packages/components/src/private-apis.ts
@@ -18,6 +18,8 @@ lock( privateApis, {
CompositeGroupV2: Composite.Group,
CompositeItemV2: Composite.Item,
CompositeRowV2: Composite.Row,
+ CompositeTypeaheadV2: Composite.Typeahead,
+ CompositeHoverV2: Composite.Hover,
useCompositeStoreV2: useCompositeStore,
__experimentalPopoverLegacyPositionToPlacement,
createPrivateSlotFill,
diff --git a/packages/compose/CHANGELOG.md b/packages/compose/CHANGELOG.md
index 951f70604f41c6..2683fe8d79be70 100644
--- a/packages/compose/CHANGELOG.md
+++ b/packages/compose/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.7.0 (2024-09-05)
+
## 7.6.0 (2024-08-21)
## 7.5.0 (2024-08-07)
diff --git a/packages/compose/package.json b/packages/compose/package.json
index 92b3085e585755..4b68841d1777e6 100644
--- a/packages/compose/package.json
+++ b/packages/compose/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/compose",
- "version": "7.6.0",
+ "version": "7.7.0",
"description": "WordPress higher-order components (HOCs).",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/core-commands/CHANGELOG.md b/packages/core-commands/CHANGELOG.md
index 16bf8c495eb03c..02871d4f31e135 100644
--- a/packages/core-commands/CHANGELOG.md
+++ b/packages/core-commands/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.7.0 (2024-09-05)
+
## 1.6.0 (2024-08-21)
## 1.5.0 (2024-08-07)
diff --git a/packages/core-commands/package.json b/packages/core-commands/package.json
index 02b8b76b4f145e..bae1e4c211cf0b 100644
--- a/packages/core-commands/package.json
+++ b/packages/core-commands/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/core-commands",
- "version": "1.6.0",
+ "version": "1.7.0",
"description": "WordPress core reusable commands.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/core-data/CHANGELOG.md b/packages/core-data/CHANGELOG.md
index caed77084733bf..6286a55291a54f 100644
--- a/packages/core-data/CHANGELOG.md
+++ b/packages/core-data/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.7.0 (2024-09-05)
+
## 7.6.0 (2024-08-21)
## 7.5.0 (2024-08-07)
diff --git a/packages/core-data/package.json b/packages/core-data/package.json
index e96f3247086073..ddb2d2ef091778 100644
--- a/packages/core-data/package.json
+++ b/packages/core-data/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/core-data",
- "version": "7.6.0",
+ "version": "7.7.0",
"description": "Access to and manipulation of core WordPress entities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/create-block-interactive-template/CHANGELOG.md b/packages/create-block-interactive-template/CHANGELOG.md
index 52f97a68cbf87a..c044dfff15e3ac 100644
--- a/packages/create-block-interactive-template/CHANGELOG.md
+++ b/packages/create-block-interactive-template/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.7.0 (2024-09-05)
+
### Enhancements
- Set the minimum supported WordPress version to 6.6 to make it work seamlessly with the latest version of `@wordpress/scripts` package ([#64920](https://github.com/WordPress/gutenberg/pull/64920)).
diff --git a/packages/create-block-interactive-template/package.json b/packages/create-block-interactive-template/package.json
index 848cd757652150..667d3998ba820d 100644
--- a/packages/create-block-interactive-template/package.json
+++ b/packages/create-block-interactive-template/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/create-block-interactive-template",
- "version": "2.6.0",
+ "version": "2.7.0",
"description": "Template for @wordpress/create-block to create interactive blocks with the Interactivity API.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/create-block-tutorial-template/CHANGELOG.md b/packages/create-block-tutorial-template/CHANGELOG.md
index 50290a8e07e90e..0fe0f748b8804d 100644
--- a/packages/create-block-tutorial-template/CHANGELOG.md
+++ b/packages/create-block-tutorial-template/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.7.0 (2024-09-05)
+
### Enhancements
- Set the minimum supported WordPress version to 6.6 to make it work seamlessly with the latest version of `@wordpress/scripts` package ([#64920](https://github.com/WordPress/gutenberg/pull/64920)).
diff --git a/packages/create-block-tutorial-template/package.json b/packages/create-block-tutorial-template/package.json
index 0d9baf39d8db80..64a8a90bc167c0 100644
--- a/packages/create-block-tutorial-template/package.json
+++ b/packages/create-block-tutorial-template/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/create-block-tutorial-template",
- "version": "4.6.0",
+ "version": "4.7.0",
"description": "This is a template for @wordpress/create-block that creates an example 'Copyright Date' block. This block is used in the official WordPress block development Quick Start Guide.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/create-block/CHANGELOG.md b/packages/create-block/CHANGELOG.md
index 3f742b352614e0..99e7b1fd37a33a 100644
--- a/packages/create-block/CHANGELOG.md
+++ b/packages/create-block/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.50.0 (2024-09-05)
+
### Enhancements
- Unpin the `@wordpress/scripts` version and set the minimum supported WordPress version to 6.6 ([#64920](https://github.com/WordPress/gutenberg/pull/64920)).
diff --git a/packages/create-block/package.json b/packages/create-block/package.json
index 7548fca1532f07..2103a85c5894f2 100644
--- a/packages/create-block/package.json
+++ b/packages/create-block/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/create-block",
- "version": "4.49.0",
+ "version": "4.50.0",
"description": "Generates PHP, JS and CSS code for registering a block for a WordPress plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/customize-widgets/CHANGELOG.md b/packages/customize-widgets/CHANGELOG.md
index aeec00430f47d1..4e0d5a37553577 100644
--- a/packages/customize-widgets/CHANGELOG.md
+++ b/packages/customize-widgets/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.7.0 (2024-09-05)
+
## 5.6.0 (2024-08-21)
## 5.5.0 (2024-08-07)
diff --git a/packages/customize-widgets/package.json b/packages/customize-widgets/package.json
index 9c8c0a79b771ab..a8b50cf9cb318c 100644
--- a/packages/customize-widgets/package.json
+++ b/packages/customize-widgets/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/customize-widgets",
- "version": "5.6.1",
+ "version": "5.7.0",
"description": "Widgets blocks in Customizer Module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/data-controls/CHANGELOG.md b/packages/data-controls/CHANGELOG.md
index ae38ef764c535d..e6af7fdcb6e240 100644
--- a/packages/data-controls/CHANGELOG.md
+++ b/packages/data-controls/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.7.0 (2024-09-05)
+
## 4.6.0 (2024-08-21)
## 4.5.0 (2024-08-07)
diff --git a/packages/data-controls/package.json b/packages/data-controls/package.json
index 216f4000adff8e..e97e59b74700cd 100644
--- a/packages/data-controls/package.json
+++ b/packages/data-controls/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/data-controls",
- "version": "4.6.0",
+ "version": "4.7.0",
"description": "A set of common controls for the @wordpress/data api.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/data/CHANGELOG.md b/packages/data/CHANGELOG.md
index 52b88a1c5d4297..4ba90611c2a787 100644
--- a/packages/data/CHANGELOG.md
+++ b/packages/data/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 10.7.0 (2024-09-05)
+
## 10.6.0 (2024-08-21)
## 10.5.0 (2024-08-07)
diff --git a/packages/data/package.json b/packages/data/package.json
index fb27caaf37798f..84ad7a7973bc49 100644
--- a/packages/data/package.json
+++ b/packages/data/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/data",
- "version": "10.6.0",
+ "version": "10.7.0",
"description": "Data module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dataviews/CHANGELOG.md b/packages/dataviews/CHANGELOG.md
index bf93b9e52f657a..1e323714c4d5f7 100644
--- a/packages/dataviews/CHANGELOG.md
+++ b/packages/dataviews/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.3.0 (2024-09-05)
+
## 4.2.0 (2024-08-21)
## New features
diff --git a/packages/dataviews/package.json b/packages/dataviews/package.json
index e02c0a624aa41c..e327a217435c52 100644
--- a/packages/dataviews/package.json
+++ b/packages/dataviews/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/dataviews",
- "version": "4.2.0",
+ "version": "4.3.0",
"description": "DataViews is a component that provides an API to render datasets using different types of layouts (table, grid, list, etc.).",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dataviews/src/components/dataviews-filters/search-widget.tsx b/packages/dataviews/src/components/dataviews-filters/search-widget.tsx
index 1b369222b8f28c..24ef3b5594b413 100644
--- a/packages/dataviews/src/components/dataviews-filters/search-widget.tsx
+++ b/packages/dataviews/src/components/dataviews-filters/search-widget.tsx
@@ -8,6 +8,7 @@ import removeAccents from 'remove-accents';
/**
* WordPress dependencies
*/
+import { useInstanceId } from '@wordpress/compose';
import { __, sprintf } from '@wordpress/i18n';
import { useState, useMemo, useDeferredValue } from '@wordpress/element';
import {
@@ -27,7 +28,8 @@ import type { Filter, NormalizedFilter, View } from '../../types';
const {
CompositeV2: Composite,
CompositeItemV2: CompositeItem,
- useCompositeStoreV2: useCompositeStore,
+ CompositeHoverV2: CompositeHover,
+ CompositeTypeaheadV2: CompositeTypeahead,
} = unlock( componentsPrivateApis );
interface SearchWidgetProps {
@@ -84,22 +86,37 @@ const getNewValue = (
return [ value ];
};
+function generateFilterElementCompositeItemId(
+ prefix: string,
+ filterElementValue: string
+) {
+ return `${ prefix }-${ filterElementValue }`;
+}
+
function ListBox( { view, filter, onChangeView }: SearchWidgetProps ) {
- const compositeStore = useCompositeStore( {
- virtualFocus: true,
- focusLoop: true,
- // When we have no or just one operator, we can set the first item as active.
- // We do that by passing `undefined` to `defaultActiveId`. Otherwise, we set it to `null`,
- // so the first item is not selected, since the focus is on the operators control.
- defaultActiveId: filter.operators?.length === 1 ? undefined : null,
- } );
+ const baseId = useInstanceId( ListBox, 'dataviews-filter-list-box' );
+
+ const [ activeCompositeId, setActiveCompositeId ] = useState<
+ string | null | undefined
+ >(
+ // When there are one or less operators, the first item is set as active
+ // (by setting the initial `activeId` to `undefined`).
+ // With 2 or more operators, the focus is moved on the operators control
+ // (by setting the initial `activeId` to `null`), meaning that there won't
+ // be an active item initially. Focus is then managed via the
+ // `onFocusVisible` callback.
+ filter.operators?.length === 1 ? undefined : null
+ );
const currentFilter = view.filters?.find(
( f ) => f.field === filter.field
);
const currentValue = getCurrentValue( filter, currentFilter );
return (
{
- if ( ! compositeStore.getState().activeId ) {
- compositeStore.move( compositeStore.first() );
+ // `onFocusVisible` needs the `Composite` component to be focusable,
+ // which is implicitly achieved via the `virtualFocus: true` option
+ // in the `useCompositeStore` hook.
+ if ( ! activeCompositeId && filter.elements.length ) {
+ setActiveCompositeId(
+ generateFilterElementCompositeItemId(
+ baseId,
+ filter.elements[ 0 ].value
+ )
+ );
}
} }
- render={ }
+ render={ }
>
{ filter.elements.map( ( element ) => (
-
{ element.label }
-
+
) ) }
);
diff --git a/packages/dataviews/src/components/dataviews-filters/style.scss b/packages/dataviews/src/components/dataviews-filters/style.scss
index f2841c16f0fec4..ad834fb224e2e4 100644
--- a/packages/dataviews/src/components/dataviews-filters/style.scss
+++ b/packages/dataviews/src/components/dataviews-filters/style.scss
@@ -169,7 +169,7 @@
display: flex;
align-items: center;
gap: $grid-unit-10;
- border-radius: $radius-block-ui;
+ border-radius: $radius-small;
box-sizing: border-box;
padding: $grid-unit-10 $grid-unit-15;
cursor: default;
diff --git a/packages/dataviews/src/components/dataviews-view-config/index.tsx b/packages/dataviews/src/components/dataviews-view-config/index.tsx
index 331d0d62dca00a..c01c72d2ebc699 100644
--- a/packages/dataviews/src/components/dataviews-view-config/index.tsx
+++ b/packages/dataviews/src/components/dataviews-view-config/index.tsx
@@ -38,8 +38,13 @@ import {
sortIcons,
sortLabels,
} from '../../constants';
-import { VIEW_LAYOUTS, getMandatoryFields } from '../../dataviews-layouts';
-import type { NormalizedField, SupportedLayouts, View } from '../../types';
+import {
+ VIEW_LAYOUTS,
+ getNotHidableFieldIds,
+ getVisibleFieldIds,
+ getHiddenFieldIds,
+} from '../../dataviews-layouts';
+import type { SupportedLayouts, View, Field } from '../../types';
import DataViewsContext from '../dataviews-context';
import { unlock } from '../../lock-unlock';
import DensityPicker from '../../dataviews-layouts/grid/density-picker';
@@ -232,50 +237,34 @@ function ItemsPerPageControl() {
);
}
+interface FieldItemProps {
+ id: any;
+ label: string;
+ index: number;
+ isVisible: boolean;
+ isHidable: boolean;
+}
+
function FieldItem( {
+ field: { id, label, index, isVisible, isHidable },
fields,
- fieldId,
- mandatoryFields,
- viewFields,
view,
onChangeView,
}: {
- fields: NormalizedField< any >[];
- fieldId: string;
- mandatoryFields: string | any[];
- viewFields: string[];
+ field: FieldItemProps;
+ fields: Field< any >[];
view: View;
onChangeView: ( view: View ) => void;
} ) {
- let fieldLabel;
- let fieldIsHidable;
- const fieldObject = fields.find(
- ( f ) => f.id === fieldId
- ) as NormalizedField< any >;
- if ( fieldObject ) {
- fieldLabel = fieldObject.label;
- fieldIsHidable =
- fieldObject.enableHiding !== false &&
- ! mandatoryFields.includes( fieldId );
- } else if ( view.type === LAYOUT_TABLE ) {
- const combinedFieldObject = view.layout?.combinedFields?.find(
- ( f ) => f.id === fieldId
- );
- if ( combinedFieldObject ) {
- fieldLabel = combinedFieldObject.label;
- fieldIsHidable = ! mandatoryFields.includes( fieldId );
- }
- }
+ const visibleFieldIds = getVisibleFieldIds( view, fields );
- const index = view.fields?.indexOf( fieldId ) as number;
- const isVisible = viewFields.includes( fieldId );
return (
-
-
+
-
- { fieldLabel }
+ { label }