From a710b97e7c7463d663664f7266ce6d72eb95238c Mon Sep 17 00:00:00 2001 From: Bernie Reiter Date: Tue, 27 Jun 2023 14:20:18 +0000 Subject: [PATCH] Editor: update Wordpress npm packages. Updates the wordpress npm packages and their dependencies to the latest versions, as well as auto-updates to relevant core PHP files. Props youknowriad, joemcgill, spacedmonkey, ramonopoly, peterwilsoncc, bernhard-reiter, tyxla, dmsnell. Fixes #58623. git-svn-id: https://develop.svn.wordpress.org/trunk@56065 602fd350-edb4-49c9-b593-d223f7449a82 --- Gruntfile.js | 16 +- package-lock.json | 9874 +++++++++++------ package.json | 130 +- .../assets/script-loader-packages.min.php | 2 +- src/wp-includes/blocks/archives/block.json | 2 +- src/wp-includes/blocks/audio/block.json | 2 +- src/wp-includes/blocks/avatar.php | 130 +- src/wp-includes/blocks/avatar/block.json | 4 +- src/wp-includes/blocks/block/block.json | 4 +- src/wp-includes/blocks/blocks-json.php | 5881 +++++++++- src/wp-includes/blocks/button/block.json | 25 +- src/wp-includes/blocks/buttons/block.json | 5 +- src/wp-includes/blocks/calendar/block.json | 2 +- src/wp-includes/blocks/categories/block.json | 2 +- src/wp-includes/blocks/code/block.json | 3 +- src/wp-includes/blocks/column/block.json | 9 +- src/wp-includes/blocks/columns/block.json | 11 +- .../blocks/comment-author-name/block.json | 2 +- .../blocks/comment-content/block.json | 2 +- .../blocks/comment-date/block.json | 2 +- .../blocks/comment-edit-link/block.json | 2 +- .../blocks/comment-reply-link/block.json | 2 +- src/wp-includes/blocks/comment-template.php | 25 +- .../blocks/comment-template/block.json | 2 +- .../blocks/comments-pagination-next.php | 2 +- .../comments-pagination-next/block.json | 2 +- .../comments-pagination-numbers/block.json | 2 +- .../blocks/comments-pagination-previous.php | 2 +- .../comments-pagination-previous/block.json | 2 +- .../blocks/comments-pagination/block.json | 4 +- .../blocks/comments-title/block.json | 2 +- src/wp-includes/blocks/comments.php | 8 +- src/wp-includes/blocks/comments/block.json | 4 +- src/wp-includes/blocks/cover.php | 27 +- src/wp-includes/blocks/cover/block.json | 28 +- src/wp-includes/blocks/details/block.json | 55 + src/wp-includes/blocks/embed/block.json | 7 +- src/wp-includes/blocks/file.php | 54 +- src/wp-includes/blocks/file/block.json | 13 +- src/wp-includes/blocks/file/view.asset.php | 2 +- .../blocks/file/view.min.asset.php | 2 +- src/wp-includes/blocks/footnotes.php | 78 + src/wp-includes/blocks/footnotes/block.json | 18 + src/wp-includes/blocks/freeform/block.json | 4 +- src/wp-includes/blocks/gallery/block.json | 4 +- src/wp-includes/blocks/group/block.json | 7 +- src/wp-includes/blocks/heading/block.json | 2 +- src/wp-includes/blocks/home-link.php | 4 +- src/wp-includes/blocks/home-link/block.json | 2 +- src/wp-includes/blocks/html/block.json | 2 +- src/wp-includes/blocks/image.php | 18 +- src/wp-includes/blocks/image/block.json | 22 +- .../blocks/latest-comments/block.json | 15 +- src/wp-includes/blocks/latest-posts.php | 8 + .../blocks/latest-posts/block.json | 2 +- .../blocks/legacy-widget/block.json | 2 +- src/wp-includes/blocks/list-item/block.json | 2 +- src/wp-includes/blocks/list/block.json | 2 +- src/wp-includes/blocks/loginout/block.json | 14 +- src/wp-includes/blocks/media-text/block.json | 7 +- src/wp-includes/blocks/missing/block.json | 2 +- src/wp-includes/blocks/more/block.json | 2 +- src/wp-includes/blocks/navigation-link.php | 3 +- .../blocks/navigation-link/block.json | 2 +- src/wp-includes/blocks/navigation-submenu.php | 106 +- .../blocks/navigation-submenu/block.json | 2 +- src/wp-includes/blocks/navigation.php | 627 +- src/wp-includes/blocks/navigation/block.json | 5 +- .../blocks/navigation/view-modal.asset.php | 2 +- .../navigation/view-modal.min.asset.php | 2 +- .../blocks/navigation/view.asset.php | 2 +- .../blocks/navigation/view.min.asset.php | 2 +- src/wp-includes/blocks/nextpage/block.json | 2 +- src/wp-includes/blocks/page-list-item.php | 14 + .../blocks/page-list-item/block.json | 2 +- src/wp-includes/blocks/page-list.php | 8 +- src/wp-includes/blocks/page-list/block.json | 2 +- src/wp-includes/blocks/paragraph/block.json | 8 +- src/wp-includes/blocks/pattern.php | 1 + src/wp-includes/blocks/pattern/block.json | 4 +- .../blocks/post-author-biography/block.json | 2 +- .../blocks/post-author-name/block.json | 2 +- src/wp-includes/blocks/post-author.php | 2 +- src/wp-includes/blocks/post-author/block.json | 3 +- .../blocks/post-comments-form/block.json | 2 +- .../blocks/post-content/block.json | 4 +- src/wp-includes/blocks/post-date.php | 25 +- src/wp-includes/blocks/post-date/block.json | 2 +- src/wp-includes/blocks/post-excerpt.php | 33 +- .../blocks/post-excerpt/block.json | 10 +- .../blocks/post-featured-image.php | 34 +- .../blocks/post-featured-image/block.json | 5 +- .../blocks/post-navigation-link/block.json | 2 +- src/wp-includes/blocks/post-template.php | 24 +- .../blocks/post-template/block.json | 16 +- src/wp-includes/blocks/post-terms.php | 5 +- src/wp-includes/blocks/post-terms/block.json | 2 +- src/wp-includes/blocks/post-title.php | 8 +- src/wp-includes/blocks/post-title/block.json | 4 +- .../blocks/preformatted/block.json | 2 +- src/wp-includes/blocks/pullquote/block.json | 2 +- .../blocks/query-no-results/block.json | 2 +- .../blocks/query-pagination-next.php | 9 +- .../blocks/query-pagination-next/block.json | 4 +- .../query-pagination-numbers/block.json | 4 +- .../blocks/query-pagination-previous.php | 9 +- .../query-pagination-previous/block.json | 4 +- .../blocks/query-pagination/block.json | 11 +- src/wp-includes/blocks/query-title.php | 7 +- src/wp-includes/blocks/query-title/block.json | 2 +- src/wp-includes/blocks/query/block.json | 10 +- src/wp-includes/blocks/quote/block.json | 3 +- src/wp-includes/blocks/read-more/block.json | 2 +- .../blocks/require-dynamic-blocks.php | 2 + .../blocks/require-static-blocks.php | 2 +- src/wp-includes/blocks/rss/block.json | 2 +- src/wp-includes/blocks/search.php | 103 +- src/wp-includes/blocks/search/block.json | 10 +- src/wp-includes/blocks/separator/block.json | 2 +- src/wp-includes/blocks/shortcode/block.json | 4 +- src/wp-includes/blocks/site-logo.php | 11 +- src/wp-includes/blocks/site-logo/block.json | 4 +- .../blocks/site-tagline/block.json | 2 +- src/wp-includes/blocks/site-title/block.json | 2 +- src/wp-includes/blocks/social-link.php | 39 +- src/wp-includes/blocks/social-link/block.json | 4 +- .../blocks/social-links/block.json | 6 +- src/wp-includes/blocks/spacer/block.json | 2 +- src/wp-includes/blocks/table/block.json | 2 +- src/wp-includes/blocks/tag-cloud/block.json | 2 +- src/wp-includes/blocks/template-part.php | 67 +- .../blocks/template-part/block.json | 2 +- .../blocks/term-description/block.json | 5 +- .../blocks/text-columns/block.json | 2 +- src/wp-includes/blocks/verse/block.json | 8 +- src/wp-includes/blocks/video/block.json | 2 +- .../blocks/widget-group/block.json | 2 +- src/wp-includes/load.php | 18 +- .../data/blocks/fixtures/core__cover.html | 2 +- .../data/blocks/fixtures/core__cover.json | 2 +- .../blocks/fixtures/core__cover.parsed.json | 4 +- .../blocks/fixtures/core__cover.server.html | 2 +- .../fixtures/core__cover__video-overlay.html | 2 +- .../fixtures/core__cover__video-overlay.json | 2 +- .../core__cover__video-overlay.parsed.json | 4 +- .../core__cover__video-overlay.server.html | 2 +- .../blocks/fixtures/core__cover__video.html | 2 +- .../blocks/fixtures/core__cover__video.json | 2 +- .../fixtures/core__cover__video.parsed.json | 4 +- .../fixtures/core__cover__video.server.html | 2 +- .../core__gallery__deprecated-7.server.html | 12 +- .../includes/unregister-blocks-hooks.php | 2 + tests/phpunit/tests/media.php | 1 + tests/phpunit/tests/theme/wpThemeJson.php | 4 +- 154 files changed, 13628 insertions(+), 4348 deletions(-) create mode 100644 src/wp-includes/blocks/details/block.json create mode 100644 src/wp-includes/blocks/footnotes.php create mode 100644 src/wp-includes/blocks/footnotes/block.json create mode 100644 src/wp-includes/blocks/page-list-item.php diff --git a/Gruntfile.js b/Gruntfile.js index 1b80ddd87e..915043bc18 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1147,7 +1147,7 @@ module.exports = function(grunt) { options: { patterns: [ { - match: new RegExp( '//# sourceMappingURL=.*\\s*' ), + match: new RegExp( '\/\/# sourceMappingURL=.*\\s*', 'g' ), replacement: '' } ] @@ -1160,6 +1160,14 @@ module.exports = function(grunt) { BUILD_DIR + 'wp-includes/js/underscore.js' ], dest: BUILD_DIR + 'wp-includes/js/' + }, + { + expand: true, + flatten: true, + src: [ + BUILD_DIR + 'wp-includes/js/dist/block-editor.js', + ], + dest: BUILD_DIR + 'wp-includes/js/dist/' } ] } @@ -1459,7 +1467,11 @@ module.exports = function(grunt) { } ); grunt.file.write( SOURCE_DIR + 'wp-includes/blocks/blocks-json.php', - '=1.7.0" } }, - "js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -16977,7 +19561,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, "jsdoc": { @@ -17085,44 +19669,49 @@ "dev": true }, "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", "dev": true, "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" }, "dependencies": { + "acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "dev": true + }, "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "requires": { "asynckit": "^0.4.0", @@ -17130,31 +19719,46 @@ "mime-types": "^2.1.12" } }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, "requires": { "punycode": "^2.1.1" } }, "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true }, "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" } + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true } } }, @@ -17270,7 +19874,7 @@ "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", "dev": true, "optional": true }, @@ -17294,7 +19898,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "json2php": { @@ -17403,7 +20007,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -17442,6 +20046,16 @@ "language-subtag-registry": "~0.3.2" } }, + "launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -17492,7 +20106,7 @@ "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, "requires": { "homedir-polyfill": "^1.0.1" @@ -17533,7 +20147,7 @@ "global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, "requires": { "expand-tilde": "^2.0.2", @@ -17549,6 +20163,15 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -17568,7 +20191,7 @@ "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, "requires": { "expand-tilde": "^2.0.0", @@ -17632,7 +20255,7 @@ "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "dev": true, "optional": true, "requires": { @@ -17646,7 +20269,7 @@ "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, "optional": true, "requires": { @@ -17656,14 +20279,14 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "optional": true, "requires": { @@ -17712,19 +20335,19 @@ "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "dev": true }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, "lodash.merge": { @@ -17742,7 +20365,7 @@ "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, "log-symbols": { @@ -17809,7 +20432,7 @@ "logalot": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", + "integrity": "sha512-Ah4CgdSRfeCJagxQhcVNMi9BfGYyEKLa6d7OA6xSbld/Hg3Cf2QiOa1mDpmG7Ve8LOH6DN3mdttzjQAvWTyVkw==", "dev": true, "optional": true, "requires": { @@ -17820,7 +20443,7 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", "dev": true, "optional": true }, @@ -17835,7 +20458,7 @@ "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", "dev": true, "optional": true, "requires": { @@ -17861,7 +20484,7 @@ "lpad-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", + "integrity": "sha512-MMIcFmmR9zlGZtBcFOows6c2COMekHCIFJz3ew/rRpKZ1wR4mXDPzvcVqLarux8M33X4TPSq2Jdw8WJj0q0KbQ==", "dev": true, "optional": true, "requires": { @@ -17874,7 +20497,7 @@ "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", "dev": true, "optional": true } @@ -17934,7 +20557,7 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true }, "map-obj": { @@ -17946,13 +20569,13 @@ "map-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-values/-/map-values-1.0.1.tgz", - "integrity": "sha1-douOecAJvytk/ugG4ip7HEGQyZA=", + "integrity": "sha512-BbShUnr5OartXJe1GeccAWtfro11hhgNJg6G9/UtWKjVGvV5U4C09cg5nk8JUevhXODaXY+hQ3xxMUKSs62ONQ==", "dev": true }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, "requires": { "object-visit": "^1.0.0" @@ -18087,7 +20710,7 @@ "matchdep": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", "dev": true, "requires": { "findup-sync": "^2.0.0", @@ -18099,7 +20722,7 @@ "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, "requires": { "homedir-polyfill": "^1.0.1" @@ -18108,7 +20731,7 @@ "findup-sync": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", "dev": true, "requires": { "detect-file": "^1.0.0", @@ -18131,7 +20754,7 @@ "global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, "requires": { "expand-tilde": "^2.0.2", @@ -18144,7 +20767,7 @@ "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "dev": true, "requires": { "is-extglob": "^2.1.0" @@ -18153,7 +20776,7 @@ "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, "requires": { "expand-tilde": "^2.0.0", @@ -18269,7 +20892,7 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "media-typer": { @@ -18279,18 +20902,18 @@ "dev": true }, "memfs": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz", - "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "requires": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" } }, "memize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/memize/-/memize-1.1.0.tgz", - "integrity": "sha512-K4FcPETOMTwe7KL2LK0orMhpOmWD2wRGwWWpbZy0fyArwsyIKR8YJVz8+efBAh3BO4zPqlSICu4vsLTRRqtFAg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/memize/-/memize-2.1.0.tgz", + "integrity": "sha512-yywVJy8ctVlN5lNPxsep5urnZ6TTclwPEyigM9M3Bi8vseJBOfqNrGWN/r8NzuIt3PovM323W04blJfGQfQSVg==" }, "meow": { "version": "3.7.0", @@ -18420,9 +21043,9 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz", - "integrity": "sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==", + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", "dev": true, "requires": { "schema-utils": "^4.0.0" @@ -18456,15 +21079,15 @@ "dev": true }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } } } @@ -18526,6 +21149,17 @@ "dev": true, "requires": { "is-plain-object": "^2.0.4" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } } } @@ -18577,11 +21211,11 @@ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "moment-timezone": { - "version": "0.5.40", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.40.tgz", - "integrity": "sha512-tWfmNkRYmBkPJz5mr9GVDn9vRlVZOTe6yqY92rFxiOdWXbjaR0+9LwQnZGGuNR63X456NqmEkbskte8tWL5ePg==", + "version": "0.5.43", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz", + "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==", "requires": { - "moment": ">= 2.9.0" + "moment": "^2.29.4" } }, "mousetrap": { @@ -18614,7 +21248,7 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "dev": true }, "nanoid": { @@ -18790,7 +21424,7 @@ "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, "requires": { "abbrev": "1" @@ -18825,7 +21459,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "normalize-url": { @@ -18862,7 +21496,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true } @@ -19064,9 +21698,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -19147,9 +21781,9 @@ } }, "nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz", + "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", "dev": true }, "oauth-sign": { @@ -19161,12 +21795,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -19177,7 +21811,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -19188,7 +21822,7 @@ "object-filter": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz", - "integrity": "sha1-rwt5f/6+r4pSxmN87b6IFs/sG8g=", + "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==", "dev": true }, "object-inspect": { @@ -19197,28 +21831,6 @@ "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", "dev": true }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "dependencies": { - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - } - } - }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -19228,7 +21840,7 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, "requires": { "isobject": "^3.0.0" @@ -19250,7 +21862,7 @@ "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", "dev": true, "requires": { "array-each": "^1.0.1", @@ -19262,7 +21874,7 @@ "for-own": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", "dev": true, "requires": { "for-in": "^1.0.1" @@ -19302,18 +21914,18 @@ } }, "es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "dev": true, "requires": { + "array-buffer-byte-length": "^1.0.0", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -19321,8 +21933,8 @@ "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", @@ -19330,11 +21942,12 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", "typed-array-length": "^1.0.4", @@ -19343,13 +21956,14 @@ }, "dependencies": { "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" } } @@ -19457,18 +22071,18 @@ } }, "es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "dev": true, "requires": { + "array-buffer-byte-length": "^1.0.0", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -19476,8 +22090,8 @@ "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", @@ -19485,11 +22099,12 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", "typed-array-length": "^1.0.4", @@ -19498,13 +22113,14 @@ }, "dependencies": { "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" } } @@ -19646,18 +22262,18 @@ } }, "es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "dev": true, "requires": { + "array-buffer-byte-length": "^1.0.0", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -19665,8 +22281,8 @@ "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", @@ -19674,11 +22290,12 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", "typed-array-length": "^1.0.4", @@ -19687,13 +22304,14 @@ } }, "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" } }, @@ -19770,7 +22388,7 @@ "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", "dev": true, "requires": { "for-own": "^1.0.0", @@ -19780,7 +22398,7 @@ "for-own": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", "dev": true, "requires": { "for-in": "^1.0.1" @@ -19791,7 +22409,7 @@ "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -19867,7 +22485,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -19938,13 +22556,13 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "osenv": { @@ -19960,7 +22578,7 @@ "outlayer": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", - "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", + "integrity": "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==", "requires": { "ev-emitter": "^1.0.0", "fizzy-ui-utils": "^2.0.0", @@ -19983,7 +22601,7 @@ "p-event": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", - "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", + "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==", "dev": true, "optional": true, "requires": { @@ -19993,14 +22611,14 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, "optional": true }, "p-is-promise": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", "dev": true, "optional": true }, @@ -20029,7 +22647,7 @@ "p-map-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", - "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", + "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==", "dev": true, "optional": true, "requires": { @@ -20039,13 +22657,13 @@ "p-pipe": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", - "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", + "integrity": "sha512-IA8SqjIGA8l9qOksXJvsvkeQ+VGb0TAzNCzvKvz9wt5wWLqfWbV6fXy43gpR2L4Te8sOq3S+Ql9biAaMKPdbtw==", "dev": true }, "p-reduce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==", "dev": true, "optional": true }, @@ -20062,7 +22680,7 @@ "p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", "dev": true, "optional": true, "requires": { @@ -20094,7 +22712,7 @@ "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", "dev": true, "requires": { "is-absolute": "^1.0.0", @@ -20116,20 +22734,31 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true }, "parse-srcset": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", "dev": true }, "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + }, + "dependencies": { + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + } + } }, "parseurl": { "version": "1.3.3", @@ -20149,7 +22778,7 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true }, "path-case": { @@ -20164,7 +22793,7 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true }, "path-exists": { @@ -20175,7 +22804,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-is-inside": { @@ -20199,7 +22828,7 @@ "path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", "dev": true, "requires": { "path-root-regex": "^0.1.0" @@ -20208,14 +22837,13 @@ "path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", "dev": true }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" }, "path-type": { "version": "4.0.0", @@ -20225,13 +22853,13 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, "picocolors": { @@ -20255,22 +22883,22 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" } }, "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true }, "pixelmatch": { @@ -20397,7 +23025,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true }, "postcss": { @@ -20517,9 +23145,9 @@ }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -20676,9 +23304,9 @@ "dev": true }, "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, "requires": { "icss-utils": "^5.0.0", @@ -21033,6 +23661,11 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "preact": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.15.1.tgz", + "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==" + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -21042,7 +23675,7 @@ "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", "dev": true, "optional": true }, @@ -21068,22 +23701,16 @@ "dev": true }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.4.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", @@ -21091,9 +23718,9 @@ "dev": true }, "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true } } @@ -21137,7 +23764,7 @@ "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true, "optional": true }, @@ -21173,7 +23800,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, "psl": { @@ -21297,10 +23924,16 @@ } } }, + "pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true, "optional": true }, @@ -21426,9 +24059,9 @@ } }, "react-easy-crop": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-4.7.4.tgz", - "integrity": "sha512-oDi1375Jo/zuPUvo3oauxnNbfy8L4wsbmHD1KB2vT55fdgu+q8/K0w/rDWzy9jz4jfQ94Q9+3Yu366sDDFVmiA==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-4.7.5.tgz", + "integrity": "sha512-qKfI4PuhaH1jOLC3DQfQB0cE0z+3N7bfyPkPejQmylXNb8nstfPMH+oHj3gKgpBHLFUiQp/C1rY7sVCVgtjn3Q==", "requires": { "normalize-wheel": "^1.0.1", "tslib": "2.0.1" @@ -21452,6 +24085,37 @@ "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==", "dev": true }, + "react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "requires": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + }, + "react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "requires": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + } + }, + "react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "requires": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + } + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -21668,14 +24332,14 @@ } }, "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" }, "dependencies": { "call-bind": { @@ -21687,19 +24351,23 @@ "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" } + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } } } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "regexpu-core": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", - "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "requires": { "@babel/regjsgen": "^0.8.0", @@ -21746,13 +24414,13 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "dev": true, "optional": true, "requires": { @@ -21912,19 +24580,19 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "dev": true }, "resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dev": true, "optional": true, "requires": { @@ -21934,7 +24602,7 @@ "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "requires": { "onetime": "^2.0.0", @@ -21950,7 +24618,7 @@ "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -22029,7 +24697,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true } } @@ -22041,14 +24709,14 @@ "dev": true }, "run-con": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.2.11.tgz", - "integrity": "sha512-NEMGsUT+cglWkzEr4IFK21P4Jca45HqiAbIIZIBdX5+UZTB24Mb/21iNGgz9xZa8tL6vbW7CXmq7MFN42+VjNQ==", + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.2.12.tgz", + "integrity": "sha512-5257ILMYIF4RztL9uoZ7V9Q97zHtNHn5bN3NobeAnzB1P3ASLgg8qocM2u+R18ttp+VEM78N2LK8XcNVtnSRrg==", "dev": true, "requires": { "deep-extend": "^0.6.0", "ini": "~3.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "strip-json-comments": "~3.1.1" }, "dependencies": { @@ -22057,6 +24725,12 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", "dev": true + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true } } }, @@ -22096,13 +24770,13 @@ "safe-json-parse": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "integrity": "sha512-o0JmTu17WGUaUOHa1l0FPGXKBfijbxK6qoHzlkihsDXxzBHvJcA7zgviKR92Xs841rX9pK16unfphLq0/KqX7A==", "dev": true }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, "requires": { "ret": "~0.1.10" @@ -22130,13 +24804,14 @@ } }, "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" } }, @@ -22298,9 +24973,9 @@ "dev": true }, "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, "requires": { "xmlchars": "^2.2.0" @@ -22338,7 +25013,7 @@ "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" }, "select-hose": { "version": "2.0.0", @@ -22373,7 +25048,7 @@ "semver-truncate": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "integrity": "sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==", "dev": true, "optional": true, "requires": { @@ -22548,11 +25223,20 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } } } }, @@ -22594,7 +25278,7 @@ "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -22603,7 +25287,13 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true }, "showdown": { @@ -22800,7 +25490,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -22809,7 +25499,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -22818,7 +25508,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -22837,7 +25527,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -22920,7 +25610,7 @@ "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", "dev": true, "optional": true, "requires": { @@ -22930,7 +25620,7 @@ "sort-keys-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", "dev": true, "optional": true, "requires": { @@ -22940,7 +25630,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" }, "source-map-js": { "version": "1.0.2", @@ -23075,9 +25765,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -23104,7 +25794,7 @@ "squeak": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", + "integrity": "sha512-YQL1ulInM+ev8nXX7vfXsCsDh6IqXlrremc1hzi77776BtpWgYJUMto3UM05GSAaGzJgWekszjoKDrVNB5XG+A==", "dev": true, "optional": true, "requires": { @@ -23116,21 +25806,21 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "optional": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "optional": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "optional": true, "requires": { @@ -23144,7 +25834,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "optional": true, "requires": { @@ -23154,7 +25844,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "optional": true } @@ -23186,7 +25876,7 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "dev": true }, "stack-utils": { @@ -23215,7 +25905,7 @@ "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "requires": { "define-property": "^0.2.5", @@ -23225,7 +25915,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -23239,15 +25929,6 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, - "stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, - "requires": { - "internal-slot": "^1.0.4" - } - }, "stream-from-promise": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stream-from-promise/-/stream-from-promise-1.0.0.tgz", @@ -23264,7 +25945,7 @@ "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", "dev": true, "optional": true }, @@ -23298,7 +25979,7 @@ "string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "integrity": "sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==", "dev": true }, "string-width": { @@ -23348,18 +26029,18 @@ } }, "es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "dev": true, "requires": { + "array-buffer-byte-length": "^1.0.0", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -23367,8 +26048,8 @@ "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", @@ -23376,11 +26057,12 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", "typed-array-length": "^1.0.4", @@ -23389,13 +26071,14 @@ } }, "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" } }, @@ -23469,6 +26152,163 @@ } } }, + "string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "dependencies": { + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + } + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + } + } + }, "string.prototype.trimend": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", @@ -23533,7 +26373,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true, "optional": true }, @@ -23793,9 +26633,9 @@ "dev": true }, "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", "dev": true, "requires": { "has": "^1.0.3" @@ -23910,9 +26750,9 @@ "dev": true }, "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -23954,12 +26794,6 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -24019,16 +26853,6 @@ "isexe": "^2.0.0" } }, - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", @@ -24055,22 +26879,21 @@ } }, "stylelint-scss": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.4.0.tgz", - "integrity": "sha512-Qy66a+/30aylFhPmUArHhVsHOun1qrO93LGT15uzLuLjWS7hKDfpFm34mYo1ndR4MCo8W4bEZM1+AlJRJORaaw==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz", + "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==", "dev": true, "requires": { - "lodash": "^4.17.21", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.6", - "postcss-value-parser": "^4.1.0" + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" }, "dependencies": { "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -24253,7 +27076,7 @@ "taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==", "dev": true }, "tannin": { @@ -24311,14 +27134,14 @@ "temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, "optional": true }, "tempfile": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", "dev": true, "optional": true, "requires": { @@ -24335,16 +27158,6 @@ } } }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, "terser": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", @@ -24387,16 +27200,10 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "thunky": { @@ -24408,7 +27215,7 @@ "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", "dev": true, "optional": true }, @@ -24482,7 +27289,7 @@ "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -24528,9 +27335,9 @@ "dev": true }, "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "requires": { "psl": "^1.1.33", @@ -24542,7 +27349,7 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "traverse": { @@ -24566,20 +27373,20 @@ "trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.2" } }, "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, "requires": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, @@ -24596,9 +27403,9 @@ } }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" }, "tsutils": { "version": "3.21.0", @@ -24620,7 +27427,7 @@ "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -24634,7 +27441,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, "type-check": { @@ -24691,15 +27498,6 @@ } } }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -24755,7 +27553,7 @@ "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "dev": true }, "underscore": { @@ -24834,14 +27632,14 @@ "unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", "dev": true, "optional": true }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, "requires": { "has-value": "^0.3.1", @@ -24851,7 +27649,7 @@ "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, "requires": { "get-value": "^2.0.3", @@ -24862,7 +27660,7 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, "requires": { "isarray": "1.0.0" @@ -24873,7 +27671,7 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true } } @@ -24916,13 +27714,13 @@ "uri-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", - "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", + "integrity": "sha512-8pMuAn4KacYdGMkFaoQARicp4HSw24/DHOVKWqVRJ8LhhAwPPFpdGvdL9184JVmUwe7vz7Z9n6IqI6t5n2ELdg==", "dev": true }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "dev": true }, "url-loader": { @@ -24949,7 +27747,7 @@ "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", "dev": true, "optional": true, "requires": { @@ -24959,7 +27757,7 @@ "url-to-options": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", "dev": true, "optional": true }, @@ -24969,6 +27767,14 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "requires": { + "tslib": "^2.0.0" + } + }, "use-lilius": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/use-lilius/-/use-lilius-2.0.3.tgz", @@ -24982,6 +27788,15 @@ "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==" }, + "use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "requires": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + } + }, "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", @@ -24990,7 +27805,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "util.promisify": { "version": "1.0.1", @@ -25012,10 +27827,9 @@ "dev": true }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8-compile-cache": { "version": "2.3.0", @@ -25024,22 +27838,14 @@ "dev": true }, "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } + "convert-source-map": "^1.6.0" } }, "v8flags": { @@ -25079,7 +27885,7 @@ "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -25087,22 +27893,13 @@ "extsprintf": "^1.2.0" } }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dev": true, "requires": { - "xml-name-validator": "^3.0.0" + "xml-name-validator": "^4.0.0" } }, "wait-on": { @@ -25200,7 +27997,7 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "webpack": { @@ -25256,9 +28053,9 @@ } }, "webpack-bundle-analyzer": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz", - "integrity": "sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz", + "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==", "dev": true, "requires": { "@discoveryjs/json-ext": "0.5.7", @@ -25273,12 +28070,6 @@ "ws": "^7.3.1" }, "dependencies": { - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -25452,23 +28243,23 @@ } }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } } } }, "webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -25477,7 +28268,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -25490,6 +28281,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -25499,7 +28291,7 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "dependencies": { "ajv": { @@ -25524,9 +28316,9 @@ } }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "json-schema-traverse": { @@ -25545,21 +28337,21 @@ } }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } }, "ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true } } @@ -25577,9 +28369,9 @@ } }, "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -25595,6 +28387,17 @@ "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, "kind-of": { @@ -25638,23 +28441,12 @@ "dev": true }, "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dev": true, "requires": { - "iconv-lite": "0.4.24" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } + "iconv-lite": "0.6.3" } }, "whatwg-fetch": { @@ -25663,15 +28455,15 @@ "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" }, "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", "dev": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -25700,22 +28492,10 @@ "is-symbol": "^1.0.3" } }, - "which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - } - }, "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" }, "which-typed-array": { "version": "1.1.9", @@ -25749,9 +28529,9 @@ "integrity": "sha512-Ba9tGNYxXwaqKEi9sJJvPMKuo063umUPsHN0JJsjrs2j8KDSzkWLMZGZ+MH1Jf1Fq4OWZ5HsESJID6nRza2ang==" }, "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "word-wrap": { @@ -25773,19 +28553,25 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" + }, + "dependencies": { + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + } } }, "ws": { @@ -25795,15 +28581,15 @@ "dev": true }, "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true }, "xmlbuilder": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", + "integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==", "dev": true }, "xmlchars": { @@ -25815,7 +28601,7 @@ "xmlrpc": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz", - "integrity": "sha1-JrLqNHhI0Ciqx+dRS1NRl23j6D0=", + "integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==", "dev": true, "requires": { "sax": "1.2.x", @@ -25874,7 +28660,7 @@ "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "requires": { "buffer-crc32": "~0.2.3", diff --git a/package.json b/package.json index 2f65c3d2e4..8783577fcd 100644 --- a/package.json +++ b/package.json @@ -26,10 +26,10 @@ "devDependencies": { "@lodder/grunt-postcss": "^3.1.1", "@pmmmwh/react-refresh-webpack-plugin": "0.5.5", - "@wordpress/babel-preset-default": "7.10.2", - "@wordpress/dependency-extraction-webpack-plugin": "4.9.1", - "@wordpress/e2e-test-utils": "9.3.3", - "@wordpress/scripts": "25.3.4", + "@wordpress/babel-preset-default": "7.19.1", + "@wordpress/dependency-extraction-webpack-plugin": "4.18.1", + "@wordpress/e2e-test-utils": "10.6.1", + "@wordpress/scripts": "26.6.2", "autoprefixer": "^10.4.13", "chalk": "5.2.0", "check-node-version": "4.2.1", @@ -71,76 +71,83 @@ "source-map-loader": "4.0.1", "terser-webpack-plugin": "5.3.6", "uglify-js": "^3.17.4", - "uuid": "9.0.0", + "uuid": "8.3.2", "wait-on": "7.0.1", "webpack": "5.75.0", "webpack-livereload-plugin": "3.0.2" }, "dependencies": { - "@wordpress/a11y": "3.26.1", - "@wordpress/annotations": "2.26.4", - "@wordpress/api-fetch": "6.23.1", - "@wordpress/autop": "3.26.1", - "@wordpress/blob": "3.26.1", - "@wordpress/block-directory": "4.3.13", - "@wordpress/block-editor": "11.3.10", - "@wordpress/block-library": "8.3.13", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/memoize": "0.7.4", + "@wordpress/a11y": "3.35.1", + "@wordpress/annotations": "2.35.1", + "@wordpress/api-fetch": "6.32.1", + "@wordpress/autop": "3.35.1", + "@wordpress/blob": "3.35.1", + "@wordpress/block-directory": "4.12.2", + "@wordpress/block-editor": "12.3.2", + "@wordpress/block-library": "8.12.2", "@wordpress/block-serialization-default-parser": "4.35.1", - "@wordpress/blocks": "12.3.3", - "@wordpress/components": "23.3.7", - "@wordpress/compose": "6.3.3", - "@wordpress/core-data": "6.3.3", - "@wordpress/customize-widgets": "4.3.13", - "@wordpress/data": "8.3.3", - "@wordpress/data-controls": "2.26.3", - "@wordpress/date": "4.26.2", - "@wordpress/deprecated": "3.26.1", - "@wordpress/dom": "3.26.1", - "@wordpress/dom-ready": "3.26.1", - "@wordpress/edit-post": "7.3.13", - "@wordpress/edit-site": "5.3.13", - "@wordpress/edit-widgets": "5.3.13", - "@wordpress/editor": "13.3.10", - "@wordpress/element": "5.3.2", - "@wordpress/escape-html": "2.26.1", - "@wordpress/format-library": "4.3.10", - "@wordpress/hooks": "3.26.1", - "@wordpress/html-entities": "3.26.1", - "@wordpress/i18n": "4.26.1", - "@wordpress/icons": "9.17.2", - "@wordpress/interface": "5.3.8", - "@wordpress/is-shallow-equal": "4.26.1", - "@wordpress/keyboard-shortcuts": "4.3.3", - "@wordpress/keycodes": "3.26.2", - "@wordpress/list-reusable-blocks": "4.3.7", - "@wordpress/media-utils": "4.17.2", - "@wordpress/notices": "3.26.3", + "@wordpress/blocks": "12.12.1", + "@wordpress/commands": "0.6.2", + "@wordpress/components": "25.1.2", + "@wordpress/compose": "6.12.1", + "@wordpress/core-commands": "0.4.2", + "@wordpress/core-data": "6.12.2", + "@wordpress/customize-widgets": "4.12.2", + "@wordpress/data": "9.5.1", + "@wordpress/data-controls": "3.4.1", + "@wordpress/date": "4.35.1", + "@wordpress/deprecated": "3.35.1", + "@wordpress/dom": "3.35.1", + "@wordpress/dom-ready": "3.35.1", + "@wordpress/edit-post": "7.12.2", + "@wordpress/edit-site": "5.12.2", + "@wordpress/edit-widgets": "5.12.2", + "@wordpress/editor": "13.12.2", + "@wordpress/element": "5.12.1", + "@wordpress/escape-html": "2.35.1", + "@wordpress/format-library": "4.12.2", + "@wordpress/hooks": "3.35.1", + "@wordpress/html-entities": "3.35.1", + "@wordpress/i18n": "4.35.1", + "@wordpress/icons": "9.26.2", + "@wordpress/interface": "5.12.2", + "@wordpress/is-shallow-equal": "4.35.1", + "@wordpress/keyboard-shortcuts": "4.12.1", + "@wordpress/keycodes": "3.35.1", + "@wordpress/list-reusable-blocks": "4.12.2", + "@wordpress/media-utils": "4.26.1", + "@wordpress/notices": "4.3.1", "@wordpress/nux": "6.0.0", - "@wordpress/plugins": "5.3.3", - "@wordpress/preferences": "3.3.7", - "@wordpress/preferences-persistence": "1.18.1", - "@wordpress/primitives": "3.24.2", - "@wordpress/priority-queue": "2.26.1", - "@wordpress/private-apis": "0.8.1", - "@wordpress/redux-routine": "4.26.1", - "@wordpress/reusable-blocks": "4.3.10", - "@wordpress/rich-text": "6.3.4", - "@wordpress/server-side-render": "4.3.7", - "@wordpress/shortcode": "3.26.1", - "@wordpress/style-engine": "1.9.1", - "@wordpress/token-list": "2.26.1", - "@wordpress/url": "3.27.1", - "@wordpress/viewport": "5.3.3", - "@wordpress/warning": "2.26.1", - "@wordpress/widgets": "3.3.10", - "@wordpress/wordcount": "3.26.1", + "@wordpress/plugins": "6.3.2", + "@wordpress/preferences": "3.12.2", + "@wordpress/preferences-persistence": "1.27.1", + "@wordpress/primitives": "3.33.1", + "@wordpress/priority-queue": "2.35.1", + "@wordpress/private-apis": "0.17.1", + "@wordpress/redux-routine": "4.35.1", + "@wordpress/reusable-blocks": "4.12.2", + "@wordpress/rich-text": "6.12.1", + "@wordpress/router": "0.4.1", + "@wordpress/server-side-render": "4.12.2", + "@wordpress/shortcode": "3.35.1", + "@wordpress/style-engine": "1.18.1", + "@wordpress/token-list": "2.35.1", + "@wordpress/url": "3.36.1", + "@wordpress/viewport": "5.12.1", + "@wordpress/warning": "2.35.1", + "@wordpress/widgets": "3.12.2", + "@wordpress/wordcount": "3.35.1", "backbone": "1.4.1", "clipboard": "2.0.11", "core-js-url-browser": "3.6.4", "element-closest": "^3.0.2", "formdata-polyfill": "4.0.10", + "framer-motion": "10.11.6", "hoverintent": "2.2.1", "imagesloaded": "4.1.4", + "is-plain-object": "5.0.0", "jquery": "3.7.0", "jquery-color": "2.2.0", "jquery-form": "4.3.0", @@ -148,12 +155,15 @@ "json2php": "^0.0.7", "lodash": "4.17.21", "masonry-layout": "4.2.2", + "memize": "2.1.0", "moment": "2.29.4", "objectFitPolyfill": "2.3.5", + "path-to-regexp": "6.2.1", "polyfill-library": "4.7.0", "react": "18.2.0", "react-dom": "18.2.0", "regenerator-runtime": "0.13.11", + "tslib": "2.6.0", "underscore": "1.13.6", "whatwg-fetch": "3.6.2", "wicg-inert": "3.1.2" diff --git a/src/wp-includes/assets/script-loader-packages.min.php b/src/wp-includes/assets/script-loader-packages.min.php index 9165ea994a..26d564f42b 100644 --- a/src/wp-includes/assets/script-loader-packages.min.php +++ b/src/wp-includes/assets/script-loader-packages.min.php @@ -1 +1 @@ - array('dependencies' => array('wp-dom-ready', 'wp-i18n', 'wp-polyfill'), 'version' => 'ecce20f002eda4c19664'), 'annotations.min.js' => array('dependencies' => array('wp-data', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'wp-rich-text'), 'version' => '1720fc5d5c76f53a1740'), 'api-fetch.min.js' => array('dependencies' => array('wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => 'bc0029ca2c943aec5311'), 'autop.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '43197d709df445ccf849'), 'blob.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'e7b4ea96175a89b263e2'), 'block-directory.min.js' => array('dependencies' => array('wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-primitives', 'wp-url'), 'version' => '9c45b8d28fc867ceed45'), 'block-editor.min.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-a11y', 'wp-api-fetch', 'wp-blob', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-notices', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-shortcode', 'wp-style-engine', 'wp-token-list', 'wp-url', 'wp-warning', 'wp-wordcount'), 'version' => '43e40e04f77d598ede94'), 'block-library.min.js' => array('dependencies' => array('lodash', 'wp-a11y', 'wp-api-fetch', 'wp-autop', 'wp-blob', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-rich-text', 'wp-server-side-render', 'wp-url', 'wp-viewport'), 'version' => '3115f0b5551a55bb6d3b'), 'block-serialization-default-parser.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '30ffd7e7e199f10b2a6d'), 'blocks.min.js' => array('dependencies' => array('lodash', 'wp-autop', 'wp-blob', 'wp-block-serialization-default-parser', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-shortcode'), 'version' => '639e14271099dc3d85bf'), 'components.min.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-a11y', 'wp-compose', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-warning'), 'version' => 'bf6e0ec3089253604b52'), 'compose.min.js' => array('dependencies' => array('react', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-is-shallow-equal', 'wp-keycodes', 'wp-polyfill', 'wp-priority-queue'), 'version' => '7d5916e3b2ef0ea01400'), 'core-data.min.js' => array('dependencies' => array('lodash', 'wp-api-fetch', 'wp-blocks', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-url'), 'version' => 'fc0de6bb17aa25caf698'), 'customize-widgets.min.js' => array('dependencies' => array('wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-widgets'), 'version' => '7ae69cc350436c0cf301'), 'data.min.js' => array('dependencies' => array('lodash', 'wp-compose', 'wp-deprecated', 'wp-element', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-priority-queue', 'wp-private-apis', 'wp-redux-routine'), 'version' => '90cebfec01d1a3f0368e'), 'data-controls.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-data', 'wp-deprecated', 'wp-polyfill'), 'version' => 'e10d473d392daa8501e8'), 'date.min.js' => array('dependencies' => array('moment', 'wp-deprecated', 'wp-polyfill'), 'version' => 'f8550b1212d715fbf745'), 'deprecated.min.js' => array('dependencies' => array('wp-hooks', 'wp-polyfill'), 'version' => '6c963cb9494ba26b77eb'), 'dom.min.js' => array('dependencies' => array('wp-deprecated', 'wp-polyfill'), 'version' => 'e03c89e1dd68aee1cb3a'), 'dom-ready.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '392bdd43726760d1f3ca'), 'edit-post.min.js' => array('dependencies' => array('lodash', 'wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-url', 'wp-viewport', 'wp-warning', 'wp-widgets'), 'version' => 'd098b8ee5bdffa238c03'), 'edit-site.min.js' => array('dependencies' => array('lodash', 'react', 'wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-url', 'wp-viewport', 'wp-widgets'), 'version' => 'fcf81e803ab1af60d4f8'), 'edit-widgets.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-url', 'wp-viewport', 'wp-widgets'), 'version' => 'd683d5fc75e655fdf974'), 'editor.min.js' => array('dependencies' => array('lodash', 'react', 'wp-a11y', 'wp-api-fetch', 'wp-blob', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-rich-text', 'wp-server-side-render', 'wp-url', 'wp-wordcount'), 'version' => '1fb5fcf129627da4939e'), 'element.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-escape-html', 'wp-polyfill'), 'version' => 'b3bda690cfc516378771'), 'escape-html.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '03e27a7b6ae14f7afaa6'), 'format-library.min.js' => array('dependencies' => array('wp-a11y', 'wp-block-editor', 'wp-components', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-rich-text', 'wp-url'), 'version' => 'cd4a10ec005e2f001978'), 'hooks.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '4169d3cf8e8d95a3d6d5'), 'html-entities.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '36a4a255da7dd2e1bf8e'), 'i18n.min.js' => array('dependencies' => array('wp-hooks', 'wp-polyfill'), 'version' => '9e794f35a71bb98672ae'), 'is-shallow-equal.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '20c2b06ecf04afb14fee'), 'keyboard-shortcuts.min.js' => array('dependencies' => array('wp-data', 'wp-element', 'wp-keycodes', 'wp-polyfill'), 'version' => 'b696c16720133edfc065'), 'keycodes.min.js' => array('dependencies' => array('wp-i18n', 'wp-polyfill'), 'version' => '184b321fa2d3bc7fd173'), 'list-reusable-blocks.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-components', 'wp-compose', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => '6ba78be26d660b6af113'), 'media-utils.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-blob', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => 'f837b6298c83612cd6f6'), 'notices.min.js' => array('dependencies' => array('wp-data', 'wp-polyfill'), 'version' => '9c1575b7a31659f45a45'), 'nux.min.js' => array('dependencies' => array('wp-components', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives'), 'version' => '038c48e26a91639ae8ab'), 'plugins.min.js' => array('dependencies' => array('wp-compose', 'wp-element', 'wp-hooks', 'wp-polyfill', 'wp-primitives'), 'version' => '0d1b90278bae7df6ecf9'), 'preferences.min.js' => array('dependencies' => array('wp-a11y', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives'), 'version' => 'c66e137a7e588dab54c3'), 'preferences-persistence.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-polyfill'), 'version' => 'c5543628aa7ff5bd5be4'), 'primitives.min.js' => array('dependencies' => array('wp-element', 'wp-polyfill'), 'version' => 'dfac1545e52734396640'), 'priority-queue.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '422e19e9d48b269c5219'), 'private-apis.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '6f247ed2bc3571743bba'), 'redux-routine.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'd86e7e9f062d7582f76b'), 'reusable-blocks.min.js' => array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives', 'wp-url'), 'version' => 'a7367a6154c724b51b31'), 'rich-text.min.js' => array('dependencies' => array('wp-a11y', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-escape-html', 'wp-i18n', 'wp-keycodes', 'wp-polyfill'), 'version' => '9307ec04c67d79b6e813'), 'server-side-render.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => 'd1bc93277666143a3f5e'), 'shortcode.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '7539044b04e6bca57f2e'), 'style-engine.min.js' => array('dependencies' => array('lodash', 'wp-polyfill'), 'version' => '528e6cf281ffc9b7bd3c'), 'token-list.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'f2cf0bb3ae80de227e43'), 'url.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '16185fce2fb043a0cfed'), 'viewport.min.js' => array('dependencies' => array('wp-compose', 'wp-data', 'wp-element', 'wp-polyfill'), 'version' => '4f6bd168b2b8b45c8a6b'), 'warning.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '4acee5fc2fd9a24cefc2'), 'widgets.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives'), 'version' => '040ac8be5e0cfc4b52df'), 'wordcount.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'feb9569307aec24292f2')); + array('dependencies' => array('wp-dom-ready', 'wp-i18n', 'wp-polyfill'), 'version' => '7032343a947cfccf5608'), 'annotations.min.js' => array('dependencies' => array('wp-data', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'wp-rich-text'), 'version' => 'b09221a884f97325ed72'), 'api-fetch.min.js' => array('dependencies' => array('wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '0fa4dabf8bf2c7adf21a'), 'autop.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'dacd785d109317df2707'), 'blob.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '10a1c5c0acdef3d15657'), 'block-directory.min.js' => array('dependencies' => array('wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-primitives', 'wp-url'), 'version' => 'cf69143cf8a7a08f7e0f'), 'block-editor.min.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-a11y', 'wp-api-fetch', 'wp-blob', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-notices', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-shortcode', 'wp-style-engine', 'wp-token-list', 'wp-url', 'wp-warning', 'wp-wordcount'), 'version' => 'a425609f5b6ae62dad68'), 'block-library.min.js' => array('dependencies' => array('lodash', 'wp-a11y', 'wp-api-fetch', 'wp-autop', 'wp-blob', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-rich-text', 'wp-server-side-render', 'wp-url', 'wp-viewport', 'wp-wordcount'), 'version' => '2291ed97305f0f4dc80c'), 'block-serialization-default-parser.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '30ffd7e7e199f10b2a6d'), 'blocks.min.js' => array('dependencies' => array('wp-autop', 'wp-blob', 'wp-block-serialization-default-parser', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-private-apis', 'wp-shortcode'), 'version' => '379ac25633b7ddbdeb9f'), 'commands.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-polyfill', 'wp-private-apis'), 'version' => '4fb8f7a32011c29a7d27'), 'components.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-a11y', 'wp-compose', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-rich-text', 'wp-warning'), 'version' => '187311b3c04c385fb830'), 'compose.min.js' => array('dependencies' => array('react', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-is-shallow-equal', 'wp-keycodes', 'wp-polyfill', 'wp-priority-queue'), 'version' => '5efbd9a3068cfc28732f'), 'core-commands.min.js' => array('dependencies' => array('wp-commands', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-router', 'wp-url'), 'version' => '684b564cda0e5a71f673'), 'core-data.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-private-apis', 'wp-url'), 'version' => '6ada842e022c37dab9f9'), 'customize-widgets.min.js' => array('dependencies' => array('wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-widgets'), 'version' => 'f08d458c8f34e7be78da'), 'data.min.js' => array('dependencies' => array('wp-compose', 'wp-deprecated', 'wp-element', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-priority-queue', 'wp-private-apis', 'wp-redux-routine'), 'version' => '508d42bffd7af159abd7'), 'data-controls.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-data', 'wp-deprecated', 'wp-polyfill'), 'version' => 'fe4ccc8a1782ea8e2cb1'), 'date.min.js' => array('dependencies' => array('moment', 'wp-deprecated', 'wp-polyfill'), 'version' => '239d3ae94042e61d2134'), 'deprecated.min.js' => array('dependencies' => array('wp-hooks', 'wp-polyfill'), 'version' => '73ad3591e7bc95f4777a'), 'dom.min.js' => array('dependencies' => array('wp-deprecated', 'wp-polyfill'), 'version' => '845eabf47b55af03adfa'), 'dom-ready.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '392bdd43726760d1f3ca'), 'edit-post.min.js' => array('dependencies' => array('wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-commands', 'wp-components', 'wp-compose', 'wp-core-commands', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-url', 'wp-viewport', 'wp-warning', 'wp-widgets'), 'version' => '00139e9b78c513902b2c'), 'edit-site.min.js' => array('dependencies' => array('lodash', 'react', 'wp-a11y', 'wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-commands', 'wp-components', 'wp-compose', 'wp-core-commands', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-editor', 'wp-element', 'wp-escape-html', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-router', 'wp-url', 'wp-viewport', 'wp-widgets', 'wp-wordcount'), 'version' => '706364921605e4988d64'), 'edit-widgets.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-block-editor', 'wp-block-library', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-url', 'wp-viewport', 'wp-widgets'), 'version' => 'a9e2acaf781350f2e890'), 'editor.min.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-blob', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', 'wp-media-utils', 'wp-notices', 'wp-polyfill', 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-reusable-blocks', 'wp-rich-text', 'wp-server-side-render', 'wp-url', 'wp-wordcount'), 'version' => 'bb53a87640068425eedb'), 'element.min.js' => array('dependencies' => array('react', 'react-dom', 'wp-escape-html', 'wp-polyfill'), 'version' => '6ee24e5cc389494275d1'), 'escape-html.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '03e27a7b6ae14f7afaa6'), 'format-library.min.js' => array('dependencies' => array('wp-a11y', 'wp-block-editor', 'wp-components', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-rich-text', 'wp-url'), 'version' => 'f8c3d14a13437c8f2597'), 'hooks.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'c6aec9a8d4e5a5d543a1'), 'html-entities.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '36a4a255da7dd2e1bf8e'), 'i18n.min.js' => array('dependencies' => array('wp-hooks', 'wp-polyfill'), 'version' => 'e84b68f41a6686234c52'), 'is-shallow-equal.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '20c2b06ecf04afb14fee'), 'keyboard-shortcuts.min.js' => array('dependencies' => array('wp-data', 'wp-element', 'wp-keycodes', 'wp-polyfill'), 'version' => '3b52bcbe392eefb3e478'), 'keycodes.min.js' => array('dependencies' => array('wp-i18n', 'wp-polyfill'), 'version' => '3460bd0fac9859d6886c'), 'list-reusable-blocks.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-components', 'wp-compose', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => 'dfd2345553c85e847ac0'), 'media-utils.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-blob', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => 'bcd60e7a2fb568f38015'), 'notices.min.js' => array('dependencies' => array('wp-data', 'wp-polyfill'), 'version' => '1197329369e882c44795'), 'nux.min.js' => array('dependencies' => array('wp-components', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives'), 'version' => '038c48e26a91639ae8ab'), 'plugins.min.js' => array('dependencies' => array('wp-compose', 'wp-element', 'wp-hooks', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-primitives'), 'version' => '463143a2aeec9687ac69'), 'preferences.min.js' => array('dependencies' => array('wp-a11y', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives'), 'version' => 'ca088ba0a612bff77aa3'), 'preferences-persistence.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-polyfill'), 'version' => '2e62a5c063c96ff71aa1'), 'primitives.min.js' => array('dependencies' => array('wp-element', 'wp-polyfill'), 'version' => 'b90ba9340ccd8dae04b5'), 'priority-queue.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '422e19e9d48b269c5219'), 'private-apis.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '7dbca6dab5a6454e2194'), 'redux-routine.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '65797a0096e4e54840a2'), 'reusable-blocks.min.js' => array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives', 'wp-url'), 'version' => '0d3fc9db5f010d7fd06b'), 'rich-text.min.js' => array('dependencies' => array('wp-a11y', 'wp-compose', 'wp-data', 'wp-deprecated', 'wp-element', 'wp-escape-html', 'wp-i18n', 'wp-keycodes', 'wp-polyfill'), 'version' => 'e953b4aa3e2e62c144ab'), 'router.min.js' => array('dependencies' => array('wp-element', 'wp-polyfill', 'wp-private-apis', 'wp-url'), 'version' => 'bc3f04a9045626928db0'), 'server-side-render.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '81299db67c0fa2c65479'), 'shortcode.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'c128a3008a96e820aa86'), 'style-engine.min.js' => array('dependencies' => array('lodash', 'wp-polyfill'), 'version' => 'ad8ccfe490aac4ead1a9'), 'token-list.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '199103fc7cec3b9eef5a'), 'url.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '8814d23f2d64864d280d'), 'viewport.min.js' => array('dependencies' => array('wp-compose', 'wp-data', 'wp-element', 'wp-polyfill'), 'version' => '1fbef8175bb335c5603b'), 'warning.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '4acee5fc2fd9a24cefc2'), 'widgets.min.js' => array('dependencies' => array('wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-polyfill', 'wp-primitives'), 'version' => '938735ae45e739ac8b70'), 'wordcount.min.js' => array('dependencies' => array('wp-polyfill'), 'version' => '16152365fa1567c1135c')); diff --git a/src/wp-includes/blocks/archives/block.json b/src/wp-includes/blocks/archives/block.json index 3e589af452..4d30b5344d 100644 --- a/src/wp-includes/blocks/archives/block.json +++ b/src/wp-includes/blocks/archives/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/archives", "title": "Archives", "category": "widgets", diff --git a/src/wp-includes/blocks/audio/block.json b/src/wp-includes/blocks/audio/block.json index 13aed78896..adcf67e4dc 100644 --- a/src/wp-includes/blocks/audio/block.json +++ b/src/wp-includes/blocks/audio/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/audio", "title": "Audio", "category": "media", diff --git a/src/wp-includes/blocks/avatar.php b/src/wp-includes/blocks/avatar.php index 25f3ad88dc..1566fe6edf 100644 --- a/src/wp-includes/blocks/avatar.php +++ b/src/wp-includes/blocks/avatar.php @@ -16,67 +16,19 @@ function render_block_core_avatar( $attributes, $content, $block ) { $size = isset( $attributes['size'] ) ? $attributes['size'] : 96; $wrapper_attributes = get_block_wrapper_attributes(); + $border_attributes = get_block_core_avatar_border_attributes( $attributes ); - $image_styles = array(); + // Class gets passed through `esc_attr` via `get_avatar`. + $image_classes = ! empty( $border_attributes['class'] ) + ? "wp-block-avatar__image {$border_attributes['class']}" + : 'wp-block-avatar__image'; - // Add border width styles. - $has_border_width = ! empty( $attributes['style']['border']['width'] ); - - if ( $has_border_width ) { - $border_width = $attributes['style']['border']['width']; - $image_styles[] = sprintf( 'border-width: %s;', esc_attr( $border_width ) ); - } - - // Add border radius styles. - $has_border_radius = ! empty( $attributes['style']['border']['radius'] ); - - if ( $has_border_radius ) { - $border_radius = $attributes['style']['border']['radius']; - - if ( is_array( $border_radius ) ) { - // Apply styles for individual corner border radii. - foreach ( $border_radius as $key => $value ) { - if ( null !== $value ) { - $name = _wp_to_kebab_case( $key ); - // Add shared styles for individual border radii. - $border_style = sprintf( - 'border-%s-radius: %s;', - esc_attr( $name ), - esc_attr( $value ) - ); - $image_styles[] = $border_style; - } - } - } else { - $border_style = sprintf( 'border-radius: %s;', esc_attr( $border_radius ) ); - $image_styles[] = $border_style; - } - } - - // Add border color styles. - $has_border_color = ! empty( $attributes['style']['border']['color'] ); - - if ( $has_border_color ) { - $border_color = $attributes['style']['border']['color']; - $image_styles[] = sprintf( 'border-color: %s;', esc_attr( $border_color ) ); - } - - // Add border style (solid, dashed, dotted ). - $has_border_style = ! empty( $attributes['style']['border']['style'] ); - - if ( $has_border_style ) { - $border_style = $attributes['style']['border']['style']; - $image_styles[] = sprintf( 'border-style: %s;', esc_attr( $border_style ) ); - } - - // Add border classes to the avatar image for both custom colors and palette colors. - $image_classes = ''; - if ( $has_border_color || isset( $attributes['borderColor'] ) ) { - $image_classes .= 'has-border-color'; - } - if ( isset( $attributes['borderColor'] ) ) { - $image_classes .= ' has-' . $attributes['borderColor'] . '-border-color'; - } + // Unlike class, `get_avatar` doesn't filter the styles via `esc_attr`. + // The style engine does pass the border styles through + // `safecss_filter_attr` however. + $image_styles = ! empty( $border_attributes['style'] ) + ? sprintf( ' style="%s"', esc_attr( $border_attributes['style'] ) ) + : ''; if ( ! isset( $block->context['commentId'] ) ) { $author_id = isset( $attributes['userId'] ) ? $attributes['userId'] : get_post_field( 'post_author', $block->context['postId'] ); @@ -89,8 +41,8 @@ function render_block_core_avatar( $attributes, $content, $block ) { '', $alt, array( - 'extra_attr' => isset( $image_styles ) ? sprintf( ' style="%s"', safecss_filter_attr( implode( ' ', $image_styles ) ) ) : '', - 'class' => "wp-block-avatar__image $image_classes ", + 'extra_attr' => $image_styles, + 'class' => $image_classes, ) ); if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { @@ -116,8 +68,8 @@ function render_block_core_avatar( $attributes, $content, $block ) { '', $alt, array( - 'extra_attr' => isset( $image_styles ) ? sprintf( ' style="%s"', safecss_filter_attr( implode( ' ', $image_styles ) ) ) : '', - 'class' => "wp-block-avatar__image $image_classes", + 'extra_attr' => $image_styles, + 'class' => $image_classes, ) ); if ( isset( $attributes['isLink'] ) && $attributes['isLink'] && isset( $comment->comment_author_url ) && '' !== $comment->comment_author_url ) { @@ -132,6 +84,58 @@ function render_block_core_avatar( $attributes, $content, $block ) { return sprintf( '
%2s
', $wrapper_attributes, $avatar_block ); } +/** + * Generates class names and styles to apply the border support styles for + * the Avatar block. + * + * @param array $attributes The block attributes. + * @return array The border-related classnames and styles for the block. + */ +function get_block_core_avatar_border_attributes( $attributes ) { + $border_styles = array(); + $sides = array( 'top', 'right', 'bottom', 'left' ); + + // Border radius. + if ( isset( $attributes['style']['border']['radius'] ) ) { + $border_styles['radius'] = $attributes['style']['border']['radius']; + } + + // Border style. + if ( isset( $attributes['style']['border']['style'] ) ) { + $border_styles['style'] = $attributes['style']['border']['style']; + } + + // Border width. + if ( isset( $attributes['style']['border']['width'] ) ) { + $border_styles['width'] = $attributes['style']['border']['width']; + } + + // Border color. + $preset_color = array_key_exists( 'borderColor', $attributes ) ? "var:preset|color|{$attributes['borderColor']}" : null; + $custom_color = _wp_array_get( $attributes, array( 'style', 'border', 'color' ), null ); + $border_styles['color'] = $preset_color ? $preset_color : $custom_color; + + // Individual border styles e.g. top, left etc. + foreach ( $sides as $side ) { + $border = _wp_array_get( $attributes, array( 'style', 'border', $side ), null ); + $border_styles[ $side ] = array( + 'color' => isset( $border['color'] ) ? $border['color'] : null, + 'style' => isset( $border['style'] ) ? $border['style'] : null, + 'width' => isset( $border['width'] ) ? $border['width'] : null, + ); + } + + $styles = wp_style_engine_get_styles( array( 'border' => $border_styles ) ); + $attributes = array(); + if ( ! empty( $styles['classnames'] ) ) { + $attributes['class'] = $styles['classnames']; + } + if ( ! empty( $styles['css'] ) ) { + $attributes['style'] = $styles['css']; + } + return $attributes; +} + /** * Registers the `core/avatar` block on the server. */ diff --git a/src/wp-includes/blocks/avatar/block.json b/src/wp-includes/blocks/avatar/block.json index 690ef358a0..12e81d68aa 100644 --- a/src/wp-includes/blocks/avatar/block.json +++ b/src/wp-includes/blocks/avatar/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/avatar", "title": "Avatar", "category": "theme", @@ -48,6 +48,6 @@ "__experimentalDuotone": "img" } }, - "editorStyle": "wp-block-avatar", + "editorStyle": "wp-block-avatar-editor", "style": "wp-block-avatar" } diff --git a/src/wp-includes/blocks/block/block.json b/src/wp-includes/blocks/block/block.json index f472fd0f47..5846e7ead0 100644 --- a/src/wp-includes/blocks/block/block.json +++ b/src/wp-includes/blocks/block/block.json @@ -1,8 +1,8 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/block", - "title": "Reusable block", + "title": "Pattern", "category": "reusable", "description": "Create and save content to reuse across your site. Update the block, and the changes apply everywhere it’s used.", "textdomain": "default", diff --git a/src/wp-includes/blocks/blocks-json.php b/src/wp-includes/blocks/blocks-json.php index 52240142ae..4a1bdf9cef 100644 --- a/src/wp-includes/blocks/blocks-json.php +++ b/src/wp-includes/blocks/blocks-json.php @@ -1 +1,5880 @@ - array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/archives', 'title' => 'Archives', 'category' => 'widgets', 'description' => 'Display a date archive of your posts.', 'textdomain' => 'default', 'attributes' => array('displayAsDropdown' => array('type' => 'boolean', 'default' => false), 'showLabel' => array('type' => 'boolean', 'default' => true), 'showPostCounts' => array('type' => 'boolean', 'default' => false), 'type' => array('type' => 'string', 'default' => 'monthly')), 'supports' => array('align' => true, 'html' => false, 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-archives-editor'), 'audio' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/audio', 'title' => 'Audio', 'category' => 'media', 'description' => 'Embed a simple audio player.', 'keywords' => array('music', 'sound', 'podcast', 'recording'), 'textdomain' => 'default', 'attributes' => array('src' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'audio', 'attribute' => 'src', '__experimentalRole' => 'content'), 'caption' => array('type' => 'string', 'source' => 'html', 'selector' => 'figcaption', '__experimentalRole' => 'content'), 'id' => array('type' => 'number', '__experimentalRole' => 'content'), 'autoplay' => array('type' => 'boolean', 'source' => 'attribute', 'selector' => 'audio', 'attribute' => 'autoplay'), 'loop' => array('type' => 'boolean', 'source' => 'attribute', 'selector' => 'audio', 'attribute' => 'loop'), 'preload' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'audio', 'attribute' => 'preload')), 'supports' => array('anchor' => true, 'align' => true, 'spacing' => array('margin' => true, 'padding' => true)), 'editorStyle' => 'wp-block-audio-editor', 'style' => 'wp-block-audio'), 'avatar' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/avatar', 'title' => 'Avatar', 'category' => 'theme', 'description' => 'Add a user’s avatar.', 'textdomain' => 'default', 'attributes' => array('userId' => array('type' => 'number'), 'size' => array('type' => 'number', 'default' => 96), 'isLink' => array('type' => 'boolean', 'default' => false), 'linkTarget' => array('type' => 'string', 'default' => '_self')), 'usesContext' => array('postType', 'postId', 'commentId'), 'supports' => array('html' => false, 'align' => true, 'alignWide' => false, 'spacing' => array('margin' => true, 'padding' => true), '__experimentalBorder' => array('__experimentalSkipSerialization' => true, 'radius' => true, 'width' => true, 'color' => true, 'style' => true, '__experimentalDefaultControls' => array('radius' => true)), 'color' => array('text' => false, 'background' => false, '__experimentalDuotone' => 'img')), 'editorStyle' => 'wp-block-avatar', 'style' => 'wp-block-avatar'), 'block' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/block', 'title' => 'Reusable block', 'category' => 'reusable', 'description' => 'Create and save content to reuse across your site. Update the block, and the changes apply everywhere it’s used.', 'textdomain' => 'default', 'attributes' => array('ref' => array('type' => 'number')), 'supports' => array('customClassName' => false, 'html' => false, 'inserter' => false)), 'button' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/button', 'title' => 'Button', 'category' => 'design', 'parent' => array('core/buttons'), 'description' => 'Prompt visitors to take action with a button-style link.', 'keywords' => array('link'), 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string'), 'url' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'a', 'attribute' => 'href'), 'title' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'a', 'attribute' => 'title'), 'text' => array('type' => 'string', 'source' => 'html', 'selector' => 'a'), 'linkTarget' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'a', 'attribute' => 'target'), 'rel' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'a', 'attribute' => 'rel'), 'placeholder' => array('type' => 'string'), 'backgroundColor' => array('type' => 'string'), 'textColor' => array('type' => 'string'), 'gradient' => array('type' => 'string'), 'width' => array('type' => 'number')), 'supports' => array('anchor' => true, 'align' => false, 'alignWide' => false, 'color' => array('__experimentalSkipSerialization' => true, 'gradients' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), 'reusable' => false, 'shadow' => true, 'spacing' => array('__experimentalSkipSerialization' => true, 'padding' => array('horizontal', 'vertical'), '__experimentalDefaultControls' => array('padding' => true)), '__experimentalBorder' => array('radius' => true, '__experimentalSkipSerialization' => true, '__experimentalDefaultControls' => array('radius' => true)), '__experimentalSelector' => '.wp-block-button .wp-block-button__link'), 'styles' => array(array('name' => 'fill', 'label' => 'Fill', 'isDefault' => true), array('name' => 'outline', 'label' => 'Outline')), 'editorStyle' => 'wp-block-button-editor', 'style' => 'wp-block-button'), 'buttons' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/buttons', 'title' => 'Buttons', 'category' => 'design', 'description' => 'Prompt visitors to take action with a group of button-style links.', 'keywords' => array('link'), 'textdomain' => 'default', 'supports' => array('anchor' => true, 'align' => array('wide', 'full'), '__experimentalExposeControlsToChildren' => true, 'spacing' => array('blockGap' => true, 'margin' => array('top', 'bottom'), '__experimentalDefaultControls' => array('blockGap' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), '__experimentalLayout' => array('allowSwitching' => false, 'allowInheriting' => false, 'default' => array('type' => 'flex'))), 'editorStyle' => 'wp-block-buttons-editor', 'style' => 'wp-block-buttons'), 'calendar' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/calendar', 'title' => 'Calendar', 'category' => 'widgets', 'description' => 'A calendar of your site’s posts.', 'keywords' => array('posts', 'archive'), 'textdomain' => 'default', 'attributes' => array('month' => array('type' => 'integer'), 'year' => array('type' => 'integer')), 'supports' => array('align' => true, 'color' => array('link' => true, '__experimentalSkipSerialization' => array('text', 'background'), '__experimentalDefaultControls' => array('background' => true, 'text' => true), '__experimentalSelector' => 'table, th'), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'style' => 'wp-block-calendar'), 'categories' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/categories', 'title' => 'Categories List', 'category' => 'widgets', 'description' => 'Display a list of all categories.', 'textdomain' => 'default', 'attributes' => array('displayAsDropdown' => array('type' => 'boolean', 'default' => false), 'showHierarchy' => array('type' => 'boolean', 'default' => false), 'showPostCounts' => array('type' => 'boolean', 'default' => false), 'showOnlyTopLevel' => array('type' => 'boolean', 'default' => false), 'showEmpty' => array('type' => 'boolean', 'default' => false)), 'supports' => array('align' => true, 'html' => false, 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-categories-editor', 'style' => 'wp-block-categories'), 'code' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/code', 'title' => 'Code', 'category' => 'text', 'description' => 'Display code snippets that respect your spacing and tabs.', 'textdomain' => 'default', 'attributes' => array('content' => array('type' => 'string', 'source' => 'html', 'selector' => 'code')), 'supports' => array('anchor' => true, 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), 'spacing' => array('margin' => array('top', 'bottom'), 'padding' => true), '__experimentalBorder' => array('radius' => true, 'color' => true, 'width' => true, 'style' => true, '__experimentalDefaultControls' => array('width' => true, 'color' => true)), 'color' => array('text' => true, 'background' => true, 'gradients' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true))), 'style' => 'wp-block-code'), 'column' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/column', 'title' => 'Column', 'category' => 'text', 'parent' => array('core/columns'), 'description' => 'A single column within a columns block.', 'textdomain' => 'default', 'attributes' => array('verticalAlignment' => array('type' => 'string'), 'width' => array('type' => 'string'), 'allowedBlocks' => array('type' => 'array'), 'templateLock' => array('type' => array('string', 'boolean'), 'enum' => array('all', 'insert', 'contentOnly', false))), 'supports' => array('anchor' => true, 'reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('blockGap' => true, 'padding' => true, '__experimentalDefaultControls' => array('padding' => true)), '__experimentalBorder' => array('color' => true, 'style' => true, 'width' => true, '__experimentalDefaultControls' => array('color' => true, 'style' => true, 'width' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), '__experimentalLayout' => true)), 'columns' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/columns', 'title' => 'Columns', 'category' => 'design', 'description' => 'Display content in multiple columns, with blocks added to each column.', 'textdomain' => 'default', 'attributes' => array('verticalAlignment' => array('type' => 'string'), 'isStackedOnMobile' => array('type' => 'boolean', 'default' => true)), 'supports' => array('anchor' => true, 'align' => array('wide', 'full'), 'html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('blockGap' => array('__experimentalDefault' => '2em', 'sides' => array('horizontal', 'vertical')), 'margin' => array('top', 'bottom'), 'padding' => true, '__experimentalDefaultControls' => array('padding' => true)), '__experimentalLayout' => array('allowSwitching' => false, 'allowInheriting' => false, 'allowEditing' => false, 'default' => array('type' => 'flex', 'flexWrap' => 'nowrap')), '__experimentalBorder' => array('color' => true, 'radius' => true, 'style' => true, 'width' => true, '__experimentalDefaultControls' => array('color' => true, 'radius' => true, 'style' => true, 'width' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-columns-editor', 'style' => 'wp-block-columns'), 'comment-author-name' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comment-author-name', 'title' => 'Comment Author Name', 'category' => 'theme', 'ancestor' => array('core/comment-template'), 'description' => 'Displays the name of the author of the comment.', 'textdomain' => 'default', 'attributes' => array('isLink' => array('type' => 'boolean', 'default' => true), 'linkTarget' => array('type' => 'string', 'default' => '_self'), 'textAlign' => array('type' => 'string')), 'usesContext' => array('commentId'), 'supports' => array('html' => false, 'spacing' => array('margin' => true, 'padding' => true), 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'comment-content' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comment-content', 'title' => 'Comment Content', 'category' => 'theme', 'ancestor' => array('core/comment-template'), 'description' => 'Displays the contents of a comment.', 'textdomain' => 'default', 'usesContext' => array('commentId'), 'attributes' => array('textAlign' => array('type' => 'string')), 'supports' => array('color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), 'spacing' => array('padding' => array('horizontal', 'vertical'), '__experimentalDefaultControls' => array('padding' => true)), 'html' => false)), 'comment-date' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comment-date', 'title' => 'Comment Date', 'category' => 'theme', 'ancestor' => array('core/comment-template'), 'description' => 'Displays the date on which the comment was posted.', 'textdomain' => 'default', 'attributes' => array('format' => array('type' => 'string'), 'isLink' => array('type' => 'boolean', 'default' => true)), 'usesContext' => array('commentId'), 'supports' => array('html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'comment-edit-link' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comment-edit-link', 'title' => 'Comment Edit Link', 'category' => 'theme', 'ancestor' => array('core/comment-template'), 'description' => 'Displays a link to edit the comment in the WordPress Dashboard. This link is only visible to users with the edit comment capability.', 'textdomain' => 'default', 'usesContext' => array('commentId'), 'attributes' => array('linkTarget' => array('type' => 'string', 'default' => '_self'), 'textAlign' => array('type' => 'string')), 'supports' => array('html' => false, 'color' => array('link' => true, 'gradients' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => true, 'link' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'comment-reply-link' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comment-reply-link', 'title' => 'Comment Reply Link', 'category' => 'theme', 'ancestor' => array('core/comment-template'), 'description' => 'Displays a link to reply to a comment.', 'textdomain' => 'default', 'usesContext' => array('commentId'), 'attributes' => array('textAlign' => array('type' => 'string')), 'supports' => array('color' => array('gradients' => true, 'link' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => true, 'link' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), 'html' => false)), 'comment-template' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comment-template', 'title' => 'Comment Template', 'category' => 'design', 'parent' => array('core/comments'), 'description' => 'Contains the block elements used to display a comment, like the title, date, author, avatar and more.', 'textdomain' => 'default', 'usesContext' => array('postId'), 'supports' => array('align' => true, 'html' => false, 'reusable' => false, 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'style' => 'wp-block-comment-template'), 'comments' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comments', 'title' => 'Comments', 'category' => 'theme', 'description' => 'An advanced block that allows displaying post comments using different visual configurations.', 'textdomain' => 'default', 'attributes' => array('tagName' => array('type' => 'string', 'default' => 'div'), 'legacy' => array('type' => 'boolean', 'default' => false)), 'supports' => array('align' => array('wide', 'full'), 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'html' => false, 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-comments-editor', 'usesContext' => array('postId', 'postType')), 'comments-pagination' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comments-pagination', 'title' => 'Comments Pagination', 'category' => 'theme', 'parent' => array('core/comments'), 'description' => 'Displays a paginated navigation to next/previous set of comments, when applicable.', 'textdomain' => 'default', 'attributes' => array('paginationArrow' => array('type' => 'string', 'default' => 'none')), 'providesContext' => array('comments/paginationArrow' => 'paginationArrow'), 'supports' => array('align' => true, 'reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), '__experimentalLayout' => array('allowSwitching' => false, 'allowInheriting' => false, 'default' => array('type' => 'flex')), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-comments-pagination-editor', 'style' => 'wp-block-comments-pagination'), 'comments-pagination-next' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comments-pagination-next', 'title' => 'Comments Next Page', 'category' => 'theme', 'parent' => array('core/comments-pagination'), 'description' => 'Displays the next comment\'s page link.', 'textdomain' => 'default', 'attributes' => array('label' => array('type' => 'string')), 'usesContext' => array('postId', 'comments/paginationArrow'), 'supports' => array('reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'comments-pagination-numbers' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comments-pagination-numbers', 'title' => 'Comments Page Numbers', 'category' => 'theme', 'parent' => array('core/comments-pagination'), 'description' => 'Displays a list of page numbers for comments pagination.', 'textdomain' => 'default', 'usesContext' => array('postId'), 'supports' => array('reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'comments-pagination-previous' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comments-pagination-previous', 'title' => 'Comments Previous Page', 'category' => 'theme', 'parent' => array('core/comments-pagination'), 'description' => 'Displays the previous comment\'s page link.', 'textdomain' => 'default', 'attributes' => array('label' => array('type' => 'string')), 'usesContext' => array('postId', 'comments/paginationArrow'), 'supports' => array('reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'comments-title' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/comments-title', 'title' => 'Comments Title', 'category' => 'theme', 'ancestor' => array('core/comments'), 'description' => 'Displays a title with the number of comments', 'textdomain' => 'default', 'usesContext' => array('postId', 'postType'), 'attributes' => array('textAlign' => array('type' => 'string'), 'showPostTitle' => array('type' => 'boolean', 'default' => true), 'showCommentsCount' => array('type' => 'boolean', 'default' => true), 'level' => array('type' => 'number', 'default' => 2)), 'supports' => array('anchor' => false, 'align' => true, 'html' => false, '__experimentalBorder' => array('radius' => true, 'color' => true, 'width' => true, 'style' => true), 'color' => array('gradients' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true, '__experimentalFontFamily' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true)))), 'cover' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/cover', 'title' => 'Cover', 'category' => 'media', 'description' => 'Add an image or video with a text overlay — great for headers.', 'textdomain' => 'default', 'attributes' => array('url' => array('type' => 'string'), 'useFeaturedImage' => array('type' => 'boolean', 'default' => false), 'id' => array('type' => 'number'), 'alt' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'img', 'attribute' => 'alt', 'default' => ''), 'hasParallax' => array('type' => 'boolean', 'default' => false), 'isRepeated' => array('type' => 'boolean', 'default' => false), 'dimRatio' => array('type' => 'number', 'default' => 100), 'overlayColor' => array('type' => 'string'), 'customOverlayColor' => array('type' => 'string'), 'backgroundType' => array('type' => 'string', 'default' => 'image'), 'focalPoint' => array('type' => 'object'), 'minHeight' => array('type' => 'number'), 'minHeightUnit' => array('type' => 'string'), 'gradient' => array('type' => 'string'), 'customGradient' => array('type' => 'string'), 'contentPosition' => array('type' => 'string'), 'isDark' => array('type' => 'boolean', 'default' => true), 'allowedBlocks' => array('type' => 'array'), 'templateLock' => array('type' => array('string', 'boolean'), 'enum' => array('all', 'insert', 'contentOnly', false)), 'tagName' => array('type' => 'string', 'default' => 'div')), 'usesContext' => array('postId', 'postType'), 'supports' => array('anchor' => true, 'align' => true, 'html' => false, 'spacing' => array('padding' => true, 'margin' => array('top', 'bottom'), '__experimentalDefaultControls' => array('padding' => true)), 'color' => array('__experimentalDuotone' => '> .wp-block-cover__image-background, > .wp-block-cover__video-background', 'text' => false, 'background' => false), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-cover-editor', 'style' => 'wp-block-cover'), 'embed' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/embed', 'title' => 'Embed', 'category' => 'embed', 'description' => 'Add a block that displays content pulled from other sites, like Twitter or YouTube.', 'textdomain' => 'default', 'attributes' => array('url' => array('type' => 'string', '__experimentalRole' => 'content'), 'caption' => array('type' => 'string', 'source' => 'html', 'selector' => 'figcaption', '__experimentalRole' => 'content'), 'type' => array('type' => 'string', '__experimentalRole' => 'content'), 'providerNameSlug' => array('type' => 'string', '__experimentalRole' => 'content'), 'allowResponsive' => array('type' => 'boolean', 'default' => true), 'responsive' => array('type' => 'boolean', 'default' => false, '__experimentalRole' => 'content'), 'previewable' => array('type' => 'boolean', 'default' => true, '__experimentalRole' => 'content')), 'supports' => array('align' => true), 'editorStyle' => 'wp-block-embed-editor', 'style' => 'wp-block-embed'), 'file' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/file', 'title' => 'File', 'category' => 'media', 'description' => 'Add a link to a downloadable file.', 'keywords' => array('document', 'pdf', 'download'), 'textdomain' => 'default', 'attributes' => array('id' => array('type' => 'number'), 'href' => array('type' => 'string'), 'fileId' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'a:not([download])', 'attribute' => 'id'), 'fileName' => array('type' => 'string', 'source' => 'html', 'selector' => 'a:not([download])'), 'textLinkHref' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'a:not([download])', 'attribute' => 'href'), 'textLinkTarget' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'a:not([download])', 'attribute' => 'target'), 'showDownloadButton' => array('type' => 'boolean', 'default' => true), 'downloadButtonText' => array('type' => 'string', 'source' => 'html', 'selector' => 'a[download]'), 'displayPreview' => array('type' => 'boolean'), 'previewHeight' => array('type' => 'number', 'default' => 600)), 'supports' => array('anchor' => true, 'align' => true), 'viewScript' => 'file:./view.min.js', 'editorStyle' => 'wp-block-file-editor', 'style' => 'wp-block-file'), 'freeform' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/freeform', 'title' => 'Classic', 'category' => 'text', 'description' => 'Use the classic WordPress editor.', 'textdomain' => 'default', 'attributes' => array('content' => array('type' => 'string', 'source' => 'html')), 'supports' => array('className' => false, 'customClassName' => false, 'reusable' => false), 'editorStyle' => 'wp-block-freeform-editor'), 'gallery' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/gallery', 'title' => 'Gallery', 'category' => 'media', 'description' => 'Display multiple images in a rich gallery.', 'keywords' => array('images', 'photos'), 'textdomain' => 'default', 'attributes' => array('images' => array('type' => 'array', 'default' => array(), 'source' => 'query', 'selector' => '.blocks-gallery-item', 'query' => array('url' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'img', 'attribute' => 'src'), 'fullUrl' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'img', 'attribute' => 'data-full-url'), 'link' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'img', 'attribute' => 'data-link'), 'alt' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'img', 'attribute' => 'alt', 'default' => ''), 'id' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'img', 'attribute' => 'data-id'), 'caption' => array('type' => 'string', 'source' => 'html', 'selector' => '.blocks-gallery-item__caption'))), 'ids' => array('type' => 'array', 'items' => array('type' => 'number'), 'default' => array()), 'shortCodeTransforms' => array('type' => 'array', 'default' => array(), 'items' => array('type' => 'object')), 'columns' => array('type' => 'number', 'minimum' => 1, 'maximum' => 8), 'caption' => array('type' => 'string', 'source' => 'html', 'selector' => '.blocks-gallery-caption'), 'imageCrop' => array('type' => 'boolean', 'default' => true), 'fixedHeight' => array('type' => 'boolean', 'default' => true), 'linkTarget' => array('type' => 'string'), 'linkTo' => array('type' => 'string'), 'sizeSlug' => array('type' => 'string', 'default' => 'large'), 'allowResize' => array('type' => 'boolean', 'default' => false)), 'providesContext' => array('allowResize' => 'allowResize', 'imageCrop' => 'imageCrop', 'fixedHeight' => 'fixedHeight'), 'supports' => array('anchor' => true, 'align' => true, 'html' => false, 'units' => array('px', 'em', 'rem', 'vh', 'vw'), 'spacing' => array('margin' => true, 'padding' => true, 'blockGap' => array('horizontal', 'vertical'), '__experimentalSkipSerialization' => array('blockGap'), '__experimentalDefaultControls' => array('blockGap' => true)), 'color' => array('text' => false, 'background' => true, 'gradients' => true), '__experimentalLayout' => array('allowSwitching' => false, 'allowInheriting' => false, 'allowEditing' => false, 'default' => array('type' => 'flex'))), 'editorStyle' => 'wp-block-gallery-editor', 'style' => 'wp-block-gallery'), 'group' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/group', 'title' => 'Group', 'category' => 'design', 'description' => 'Gather blocks in a layout container.', 'keywords' => array('container', 'wrapper', 'row', 'section'), 'textdomain' => 'default', 'attributes' => array('tagName' => array('type' => 'string', 'default' => 'div'), 'templateLock' => array('type' => array('string', 'boolean'), 'enum' => array('all', 'insert', 'contentOnly', false))), 'supports' => array('__experimentalOnEnter' => true, '__experimentalSettings' => true, 'align' => array('wide', 'full'), 'anchor' => true, 'ariaLabel' => true, 'html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => array('top', 'bottom'), 'padding' => true, 'blockGap' => true, '__experimentalDefaultControls' => array('padding' => true, 'blockGap' => true)), 'dimensions' => array('minHeight' => true), '__experimentalBorder' => array('color' => true, 'radius' => true, 'style' => true, 'width' => true, '__experimentalDefaultControls' => array('color' => true, 'radius' => true, 'style' => true, 'width' => true)), 'position' => array('sticky' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), '__experimentalLayout' => array('allowSizingOnChildren' => true)), 'editorStyle' => 'wp-block-group-editor', 'style' => 'wp-block-group'), 'heading' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/heading', 'title' => 'Heading', 'category' => 'text', 'description' => 'Introduce new sections and organize content to help visitors (and search engines) understand the structure of your content.', 'keywords' => array('title', 'subtitle'), 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string'), 'content' => array('type' => 'string', 'source' => 'html', 'selector' => 'h1,h2,h3,h4,h5,h6', 'default' => '', '__experimentalRole' => 'content'), 'level' => array('type' => 'number', 'default' => 2), 'placeholder' => array('type' => 'string')), 'supports' => array('align' => array('wide', 'full'), 'anchor' => true, 'className' => true, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, '__experimentalLetterSpacing' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalDefaultControls' => array('fontSize' => true, 'fontAppearance' => true, 'textTransform' => true)), '__unstablePasteTextInline' => true, '__experimentalSlashInserter' => true), 'editorStyle' => 'wp-block-heading-editor', 'style' => 'wp-block-heading'), 'home-link' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/home-link', 'category' => 'design', 'parent' => array('core/navigation'), 'title' => 'Home Link', 'description' => 'Create a link that always points to the homepage of the site. Usually not necessary if there is already a site title link present in the header.', 'textdomain' => 'default', 'attributes' => array('label' => array('type' => 'string')), 'usesContext' => array('textColor', 'customTextColor', 'backgroundColor', 'customBackgroundColor', 'fontSize', 'customFontSize', 'style'), 'supports' => array('reusable' => false, 'html' => false, 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-home-link-editor', 'style' => 'wp-block-home-link'), 'html' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/html', 'title' => 'Custom HTML', 'category' => 'widgets', 'description' => 'Add custom HTML code and preview it as you edit.', 'keywords' => array('embed'), 'textdomain' => 'default', 'attributes' => array('content' => array('type' => 'string', 'source' => 'raw')), 'supports' => array('customClassName' => false, 'className' => false, 'html' => false), 'editorStyle' => 'wp-block-html-editor'), 'image' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/image', 'title' => 'Image', 'category' => 'media', 'usesContext' => array('allowResize', 'imageCrop', 'fixedHeight'), 'description' => 'Insert an image to make a visual statement.', 'keywords' => array('img', 'photo', 'picture'), 'textdomain' => 'default', 'attributes' => array('align' => array('type' => 'string'), 'url' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'img', 'attribute' => 'src', '__experimentalRole' => 'content'), 'alt' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'img', 'attribute' => 'alt', 'default' => '', '__experimentalRole' => 'content'), 'caption' => array('type' => 'string', 'source' => 'html', 'selector' => 'figcaption', '__experimentalRole' => 'content'), 'title' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'img', 'attribute' => 'title', '__experimentalRole' => 'content'), 'href' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure > a', 'attribute' => 'href', '__experimentalRole' => 'content'), 'rel' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure > a', 'attribute' => 'rel'), 'linkClass' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure > a', 'attribute' => 'class'), 'id' => array('type' => 'number', '__experimentalRole' => 'content'), 'width' => array('type' => 'number'), 'height' => array('type' => 'number'), 'sizeSlug' => array('type' => 'string'), 'linkDestination' => array('type' => 'string'), 'linkTarget' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure > a', 'attribute' => 'target')), 'supports' => array('anchor' => true, 'color' => array('__experimentalDuotone' => 'img, .components-placeholder', 'text' => false, 'background' => false), '__experimentalBorder' => array('color' => true, 'radius' => true, 'width' => true, '__experimentalSelector' => 'img, .wp-block-image__crop-area', '__experimentalSkipSerialization' => true, '__experimentalDefaultControls' => array('color' => true, 'radius' => true, 'width' => true))), 'styles' => array(array('name' => 'default', 'label' => 'Default', 'isDefault' => true), array('name' => 'rounded', 'label' => 'Rounded')), 'editorStyle' => 'wp-block-image-editor', 'style' => 'wp-block-image'), 'latest-comments' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/latest-comments', 'title' => 'Latest Comments', 'category' => 'widgets', 'description' => 'Display a list of your most recent comments.', 'keywords' => array('recent comments'), 'textdomain' => 'default', 'attributes' => array('commentsToShow' => array('type' => 'number', 'default' => 5, 'minimum' => 1, 'maximum' => 100), 'displayAvatar' => array('type' => 'boolean', 'default' => true), 'displayDate' => array('type' => 'boolean', 'default' => true), 'displayExcerpt' => array('type' => 'boolean', 'default' => true)), 'supports' => array('align' => true, 'html' => false, 'spacing' => array('margin' => true, 'padding' => true)), 'editorStyle' => 'wp-block-latest-comments-editor', 'style' => 'wp-block-latest-comments'), 'latest-posts' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/latest-posts', 'title' => 'Latest Posts', 'category' => 'widgets', 'description' => 'Display a list of your most recent posts.', 'keywords' => array('recent posts'), 'textdomain' => 'default', 'attributes' => array('categories' => array('type' => 'array', 'items' => array('type' => 'object')), 'selectedAuthor' => array('type' => 'number'), 'postsToShow' => array('type' => 'number', 'default' => 5), 'displayPostContent' => array('type' => 'boolean', 'default' => false), 'displayPostContentRadio' => array('type' => 'string', 'default' => 'excerpt'), 'excerptLength' => array('type' => 'number', 'default' => 55), 'displayAuthor' => array('type' => 'boolean', 'default' => false), 'displayPostDate' => array('type' => 'boolean', 'default' => false), 'postLayout' => array('type' => 'string', 'default' => 'list'), 'columns' => array('type' => 'number', 'default' => 3), 'order' => array('type' => 'string', 'default' => 'desc'), 'orderBy' => array('type' => 'string', 'default' => 'date'), 'displayFeaturedImage' => array('type' => 'boolean', 'default' => false), 'featuredImageAlign' => array('type' => 'string', 'enum' => array('left', 'center', 'right')), 'featuredImageSizeSlug' => array('type' => 'string', 'default' => 'thumbnail'), 'featuredImageSizeWidth' => array('type' => 'number', 'default' => null), 'featuredImageSizeHeight' => array('type' => 'number', 'default' => null), 'addLinkToFeaturedImage' => array('type' => 'boolean', 'default' => false)), 'supports' => array('align' => true, 'html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-latest-posts-editor', 'style' => 'wp-block-latest-posts'), 'legacy-widget' => array('apiVersion' => 2, 'name' => 'core/legacy-widget', 'title' => 'Legacy Widget', 'category' => 'widgets', 'description' => 'Display a legacy widget.', 'textdomain' => 'default', 'attributes' => array('id' => array('type' => 'string', 'default' => null), 'idBase' => array('type' => 'string', 'default' => null), 'instance' => array('type' => 'object', 'default' => null)), 'supports' => array('html' => false, 'customClassName' => false, 'reusable' => false), 'editorStyle' => 'wp-block-legacy-widget-editor'), 'list' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/list', 'title' => 'List', 'category' => 'text', 'description' => 'Create a bulleted or numbered list.', 'keywords' => array('bullet list', 'ordered list', 'numbered list'), 'textdomain' => 'default', 'attributes' => array('ordered' => array('type' => 'boolean', 'default' => false, '__experimentalRole' => 'content'), 'values' => array('type' => 'string', 'source' => 'html', 'selector' => 'ol,ul', 'multiline' => 'li', '__unstableMultilineWrapperTags' => array('ol', 'ul'), 'default' => '', '__experimentalRole' => 'content'), 'type' => array('type' => 'string'), 'start' => array('type' => 'number'), 'reversed' => array('type' => 'boolean'), 'placeholder' => array('type' => 'string')), 'supports' => array('anchor' => true, 'className' => false, 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => true, 'padding' => true), '__unstablePasteTextInline' => true, '__experimentalSelector' => 'ol,ul', '__experimentalSlashInserter' => true), 'editorStyle' => 'wp-block-list-editor', 'style' => 'wp-block-list'), 'list-item' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/list-item', 'title' => 'List item', 'category' => 'text', 'parent' => array('core/list'), 'description' => 'Create a list item.', 'textdomain' => 'default', 'attributes' => array('placeholder' => array('type' => 'string'), 'content' => array('type' => 'string', 'source' => 'html', 'selector' => 'li', 'default' => '', '__experimentalRole' => 'content')), 'supports' => array('className' => false, '__experimentalSelector' => 'li', 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'loginout' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/loginout', 'title' => 'Login/out', 'category' => 'theme', 'description' => 'Show login & logout links.', 'keywords' => array('login', 'logout', 'form'), 'textdomain' => 'default', 'attributes' => array('displayLoginAsForm' => array('type' => 'boolean', 'default' => false), 'redirectToCurrent' => array('type' => 'boolean', 'default' => true)), 'supports' => array('className' => true, 'typography' => array('fontSize' => false))), 'media-text' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/media-text', 'title' => 'Media & Text', 'category' => 'media', 'description' => 'Set media and words side-by-side for a richer layout.', 'keywords' => array('image', 'video'), 'textdomain' => 'default', 'attributes' => array('align' => array('type' => 'string', 'default' => 'wide'), 'mediaAlt' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure img', 'attribute' => 'alt', 'default' => '', '__experimentalRole' => 'content'), 'mediaPosition' => array('type' => 'string', 'default' => 'left'), 'mediaId' => array('type' => 'number', '__experimentalRole' => 'content'), 'mediaUrl' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure video,figure img', 'attribute' => 'src', '__experimentalRole' => 'content'), 'mediaLink' => array('type' => 'string'), 'linkDestination' => array('type' => 'string'), 'linkTarget' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure a', 'attribute' => 'target'), 'href' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure a', 'attribute' => 'href', '__experimentalRole' => 'content'), 'rel' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure a', 'attribute' => 'rel'), 'linkClass' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'figure a', 'attribute' => 'class'), 'mediaType' => array('type' => 'string', '__experimentalRole' => 'content'), 'mediaWidth' => array('type' => 'number', 'default' => 50), 'mediaSizeSlug' => array('type' => 'string'), 'isStackedOnMobile' => array('type' => 'boolean', 'default' => true), 'verticalAlignment' => array('type' => 'string'), 'imageFill' => array('type' => 'boolean'), 'focalPoint' => array('type' => 'object')), 'supports' => array('anchor' => true, 'align' => array('wide', 'full'), 'html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-media-text-editor', 'style' => 'wp-block-media-text'), 'missing' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/missing', 'title' => 'Unsupported', 'category' => 'text', 'description' => 'Your site doesn’t include support for this block.', 'textdomain' => 'default', 'attributes' => array('originalName' => array('type' => 'string'), 'originalUndelimitedContent' => array('type' => 'string'), 'originalContent' => array('type' => 'string', 'source' => 'html')), 'supports' => array('className' => false, 'customClassName' => false, 'inserter' => false, 'html' => false, 'reusable' => false)), 'more' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/more', 'title' => 'More', 'category' => 'design', 'description' => 'Content before this block will be shown in the excerpt on your archives page.', 'keywords' => array('read more'), 'textdomain' => 'default', 'attributes' => array('customText' => array('type' => 'string'), 'noTeaser' => array('type' => 'boolean', 'default' => false)), 'supports' => array('customClassName' => false, 'className' => false, 'html' => false, 'multiple' => false), 'editorStyle' => 'wp-block-more-editor'), 'navigation' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/navigation', 'title' => 'Navigation', 'category' => 'theme', 'description' => 'A collection of blocks that allow visitors to get around your site.', 'keywords' => array('menu', 'navigation', 'links'), 'textdomain' => 'default', 'attributes' => array('ref' => array('type' => 'number'), 'textColor' => array('type' => 'string'), 'customTextColor' => array('type' => 'string'), 'rgbTextColor' => array('type' => 'string'), 'backgroundColor' => array('type' => 'string'), 'customBackgroundColor' => array('type' => 'string'), 'rgbBackgroundColor' => array('type' => 'string'), 'showSubmenuIcon' => array('type' => 'boolean', 'default' => true), 'openSubmenusOnClick' => array('type' => 'boolean', 'default' => false), 'overlayMenu' => array('type' => 'string', 'default' => 'mobile'), 'icon' => array('type' => 'string', 'default' => 'handle'), 'hasIcon' => array('type' => 'boolean', 'default' => true), '__unstableLocation' => array('type' => 'string'), 'overlayBackgroundColor' => array('type' => 'string'), 'customOverlayBackgroundColor' => array('type' => 'string'), 'overlayTextColor' => array('type' => 'string'), 'customOverlayTextColor' => array('type' => 'string'), 'maxNestingLevel' => array('type' => 'number', 'default' => 5), 'templateLock' => array('type' => array('string', 'boolean'), 'enum' => array('all', 'insert', 'contentOnly', false))), 'providesContext' => array('textColor' => 'textColor', 'customTextColor' => 'customTextColor', 'backgroundColor' => 'backgroundColor', 'customBackgroundColor' => 'customBackgroundColor', 'overlayTextColor' => 'overlayTextColor', 'customOverlayTextColor' => 'customOverlayTextColor', 'overlayBackgroundColor' => 'overlayBackgroundColor', 'customOverlayBackgroundColor' => 'customOverlayBackgroundColor', 'fontSize' => 'fontSize', 'customFontSize' => 'customFontSize', 'showSubmenuIcon' => 'showSubmenuIcon', 'openSubmenusOnClick' => 'openSubmenusOnClick', 'style' => 'style', 'orientation' => 'orientation', 'maxNestingLevel' => 'maxNestingLevel'), 'supports' => array('align' => array('wide', 'full'), 'html' => false, 'inserter' => true, 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, '__experimentalTextTransform' => true, '__experimentalFontFamily' => true, '__experimentalLetterSpacing' => true, '__experimentalTextDecoration' => true, '__experimentalSkipSerialization' => array('textDecoration'), '__experimentalDefaultControls' => array('fontSize' => true)), 'spacing' => array('blockGap' => true, 'units' => array('px', 'em', 'rem', 'vh', 'vw'), '__experimentalDefaultControls' => array('blockGap' => true)), '__experimentalLayout' => array('allowSwitching' => false, 'allowInheriting' => false, 'allowVerticalAlignment' => false, 'allowSizingOnChildren' => true, 'default' => array('type' => 'flex')), '__experimentalStyle' => array('elements' => array('link' => array('color' => array('text' => 'inherit'))))), 'viewScript' => array('file:./view.min.js', 'file:./view-modal.min.js'), 'editorStyle' => 'wp-block-navigation-editor', 'style' => 'wp-block-navigation'), 'navigation-link' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/navigation-link', 'title' => 'Custom Link', 'category' => 'design', 'parent' => array('core/navigation'), 'description' => 'Add a page, link, or another item to your navigation.', 'textdomain' => 'default', 'attributes' => array('label' => array('type' => 'string'), 'type' => array('type' => 'string'), 'description' => array('type' => 'string'), 'rel' => array('type' => 'string'), 'id' => array('type' => 'number'), 'opensInNewTab' => array('type' => 'boolean', 'default' => false), 'url' => array('type' => 'string'), 'title' => array('type' => 'string'), 'kind' => array('type' => 'string'), 'isTopLevelLink' => array('type' => 'boolean')), 'usesContext' => array('textColor', 'customTextColor', 'backgroundColor', 'customBackgroundColor', 'overlayTextColor', 'customOverlayTextColor', 'overlayBackgroundColor', 'customOverlayBackgroundColor', 'fontSize', 'customFontSize', 'showSubmenuIcon', 'maxNestingLevel', 'style'), 'supports' => array('reusable' => false, 'html' => false, '__experimentalSlashInserter' => true, 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-navigation-link-editor', 'style' => 'wp-block-navigation-link'), 'navigation-submenu' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/navigation-submenu', 'title' => 'Submenu', 'category' => 'design', 'parent' => array('core/navigation'), 'description' => 'Add a submenu to your navigation.', 'textdomain' => 'default', 'attributes' => array('label' => array('type' => 'string'), 'type' => array('type' => 'string'), 'description' => array('type' => 'string'), 'rel' => array('type' => 'string'), 'id' => array('type' => 'number'), 'opensInNewTab' => array('type' => 'boolean', 'default' => false), 'url' => array('type' => 'string'), 'title' => array('type' => 'string'), 'kind' => array('type' => 'string'), 'isTopLevelItem' => array('type' => 'boolean')), 'usesContext' => array('textColor', 'customTextColor', 'backgroundColor', 'customBackgroundColor', 'overlayTextColor', 'customOverlayTextColor', 'overlayBackgroundColor', 'customOverlayBackgroundColor', 'fontSize', 'customFontSize', 'showSubmenuIcon', 'maxNestingLevel', 'openSubmenusOnClick', 'style'), 'supports' => array('reusable' => false, 'html' => false), 'editorStyle' => 'wp-block-navigation-submenu-editor', 'style' => 'wp-block-navigation-submenu'), 'nextpage' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/nextpage', 'title' => 'Page Break', 'category' => 'design', 'description' => 'Separate your content into a multi-page experience.', 'keywords' => array('next page', 'pagination'), 'parent' => array('core/post-content'), 'textdomain' => 'default', 'supports' => array('customClassName' => false, 'className' => false, 'html' => false), 'editorStyle' => 'wp-block-nextpage-editor'), 'page-list' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/page-list', 'title' => 'Page List', 'category' => 'widgets', 'description' => 'Display a list of all pages.', 'keywords' => array('menu', 'navigation'), 'textdomain' => 'default', 'attributes' => array('parentPageID' => array('type' => 'integer', 'default' => 0), 'isNested' => array('type' => 'boolean', 'default' => false)), 'usesContext' => array('textColor', 'customTextColor', 'backgroundColor', 'customBackgroundColor', 'overlayTextColor', 'customOverlayTextColor', 'overlayBackgroundColor', 'customOverlayBackgroundColor', 'fontSize', 'customFontSize', 'showSubmenuIcon', 'style', 'openSubmenusOnClick'), 'supports' => array('reusable' => false, 'html' => false, 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-page-list-editor', 'style' => 'wp-block-page-list'), 'page-list-item' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/page-list-item', 'title' => 'Page List Item', 'category' => 'widgets', 'parent' => array('core/page-list'), 'description' => 'Displays a page inside a list of all pages.', 'keywords' => array('page', 'menu', 'navigation'), 'textdomain' => 'default', 'attributes' => array('id' => array('type' => 'number'), 'label' => array('type' => 'string'), 'title' => array('type' => 'string'), 'link' => array('type' => 'string'), 'hasChildren' => array('type' => 'boolean')), 'usesContext' => array('textColor', 'customTextColor', 'backgroundColor', 'customBackgroundColor', 'overlayTextColor', 'customOverlayTextColor', 'overlayBackgroundColor', 'customOverlayBackgroundColor', 'fontSize', 'customFontSize', 'showSubmenuIcon', 'style', 'openSubmenusOnClick'), 'supports' => array('reusable' => false, 'html' => false, 'lock' => false, 'inserter' => false, '__experimentalToolbar' => false), 'editorStyle' => 'wp-block-page-list-editor', 'style' => 'wp-block-page-list'), 'paragraph' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/paragraph', 'title' => 'Paragraph', 'category' => 'text', 'description' => 'Start with the basic building block of all narrative.', 'keywords' => array('text'), 'textdomain' => 'default', 'attributes' => array('align' => array('type' => 'string'), 'content' => array('type' => 'string', 'source' => 'html', 'selector' => 'p', 'default' => '', '__experimentalRole' => 'content'), 'dropCap' => array('type' => 'boolean', 'default' => false), 'placeholder' => array('type' => 'string'), 'direction' => array('type' => 'string', 'enum' => array('ltr', 'rtl'))), 'supports' => array('anchor' => true, 'className' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalTextDecoration' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, '__experimentalLetterSpacing' => true, '__experimentalTextTransform' => true, '__experimentalDefaultControls' => array('fontSize' => true)), '__experimentalSelector' => 'p', '__unstablePasteTextInline' => true), 'editorStyle' => 'wp-block-paragraph-editor', 'style' => 'wp-block-paragraph'), 'pattern' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/pattern', 'title' => 'Pattern', 'category' => 'theme', 'description' => 'Show a block pattern.', 'supports' => array('html' => false, 'inserter' => false), 'textdomain' => 'default', 'attributes' => array('slug' => array('type' => 'string'))), 'post-author' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-author', 'title' => 'Post Author', 'category' => 'theme', 'description' => 'Display post author details such as name, avatar, and bio.', 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string'), 'avatarSize' => array('type' => 'number', 'default' => 48), 'showAvatar' => array('type' => 'boolean', 'default' => true), 'showBio' => array('type' => 'boolean'), 'byline' => array('type' => 'string'), 'isLink' => array('type' => 'boolean', 'default' => false), 'linkTarget' => array('type' => 'string', 'default' => '_self')), 'usesContext' => array('postType', 'postId', 'queryId'), 'supports' => array('html' => false, 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), 'color' => array('gradients' => true, 'link' => true, '__experimentalDuotone' => '.wp-block-post-author__avatar img', '__experimentalDefaultControls' => array('background' => true, 'text' => true))), 'editorStyle' => 'wp-block-post-author-editor', 'style' => 'wp-block-post-author'), 'post-author-biography' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-author-biography', 'title' => 'Post Author Biography', 'category' => 'theme', 'description' => 'The author biography.', 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string')), 'usesContext' => array('postType', 'postId'), 'supports' => array('spacing' => array('margin' => true, 'padding' => true), 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'post-author-name' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-author-name', 'title' => 'Post Author Name', 'category' => 'theme', 'description' => 'The author name.', 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string'), 'isLink' => array('type' => 'boolean', 'default' => false), 'linkTarget' => array('type' => 'string', 'default' => '_self')), 'usesContext' => array('postType', 'postId'), 'supports' => array('html' => false, 'spacing' => array('margin' => true, 'padding' => true), 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'post-comments-form' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-comments-form', 'title' => 'Post Comments Form', 'category' => 'theme', 'description' => 'Display a post\'s comments form.', 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string')), 'usesContext' => array('postId', 'postType'), 'supports' => array('html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, '__experimentalLetterSpacing' => true, '__experimentalTextTransform' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-post-comments-form-editor', 'style' => array('wp-block-post-comments-form', 'wp-block-buttons', 'wp-block-button')), 'post-content' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-content', 'title' => 'Post Content', 'category' => 'theme', 'description' => 'Displays the contents of a post or page.', 'textdomain' => 'default', 'usesContext' => array('postId', 'postType', 'queryId'), 'supports' => array('align' => array('wide', 'full'), 'html' => false, '__experimentalLayout' => true, 'dimensions' => array('minHeight' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-post-content-editor'), 'post-date' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-date', 'title' => 'Post Date', 'category' => 'theme', 'description' => 'Add the date of this post.', 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string'), 'format' => array('type' => 'string'), 'isLink' => array('type' => 'boolean', 'default' => false), 'displayType' => array('type' => 'string', 'default' => 'date')), 'usesContext' => array('postId', 'postType', 'queryId'), 'supports' => array('html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'post-excerpt' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-excerpt', 'title' => 'Post Excerpt', 'category' => 'theme', 'description' => 'Display a post\'s excerpt.', 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string'), 'moreText' => array('type' => 'string'), 'showMoreOnNewLine' => array('type' => 'boolean', 'default' => true)), 'usesContext' => array('postId', 'postType', 'queryId'), 'supports' => array('html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-post-excerpt-editor', 'style' => 'wp-block-post-excerpt'), 'post-featured-image' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-featured-image', 'title' => 'Post Featured Image', 'category' => 'theme', 'description' => 'Display a post\'s featured image.', 'textdomain' => 'default', 'attributes' => array('isLink' => array('type' => 'boolean', 'default' => false), 'width' => array('type' => 'string'), 'height' => array('type' => 'string'), 'scale' => array('type' => 'string', 'default' => 'cover'), 'sizeSlug' => array('type' => 'string'), 'rel' => array('type' => 'string', 'attribute' => 'rel', 'default' => ''), 'linkTarget' => array('type' => 'string', 'default' => '_self'), 'overlayColor' => array('type' => 'string'), 'customOverlayColor' => array('type' => 'string'), 'dimRatio' => array('type' => 'number', 'default' => 0), 'gradient' => array('type' => 'string'), 'customGradient' => array('type' => 'string')), 'usesContext' => array('postId', 'postType', 'queryId'), 'supports' => array('align' => array('left', 'right', 'center', 'wide', 'full'), 'color' => array('__experimentalDuotone' => 'img, .wp-block-post-featured-image__placeholder, .components-placeholder__illustration, .components-placeholder::before', 'text' => false, 'background' => false), '__experimentalBorder' => array('color' => true, 'radius' => true, 'width' => true, '__experimentalSelector' => 'img, .block-editor-media-placeholder, .wp-block-post-featured-image__overlay', '__experimentalSkipSerialization' => true, '__experimentalDefaultControls' => array('color' => true, 'radius' => true, 'width' => true)), 'html' => false, 'spacing' => array('margin' => true, 'padding' => true)), 'editorStyle' => 'wp-block-post-featured-image-editor', 'style' => 'wp-block-post-featured-image'), 'post-navigation-link' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-navigation-link', 'title' => 'Post Navigation Link', 'category' => 'theme', 'description' => 'Displays the next or previous post link that is adjacent to the current post.', 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string'), 'type' => array('type' => 'string', 'default' => 'next'), 'label' => array('type' => 'string'), 'showTitle' => array('type' => 'boolean', 'default' => false), 'linkLabel' => array('type' => 'boolean', 'default' => false), 'arrow' => array('type' => 'string', 'default' => 'none')), 'supports' => array('reusable' => false, 'html' => false, 'color' => array('link' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'style' => 'wp-block-post-navigation-link'), 'post-template' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-template', 'title' => 'Post Template', 'category' => 'theme', 'parent' => array('core/query'), 'description' => 'Contains the block elements used to render a post, like the title, date, featured image, content or excerpt, and more.', 'textdomain' => 'default', 'usesContext' => array('queryId', 'query', 'queryContext', 'displayLayout', 'templateSlug', 'previewPostType'), 'supports' => array('reusable' => false, 'html' => false, 'align' => true, '__experimentalLayout' => array('allowEditing' => false), 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'style' => 'wp-block-post-template', 'editorStyle' => 'wp-block-post-template-editor'), 'post-terms' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-terms', 'title' => 'Post Terms', 'category' => 'theme', 'description' => 'Post terms.', 'textdomain' => 'default', 'attributes' => array('term' => array('type' => 'string'), 'textAlign' => array('type' => 'string'), 'separator' => array('type' => 'string', 'default' => ', '), 'prefix' => array('type' => 'string', 'default' => ''), 'suffix' => array('type' => 'string', 'default' => '')), 'usesContext' => array('postId', 'postType'), 'supports' => array('html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'style' => 'wp-block-post-terms'), 'post-title' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/post-title', 'title' => 'Post Title', 'category' => 'theme', 'description' => 'Displays the title of a post, page, or any other content-type.', 'textdomain' => 'default', 'usesContext' => array('postId', 'postType', 'queryId'), 'attributes' => array('textAlign' => array('type' => 'string'), 'level' => array('type' => 'number', 'default' => 2), 'isLink' => array('type' => 'boolean', 'default' => false), 'rel' => array('type' => 'string', 'attribute' => 'rel', 'default' => ''), 'linkTarget' => array('type' => 'string', 'default' => '_self')), 'supports' => array('align' => array('wide', 'full'), 'html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true, 'fontAppearance' => true, 'textTransform' => true))), 'style' => 'wp-block-post-title'), 'preformatted' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/preformatted', 'title' => 'Preformatted', 'category' => 'text', 'description' => 'Add text that respects your spacing and tabs, and also allows styling.', 'textdomain' => 'default', 'attributes' => array('content' => array('type' => 'string', 'source' => 'html', 'selector' => 'pre', 'default' => '', '__unstablePreserveWhiteSpace' => true, '__experimentalRole' => 'content')), 'supports' => array('anchor' => true, 'color' => array('gradients' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'style' => 'wp-block-preformatted'), 'pullquote' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/pullquote', 'title' => 'Pullquote', 'category' => 'text', 'description' => 'Give special visual emphasis to a quote from your text.', 'textdomain' => 'default', 'attributes' => array('value' => array('type' => 'string', 'source' => 'html', 'selector' => 'p', '__experimentalRole' => 'content'), 'citation' => array('type' => 'string', 'source' => 'html', 'selector' => 'cite', 'default' => '', '__experimentalRole' => 'content'), 'textAlign' => array('type' => 'string')), 'supports' => array('anchor' => true, 'align' => array('left', 'right', 'wide', 'full'), 'color' => array('gradients' => true, 'background' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true, 'fontAppearance' => true)), '__experimentalBorder' => array('color' => true, 'radius' => true, 'style' => true, 'width' => true, '__experimentalDefaultControls' => array('color' => true, 'radius' => true, 'style' => true, 'width' => true)), '__experimentalStyle' => array('typography' => array('fontSize' => '1.5em', 'lineHeight' => '1.6'))), 'editorStyle' => 'wp-block-pullquote-editor', 'style' => 'wp-block-pullquote'), 'query' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/query', 'title' => 'Query Loop', 'category' => 'theme', 'description' => 'An advanced block that allows displaying post types based on different query parameters and visual configurations.', 'textdomain' => 'default', 'attributes' => array('queryId' => array('type' => 'number'), 'query' => array('type' => 'object', 'default' => array('perPage' => null, 'pages' => 0, 'offset' => 0, 'postType' => 'post', 'order' => 'desc', 'orderBy' => 'date', 'author' => '', 'search' => '', 'exclude' => array(), 'sticky' => '', 'inherit' => true, 'taxQuery' => null, 'parents' => array())), 'tagName' => array('type' => 'string', 'default' => 'div'), 'displayLayout' => array('type' => 'object', 'default' => array('type' => 'list')), 'namespace' => array('type' => 'string')), 'providesContext' => array('queryId' => 'queryId', 'query' => 'query', 'displayLayout' => 'displayLayout'), 'supports' => array('align' => array('wide', 'full'), 'html' => false, '__experimentalLayout' => true), 'editorStyle' => 'wp-block-query-editor'), 'query-no-results' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/query-no-results', 'title' => 'No results', 'category' => 'theme', 'description' => 'Contains the block elements used to render content when no query results are found.', 'parent' => array('core/query'), 'textdomain' => 'default', 'usesContext' => array('queryId', 'query'), 'supports' => array('align' => true, 'reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'link' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'query-pagination' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/query-pagination', 'title' => 'Pagination', 'category' => 'theme', 'parent' => array('core/query'), 'description' => 'Displays a paginated navigation to next/previous set of posts, when applicable.', 'textdomain' => 'default', 'attributes' => array('paginationArrow' => array('type' => 'string', 'default' => 'none')), 'usesContext' => array('queryId', 'query'), 'providesContext' => array('paginationArrow' => 'paginationArrow'), 'supports' => array('align' => true, 'reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), '__experimentalLayout' => array('allowSwitching' => false, 'allowInheriting' => false, 'default' => array('type' => 'flex')), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-query-pagination-editor', 'style' => 'wp-block-query-pagination'), 'query-pagination-next' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/query-pagination-next', 'title' => 'Next Page', 'category' => 'theme', 'parent' => array('core/query-pagination'), 'description' => 'Displays the next posts page link.', 'textdomain' => 'default', 'attributes' => array('label' => array('type' => 'string')), 'usesContext' => array('queryId', 'query', 'paginationArrow'), 'supports' => array('reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'query-pagination-numbers' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/query-pagination-numbers', 'title' => 'Page Numbers', 'category' => 'theme', 'parent' => array('core/query-pagination'), 'description' => 'Displays a list of page numbers for pagination', 'textdomain' => 'default', 'usesContext' => array('queryId', 'query'), 'supports' => array('reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'query-pagination-numbers-editor'), 'query-pagination-previous' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/query-pagination-previous', 'title' => 'Previous Page', 'category' => 'theme', 'parent' => array('core/query-pagination'), 'description' => 'Displays the previous posts page link.', 'textdomain' => 'default', 'attributes' => array('label' => array('type' => 'string')), 'usesContext' => array('queryId', 'query', 'paginationArrow'), 'supports' => array('reusable' => false, 'html' => false, 'color' => array('gradients' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => true)), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)))), 'query-title' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/query-title', 'title' => 'Query Title', 'category' => 'theme', 'description' => 'Display the query title.', 'textdomain' => 'default', 'attributes' => array('type' => array('type' => 'string'), 'textAlign' => array('type' => 'string'), 'level' => array('type' => 'number', 'default' => 1), 'showPrefix' => array('type' => 'boolean', 'default' => true), 'showSearchTerm' => array('type' => 'boolean', 'default' => true)), 'supports' => array('align' => array('wide', 'full'), 'html' => false, 'color' => array('gradients' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, '__experimentalLetterSpacing' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalDefaultControls' => array('fontSize' => true, 'fontAppearance' => true, 'textTransform' => true))), 'style' => 'wp-block-query-title'), 'quote' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/quote', 'title' => 'Quote', 'category' => 'text', 'description' => 'Give quoted text visual emphasis. "In quoting others, we cite ourselves." — Julio Cortázar', 'keywords' => array('blockquote', 'cite'), 'textdomain' => 'default', 'attributes' => array('value' => array('type' => 'string', 'source' => 'html', 'selector' => 'blockquote', 'multiline' => 'p', 'default' => '', '__experimentalRole' => 'content'), 'citation' => array('type' => 'string', 'source' => 'html', 'selector' => 'cite', 'default' => '', '__experimentalRole' => 'content'), 'align' => array('type' => 'string')), 'supports' => array('anchor' => true, '__experimentalOnEnter' => true, 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true, 'fontAppearance' => true)), 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true))), 'styles' => array(array('name' => 'default', 'label' => 'Default', 'isDefault' => true), array('name' => 'plain', 'label' => 'Plain')), 'editorStyle' => 'wp-block-quote-editor', 'style' => 'wp-block-quote'), 'read-more' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/read-more', 'title' => 'Read More', 'category' => 'theme', 'description' => 'Displays the link of a post, page, or any other content-type.', 'textdomain' => 'default', 'attributes' => array('content' => array('type' => 'string'), 'linkTarget' => array('type' => 'string', 'default' => '_self')), 'usesContext' => array('postId'), 'supports' => array('html' => false, 'color' => array('gradients' => true, 'text' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalLetterSpacing' => true, '__experimentalTextDecoration' => true, '__experimentalDefaultControls' => array('fontSize' => true, 'textDecoration' => true)), 'spacing' => array('margin' => array('top', 'bottom'), 'padding' => true, '__experimentalDefaultControls' => array('padding' => true)), '__experimentalBorder' => array('color' => true, 'radius' => true, 'width' => true, '__experimentalDefaultControls' => array('width' => true))), 'style' => 'wp-block-read-more'), 'rss' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/rss', 'title' => 'RSS', 'category' => 'widgets', 'description' => 'Display entries from any RSS or Atom feed.', 'keywords' => array('atom', 'feed'), 'textdomain' => 'default', 'attributes' => array('columns' => array('type' => 'number', 'default' => 2), 'blockLayout' => array('type' => 'string', 'default' => 'list'), 'feedURL' => array('type' => 'string', 'default' => ''), 'itemsToShow' => array('type' => 'number', 'default' => 5), 'displayExcerpt' => array('type' => 'boolean', 'default' => false), 'displayAuthor' => array('type' => 'boolean', 'default' => false), 'displayDate' => array('type' => 'boolean', 'default' => false), 'excerptLength' => array('type' => 'number', 'default' => 55)), 'supports' => array('align' => true, 'html' => false), 'editorStyle' => 'wp-block-rss-editor', 'style' => 'wp-block-rss'), 'search' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/search', 'title' => 'Search', 'category' => 'widgets', 'description' => 'Help visitors find your content.', 'keywords' => array('find'), 'textdomain' => 'default', 'attributes' => array('label' => array('type' => 'string', '__experimentalRole' => 'content'), 'showLabel' => array('type' => 'boolean', 'default' => true), 'placeholder' => array('type' => 'string', 'default' => '', '__experimentalRole' => 'content'), 'width' => array('type' => 'number'), 'widthUnit' => array('type' => 'string'), 'buttonText' => array('type' => 'string', '__experimentalRole' => 'content'), 'buttonPosition' => array('type' => 'string', 'default' => 'button-outside'), 'buttonUseIcon' => array('type' => 'boolean', 'default' => false), 'query' => array('type' => 'object', 'default' => array())), 'supports' => array('align' => array('left', 'center', 'right'), 'color' => array('gradients' => true, '__experimentalSkipSerialization' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'typography' => array('__experimentalSkipSerialization' => true, '__experimentalSelector' => '.wp-block-search__label, .wp-block-search__input, .wp-block-search__button', 'fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true)), '__experimentalBorder' => array('color' => true, 'radius' => true, 'width' => true, '__experimentalSkipSerialization' => true, '__experimentalDefaultControls' => array('color' => true, 'radius' => true, 'width' => true)), 'html' => false), 'editorStyle' => 'wp-block-search-editor', 'style' => 'wp-block-search'), 'separator' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/separator', 'title' => 'Separator', 'category' => 'design', 'description' => 'Create a break between ideas or sections with a horizontal separator.', 'keywords' => array('horizontal-line', 'hr', 'divider'), 'textdomain' => 'default', 'attributes' => array('opacity' => array('type' => 'string', 'default' => 'alpha-channel')), 'supports' => array('anchor' => true, 'align' => array('center', 'wide', 'full'), 'color' => array('enableContrastChecker' => false, '__experimentalSkipSerialization' => true, 'gradients' => true, 'background' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => true)), 'spacing' => array('margin' => array('top', 'bottom'))), 'styles' => array(array('name' => 'default', 'label' => 'Default', 'isDefault' => true), array('name' => 'wide', 'label' => 'Wide Line'), array('name' => 'dots', 'label' => 'Dots')), 'editorStyle' => 'wp-block-separator-editor', 'style' => 'wp-block-separator'), 'shortcode' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/shortcode', 'title' => 'Shortcode', 'category' => 'widgets', 'description' => 'Insert additional custom elements with a WordPress shortcode.', 'textdomain' => 'default', 'attributes' => array('text' => array('type' => 'string', 'source' => 'html')), 'supports' => array('className' => false, 'customClassName' => false, 'html' => false), 'editorStyle' => 'wp-block-shortcode-editor'), 'site-logo' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/site-logo', 'title' => 'Site Logo', 'category' => 'theme', 'description' => 'Display a graphic to represent this site. Update the block, and the changes apply everywhere it’s used. This is different than the site icon, which is the smaller image visible in your dashboard, browser tabs, etc used to help others recognize this site.', 'textdomain' => 'default', 'attributes' => array('width' => array('type' => 'number'), 'isLink' => array('type' => 'boolean', 'default' => true), 'linkTarget' => array('type' => 'string', 'default' => '_self'), 'shouldSyncIcon' => array('type' => 'boolean')), 'example' => array('viewportWidth' => 500, 'attributes' => array('width' => 350, 'className' => 'block-editor-block-types-list__site-logo-example')), 'supports' => array('html' => false, 'align' => true, 'alignWide' => false, 'color' => array('__experimentalDuotone' => 'img, .components-placeholder__illustration, .components-placeholder::before', 'text' => false, 'background' => false), 'spacing' => array('margin' => true, 'padding' => true)), 'styles' => array(array('name' => 'default', 'label' => 'Default', 'isDefault' => true), array('name' => 'rounded', 'label' => 'Rounded')), 'editorStyle' => 'wp-block-site-logo-editor', 'style' => 'wp-block-site-logo'), 'site-tagline' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/site-tagline', 'title' => 'Site Tagline', 'category' => 'theme', 'description' => 'Describe in a few words what the site is about. The tagline can be used in search results or when sharing on social networks even if it’s not displayed in the theme design.', 'keywords' => array('description'), 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string')), 'example' => array(), 'supports' => array('align' => array('wide', 'full'), 'html' => false, 'color' => array('gradients' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-site-tagline-editor'), 'site-title' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/site-title', 'title' => 'Site Title', 'category' => 'theme', 'description' => 'Displays the name of this site. Update the block, and the changes apply everywhere it’s used. This will also appear in the browser title bar and in search results.', 'textdomain' => 'default', 'attributes' => array('level' => array('type' => 'number', 'default' => 1), 'textAlign' => array('type' => 'string'), 'isLink' => array('type' => 'boolean', 'default' => true), 'linkTarget' => array('type' => 'string', 'default' => '_self')), 'example' => array('viewportWidth' => 500), 'supports' => array('align' => array('wide', 'full'), 'html' => false, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true, 'link' => true)), 'spacing' => array('padding' => true, 'margin' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true, 'lineHeight' => true, 'fontAppearance' => true, 'letterSpacing' => true, 'textTransform' => true))), 'editorStyle' => 'wp-block-site-title-editor', 'style' => 'wp-block-site-title'), 'social-link' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/social-link', 'title' => 'Social Icon', 'category' => 'widgets', 'parent' => array('core/social-links'), 'description' => 'Display an icon linking to a social media profile or site.', 'textdomain' => 'default', 'attributes' => array('url' => array('type' => 'string'), 'service' => array('type' => 'string'), 'label' => array('type' => 'string'), 'rel' => array('type' => 'string')), 'usesContext' => array('openInNewTab', 'showLabels', 'iconColorValue', 'iconBackgroundColorValue'), 'supports' => array('reusable' => false, 'html' => false), 'editorStyle' => 'wp-block-social-link-editor'), 'social-links' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/social-links', 'title' => 'Social Icons', 'category' => 'widgets', 'description' => 'Display icons linking to your social media profiles or sites.', 'keywords' => array('links'), 'textdomain' => 'default', 'attributes' => array('iconColor' => array('type' => 'string'), 'customIconColor' => array('type' => 'string'), 'iconColorValue' => array('type' => 'string'), 'iconBackgroundColor' => array('type' => 'string'), 'customIconBackgroundColor' => array('type' => 'string'), 'iconBackgroundColorValue' => array('type' => 'string'), 'openInNewTab' => array('type' => 'boolean', 'default' => false), 'showLabels' => array('type' => 'boolean', 'default' => false), 'size' => array('type' => 'string')), 'providesContext' => array('openInNewTab' => 'openInNewTab', 'showLabels' => 'showLabels', 'iconColorValue' => 'iconColorValue', 'iconBackgroundColorValue' => 'iconBackgroundColorValue'), 'supports' => array('align' => array('left', 'center', 'right'), 'anchor' => true, '__experimentalExposeControlsToChildren' => true, '__experimentalLayout' => array('allowSwitching' => false, 'allowInheriting' => false, 'allowVerticalAlignment' => false, 'default' => array('type' => 'flex')), 'color' => array('enableContrastChecker' => false, 'background' => true, 'gradients' => true, 'text' => false, '__experimentalDefaultControls' => array('background' => false)), 'spacing' => array('blockGap' => array('horizontal', 'vertical'), 'margin' => true, 'padding' => true, 'units' => array('px', 'em', 'rem', 'vh', 'vw'), '__experimentalDefaultControls' => array('blockGap' => true))), 'styles' => array(array('name' => 'default', 'label' => 'Default', 'isDefault' => true), array('name' => 'logos-only', 'label' => 'Logos Only'), array('name' => 'pill-shape', 'label' => 'Pill Shape')), 'editorStyle' => 'wp-block-social-links-editor', 'style' => 'wp-block-social-links'), 'spacer' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/spacer', 'title' => 'Spacer', 'category' => 'design', 'description' => 'Add white space between blocks and customize its height.', 'textdomain' => 'default', 'attributes' => array('height' => array('type' => 'string', 'default' => '100px'), 'width' => array('type' => 'string')), 'usesContext' => array('orientation'), 'supports' => array('anchor' => true, 'spacing' => array('margin' => array('top', 'bottom'), '__experimentalDefaultControls' => array('margin' => true))), 'editorStyle' => 'wp-block-spacer-editor', 'style' => 'wp-block-spacer'), 'table' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/table', 'title' => 'Table', 'category' => 'text', 'description' => 'Create structured content in rows and columns to display information.', 'textdomain' => 'default', 'attributes' => array('hasFixedLayout' => array('type' => 'boolean', 'default' => false), 'caption' => array('type' => 'string', 'source' => 'html', 'selector' => 'figcaption', 'default' => ''), 'head' => array('type' => 'array', 'default' => array(), 'source' => 'query', 'selector' => 'thead tr', 'query' => array('cells' => array('type' => 'array', 'default' => array(), 'source' => 'query', 'selector' => 'td,th', 'query' => array('content' => array('type' => 'string', 'source' => 'html'), 'tag' => array('type' => 'string', 'default' => 'td', 'source' => 'tag'), 'scope' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'scope'), 'align' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'data-align'), 'colspan' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'colspan'), 'rowspan' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'rowspan'))))), 'body' => array('type' => 'array', 'default' => array(), 'source' => 'query', 'selector' => 'tbody tr', 'query' => array('cells' => array('type' => 'array', 'default' => array(), 'source' => 'query', 'selector' => 'td,th', 'query' => array('content' => array('type' => 'string', 'source' => 'html'), 'tag' => array('type' => 'string', 'default' => 'td', 'source' => 'tag'), 'scope' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'scope'), 'align' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'data-align'), 'colspan' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'colspan'), 'rowspan' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'rowspan'))))), 'foot' => array('type' => 'array', 'default' => array(), 'source' => 'query', 'selector' => 'tfoot tr', 'query' => array('cells' => array('type' => 'array', 'default' => array(), 'source' => 'query', 'selector' => 'td,th', 'query' => array('content' => array('type' => 'string', 'source' => 'html'), 'tag' => array('type' => 'string', 'default' => 'td', 'source' => 'tag'), 'scope' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'scope'), 'align' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'data-align'), 'colspan' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'colspan'), 'rowspan' => array('type' => 'string', 'source' => 'attribute', 'attribute' => 'rowspan')))))), 'supports' => array('anchor' => true, 'align' => true, 'color' => array('__experimentalSkipSerialization' => true, 'gradients' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, '__experimentalLetterSpacing' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalDefaultControls' => array('fontSize' => true)), '__experimentalBorder' => array('__experimentalSkipSerialization' => true, 'color' => true, 'style' => true, 'width' => true, '__experimentalDefaultControls' => array('color' => true, 'style' => true, 'width' => true)), '__experimentalSelector' => '.wp-block-table > table'), 'styles' => array(array('name' => 'regular', 'label' => 'Default', 'isDefault' => true), array('name' => 'stripes', 'label' => 'Stripes')), 'editorStyle' => 'wp-block-table-editor', 'style' => 'wp-block-table'), 'tag-cloud' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/tag-cloud', 'title' => 'Tag Cloud', 'category' => 'widgets', 'description' => 'A cloud of your most used tags.', 'textdomain' => 'default', 'attributes' => array('numberOfTags' => array('type' => 'number', 'default' => 45, 'minimum' => 1, 'maximum' => 100), 'taxonomy' => array('type' => 'string', 'default' => 'post_tag'), 'showTagCounts' => array('type' => 'boolean', 'default' => false), 'smallestFontSize' => array('type' => 'string', 'default' => '8pt'), 'largestFontSize' => array('type' => 'string', 'default' => '22pt')), 'styles' => array(array('name' => 'default', 'label' => 'Default', 'isDefault' => true), array('name' => 'outline', 'label' => 'Outline')), 'supports' => array('html' => false, 'align' => true, 'spacing' => array('margin' => true, 'padding' => true), 'typography' => array('lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalLetterSpacing' => true)), 'editorStyle' => 'wp-block-tag-cloud-editor'), 'template-part' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/template-part', 'title' => 'Template Part', 'category' => 'theme', 'description' => 'Edit the different global regions of your site, like the header, footer, sidebar, or create your own.', 'textdomain' => 'default', 'attributes' => array('slug' => array('type' => 'string'), 'theme' => array('type' => 'string'), 'tagName' => array('type' => 'string'), 'area' => array('type' => 'string')), 'supports' => array('align' => true, 'html' => false, 'reusable' => false), 'editorStyle' => 'wp-block-template-part-editor'), 'term-description' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/term-description', 'title' => 'Term Description', 'category' => 'theme', 'description' => 'Display the description of categories, tags and custom taxonomies when viewing an archive.', 'textdomain' => 'default', 'attributes' => array('textAlign' => array('type' => 'string')), 'supports' => array('align' => array('wide', 'full'), 'html' => false, 'color' => array('link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'spacing' => array('padding' => true, 'margin' => true), 'typography' => array('fontSize' => true, 'lineHeight' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalLetterSpacing' => true, '__experimentalDefaultControls' => array('fontSize' => true))), 'editorStyle' => 'wp-block-term-description-editor'), 'text-columns' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/text-columns', 'title' => 'Text Columns (deprecated)', 'icon' => 'columns', 'category' => 'design', 'description' => 'This block is deprecated. Please use the Columns block instead.', 'textdomain' => 'default', 'attributes' => array('content' => array('type' => 'array', 'source' => 'query', 'selector' => 'p', 'query' => array('children' => array('type' => 'string', 'source' => 'html')), 'default' => array(array(), array())), 'columns' => array('type' => 'number', 'default' => 2), 'width' => array('type' => 'string')), 'supports' => array('inserter' => false), 'editorStyle' => 'wp-block-text-columns-editor', 'style' => 'wp-block-text-columns'), 'verse' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/verse', 'title' => 'Verse', 'category' => 'text', 'description' => 'Insert poetry. Use special spacing formats. Or quote song lyrics.', 'keywords' => array('poetry', 'poem'), 'textdomain' => 'default', 'attributes' => array('content' => array('type' => 'string', 'source' => 'html', 'selector' => 'pre', 'default' => '', '__unstablePreserveWhiteSpace' => true, '__experimentalRole' => 'content'), 'textAlign' => array('type' => 'string')), 'supports' => array('anchor' => true, 'color' => array('gradients' => true, 'link' => true, '__experimentalDefaultControls' => array('background' => true, 'text' => true)), 'typography' => array('fontSize' => true, '__experimentalFontFamily' => true, 'lineHeight' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, '__experimentalLetterSpacing' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, '__experimentalDefaultControls' => array('fontSize' => true, 'fontAppearance' => true)), 'spacing' => array('margin' => true, 'padding' => true)), 'style' => 'wp-block-verse', 'editorStyle' => 'wp-block-verse-editor'), 'video' => array('$schema' => 'https://schemas.wp.org/trunk/block.json', 'apiVersion' => 2, 'name' => 'core/video', 'title' => 'Video', 'category' => 'media', 'description' => 'Embed a video from your media library or upload a new one.', 'keywords' => array('movie'), 'textdomain' => 'default', 'attributes' => array('autoplay' => array('type' => 'boolean', 'source' => 'attribute', 'selector' => 'video', 'attribute' => 'autoplay'), 'caption' => array('type' => 'string', 'source' => 'html', 'selector' => 'figcaption', '__experimentalRole' => 'content'), 'controls' => array('type' => 'boolean', 'source' => 'attribute', 'selector' => 'video', 'attribute' => 'controls', 'default' => true), 'id' => array('type' => 'number', '__experimentalRole' => 'content'), 'loop' => array('type' => 'boolean', 'source' => 'attribute', 'selector' => 'video', 'attribute' => 'loop'), 'muted' => array('type' => 'boolean', 'source' => 'attribute', 'selector' => 'video', 'attribute' => 'muted'), 'poster' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'video', 'attribute' => 'poster'), 'preload' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'video', 'attribute' => 'preload', 'default' => 'metadata'), 'src' => array('type' => 'string', 'source' => 'attribute', 'selector' => 'video', 'attribute' => 'src', '__experimentalRole' => 'content'), 'playsInline' => array('type' => 'boolean', 'source' => 'attribute', 'selector' => 'video', 'attribute' => 'playsinline'), 'tracks' => array('__experimentalRole' => 'content', 'type' => 'array', 'items' => array('type' => 'object'), 'default' => array())), 'supports' => array('anchor' => true, 'align' => true, 'spacing' => array('margin' => true, 'padding' => true)), 'editorStyle' => 'wp-block-video-editor', 'style' => 'wp-block-video'), 'widget-group' => array('apiVersion' => 2, 'name' => 'core/widget-group', 'category' => 'widgets', 'attributes' => array('title' => array('type' => 'string')), 'supports' => array('html' => false, 'inserter' => true, 'customClassName' => true, 'reusable' => false), 'editorStyle' => 'wp-block-widget-group-editor', 'style' => 'wp-block-widget-group')); \ No newline at end of file + array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/archives', + 'title' => 'Archives', + 'category' => 'widgets', + 'description' => 'Display a date archive of your posts.', + 'textdomain' => 'default', + 'attributes' => array( + 'displayAsDropdown' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showLabel' => array( + 'type' => 'boolean', + 'default' => true + ), + 'showPostCounts' => array( + 'type' => 'boolean', + 'default' => false + ), + 'type' => array( + 'type' => 'string', + 'default' => 'monthly' + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-archives-editor' + ), + 'audio' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/audio', + 'title' => 'Audio', + 'category' => 'media', + 'description' => 'Embed a simple audio player.', + 'keywords' => array( + 'music', + 'sound', + 'podcast', + 'recording' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'src' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'audio', + 'attribute' => 'src', + '__experimentalRole' => 'content' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + '__experimentalRole' => 'content' + ), + 'id' => array( + 'type' => 'number', + '__experimentalRole' => 'content' + ), + 'autoplay' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'audio', + 'attribute' => 'autoplay' + ), + 'loop' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'audio', + 'attribute' => 'loop' + ), + 'preload' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'audio', + 'attribute' => 'preload' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ) + ), + 'editorStyle' => 'wp-block-audio-editor', + 'style' => 'wp-block-audio' + ), + 'avatar' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/avatar', + 'title' => 'Avatar', + 'category' => 'theme', + 'description' => 'Add a user’s avatar.', + 'textdomain' => 'default', + 'attributes' => array( + 'userId' => array( + 'type' => 'number' + ), + 'size' => array( + 'type' => 'number', + 'default' => 96 + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'usesContext' => array( + 'postType', + 'postId', + 'commentId' + ), + 'supports' => array( + 'html' => false, + 'align' => true, + 'alignWide' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + '__experimentalBorder' => array( + '__experimentalSkipSerialization' => true, + 'radius' => true, + 'width' => true, + 'color' => true, + 'style' => true, + '__experimentalDefaultControls' => array( + 'radius' => true + ) + ), + 'color' => array( + 'text' => false, + 'background' => false, + '__experimentalDuotone' => 'img' + ) + ), + 'editorStyle' => 'wp-block-avatar-editor', + 'style' => 'wp-block-avatar' + ), + 'block' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/block', + 'title' => 'Pattern', + 'category' => 'reusable', + 'description' => 'Create and save content to reuse across your site. Update the block, and the changes apply everywhere it’s used.', + 'textdomain' => 'default', + 'attributes' => array( + 'ref' => array( + 'type' => 'number' + ) + ), + 'supports' => array( + 'customClassName' => false, + 'html' => false, + 'inserter' => false + ) + ), + 'button' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/button', + 'title' => 'Button', + 'category' => 'design', + 'parent' => array( + 'core/buttons' + ), + 'description' => 'Prompt visitors to take action with a button-style link.', + 'keywords' => array( + 'link' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'url' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a', + 'attribute' => 'href', + '__experimentalRole' => 'content' + ), + 'title' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a', + 'attribute' => 'title', + '__experimentalRole' => 'content' + ), + 'text' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'a', + '__experimentalRole' => 'content' + ), + 'linkTarget' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a', + 'attribute' => 'target', + '__experimentalRole' => 'content' + ), + 'rel' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a', + 'attribute' => 'rel', + '__experimentalRole' => 'content' + ), + 'placeholder' => array( + 'type' => 'string' + ), + 'backgroundColor' => array( + 'type' => 'string' + ), + 'textColor' => array( + 'type' => 'string' + ), + 'gradient' => array( + 'type' => 'string' + ), + 'width' => array( + 'type' => 'number' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => false, + 'alignWide' => false, + 'color' => array( + '__experimentalSkipSerialization' => true, + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'reusable' => false, + 'shadow' => true, + 'spacing' => array( + '__experimentalSkipSerialization' => true, + 'padding' => array( + 'horizontal', + 'vertical' + ), + '__experimentalDefaultControls' => array( + 'padding' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + '__experimentalSelector' => '.wp-block-button .wp-block-button__link' + ), + 'styles' => array( + array( + 'name' => 'fill', + 'label' => 'Fill', + 'isDefault' => true + ), + array( + 'name' => 'outline', + 'label' => 'Outline' + ) + ), + 'editorStyle' => 'wp-block-button-editor', + 'style' => 'wp-block-button' + ), + 'buttons' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/buttons', + 'title' => 'Buttons', + 'category' => 'design', + 'description' => 'Prompt visitors to take action with a group of button-style links.', + 'keywords' => array( + 'link' + ), + 'textdomain' => 'default', + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + '__experimentalExposeControlsToChildren' => true, + 'spacing' => array( + 'blockGap' => true, + 'margin' => array( + 'top', + 'bottom' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'default' => array( + 'type' => 'flex' + ) + ) + ), + 'editorStyle' => 'wp-block-buttons-editor', + 'style' => 'wp-block-buttons' + ), + 'calendar' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/calendar', + 'title' => 'Calendar', + 'category' => 'widgets', + 'description' => 'A calendar of your site’s posts.', + 'keywords' => array( + 'posts', + 'archive' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'month' => array( + 'type' => 'integer' + ), + 'year' => array( + 'type' => 'integer' + ) + ), + 'supports' => array( + 'align' => true, + 'color' => array( + 'link' => true, + '__experimentalSkipSerialization' => array( + 'text', + 'background' + ), + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ), + '__experimentalSelector' => 'table, th' + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-calendar' + ), + 'categories' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/categories', + 'title' => 'Categories List', + 'category' => 'widgets', + 'description' => 'Display a list of all categories.', + 'textdomain' => 'default', + 'attributes' => array( + 'displayAsDropdown' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showHierarchy' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showPostCounts' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showOnlyTopLevel' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showEmpty' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-categories-editor', + 'style' => 'wp-block-categories' + ), + 'code' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/code', + 'title' => 'Code', + 'category' => 'text', + 'description' => 'Display code snippets that respect your spacing and tabs.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'code' + ) + ), + 'supports' => array( + 'align' => array( + 'wide' + ), + 'anchor' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ), + 'padding' => true + ), + '__experimentalBorder' => array( + 'radius' => true, + 'color' => true, + 'width' => true, + 'style' => true, + '__experimentalDefaultControls' => array( + 'width' => true, + 'color' => true + ) + ), + 'color' => array( + 'text' => true, + 'background' => true, + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ) + ), + 'style' => 'wp-block-code' + ), + 'column' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/column', + 'title' => 'Column', + 'category' => 'design', + 'parent' => array( + 'core/columns' + ), + 'description' => 'A single column within a columns block.', + 'textdomain' => 'default', + 'attributes' => array( + 'verticalAlignment' => array( + 'type' => 'string' + ), + 'width' => array( + 'type' => 'string' + ), + 'allowedBlocks' => array( + 'type' => 'array' + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ) + ), + 'supports' => array( + 'anchor' => true, + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'blockGap' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'padding' => true, + 'blockGap' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'style' => true, + 'width' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'layout' => true + ) + ), + 'columns' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/columns', + 'title' => 'Columns', + 'category' => 'design', + 'description' => 'Display content in multiple columns, with blocks added to each column.', + 'textdomain' => 'default', + 'attributes' => array( + 'verticalAlignment' => array( + 'type' => 'string' + ), + 'isStackedOnMobile' => array( + 'type' => 'boolean', + 'default' => true + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'blockGap' => array( + '__experimentalDefault' => '2em', + 'sides' => array( + 'horizontal', + 'vertical' + ) + ), + 'margin' => array( + 'top', + 'bottom' + ), + 'padding' => true, + '__experimentalDefaultControls' => array( + 'padding' => true, + 'blockGap' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'allowEditing' => false, + 'default' => array( + 'type' => 'flex', + 'flexWrap' => 'nowrap' + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-columns-editor', + 'style' => 'wp-block-columns' + ), + 'comment-author-name' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-author-name', + 'title' => 'Comment Author Name', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays the name of the author of the comment.', + 'textdomain' => 'default', + 'attributes' => array( + 'isLink' => array( + 'type' => 'boolean', + 'default' => true + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ), + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'commentId' + ), + 'supports' => array( + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comment-content' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-content', + 'title' => 'Comment Content', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays the contents of a comment.', + 'textdomain' => 'default', + 'usesContext' => array( + 'commentId' + ), + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'spacing' => array( + 'padding' => array( + 'horizontal', + 'vertical' + ), + '__experimentalDefaultControls' => array( + 'padding' => true + ) + ), + 'html' => false + ) + ), + 'comment-date' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-date', + 'title' => 'Comment Date', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays the date on which the comment was posted.', + 'textdomain' => 'default', + 'attributes' => array( + 'format' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'usesContext' => array( + 'commentId' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comment-edit-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-edit-link', + 'title' => 'Comment Edit Link', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays a link to edit the comment in the WordPress Dashboard. This link is only visible to users with the edit comment capability.', + 'textdomain' => 'default', + 'usesContext' => array( + 'commentId' + ), + 'attributes' => array( + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ), + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'link' => true, + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comment-reply-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-reply-link', + 'title' => 'Comment Reply Link', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays a link to reply to a comment.', + 'textdomain' => 'default', + 'usesContext' => array( + 'commentId' + ), + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'color' => array( + 'gradients' => true, + 'link' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'html' => false + ) + ), + 'comment-template' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-template', + 'title' => 'Comment Template', + 'category' => 'design', + 'parent' => array( + 'core/comments' + ), + 'description' => 'Contains the block elements used to display a comment, like the title, date, author, avatar and more.', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId' + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'reusable' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-comment-template' + ), + 'comments' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments', + 'title' => 'Comments', + 'category' => 'theme', + 'description' => 'An advanced block that allows displaying post comments using different visual configurations.', + 'textdomain' => 'default', + 'attributes' => array( + 'tagName' => array( + 'type' => 'string', + 'default' => 'div' + ), + 'legacy' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-comments-editor', + 'usesContext' => array( + 'postId', + 'postType' + ) + ), + 'comments-pagination' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-pagination', + 'title' => 'Comments Pagination', + 'category' => 'theme', + 'parent' => array( + 'core/comments' + ), + 'description' => 'Displays a paginated navigation to next/previous set of comments, when applicable.', + 'textdomain' => 'default', + 'attributes' => array( + 'paginationArrow' => array( + 'type' => 'string', + 'default' => 'none' + ) + ), + 'providesContext' => array( + 'comments/paginationArrow' => 'paginationArrow' + ), + 'supports' => array( + 'align' => true, + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'default' => array( + 'type' => 'flex' + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-comments-pagination-editor', + 'style' => 'wp-block-comments-pagination' + ), + 'comments-pagination-next' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-pagination-next', + 'title' => 'Comments Next Page', + 'category' => 'theme', + 'parent' => array( + 'core/comments-pagination' + ), + 'description' => 'Displays the next comment\'s page link.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postId', + 'comments/paginationArrow' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comments-pagination-numbers' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-pagination-numbers', + 'title' => 'Comments Page Numbers', + 'category' => 'theme', + 'parent' => array( + 'core/comments-pagination' + ), + 'description' => 'Displays a list of page numbers for comments pagination.', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comments-pagination-previous' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-pagination-previous', + 'title' => 'Comments Previous Page', + 'category' => 'theme', + 'parent' => array( + 'core/comments-pagination' + ), + 'description' => 'Displays the previous comment\'s page link.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postId', + 'comments/paginationArrow' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comments-title' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-title', + 'title' => 'Comments Title', + 'category' => 'theme', + 'ancestor' => array( + 'core/comments' + ), + 'description' => 'Displays a title with the number of comments', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId', + 'postType' + ), + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'showPostTitle' => array( + 'type' => 'boolean', + 'default' => true + ), + 'showCommentsCount' => array( + 'type' => 'boolean', + 'default' => true + ), + 'level' => array( + 'type' => 'number', + 'default' => 2 + ) + ), + 'supports' => array( + 'anchor' => false, + 'align' => true, + 'html' => false, + '__experimentalBorder' => array( + 'radius' => true, + 'color' => true, + 'width' => true, + 'style' => true + ), + 'color' => array( + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + '__experimentalFontFamily' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true + ) + ) + ) + ), + 'cover' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/cover', + 'title' => 'Cover', + 'category' => 'media', + 'description' => 'Add an image or video with a text overlay.', + 'textdomain' => 'default', + 'attributes' => array( + 'url' => array( + 'type' => 'string' + ), + 'useFeaturedImage' => array( + 'type' => 'boolean', + 'default' => false + ), + 'id' => array( + 'type' => 'number' + ), + 'alt' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'alt', + 'default' => '' + ), + 'hasParallax' => array( + 'type' => 'boolean', + 'default' => false + ), + 'isRepeated' => array( + 'type' => 'boolean', + 'default' => false + ), + 'dimRatio' => array( + 'type' => 'number', + 'default' => 100 + ), + 'overlayColor' => array( + 'type' => 'string' + ), + 'customOverlayColor' => array( + 'type' => 'string' + ), + 'backgroundType' => array( + 'type' => 'string', + 'default' => 'image' + ), + 'focalPoint' => array( + 'type' => 'object' + ), + 'minHeight' => array( + 'type' => 'number' + ), + 'minHeightUnit' => array( + 'type' => 'string' + ), + 'gradient' => array( + 'type' => 'string' + ), + 'customGradient' => array( + 'type' => 'string' + ), + 'contentPosition' => array( + 'type' => 'string' + ), + 'isDark' => array( + 'type' => 'boolean', + 'default' => true + ), + 'allowedBlocks' => array( + 'type' => 'array' + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ), + 'tagName' => array( + 'type' => 'string', + 'default' => 'div' + ) + ), + 'usesContext' => array( + 'postId', + 'postType' + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'html' => false, + 'spacing' => array( + 'padding' => true, + 'margin' => array( + 'top', + 'bottom' + ), + 'blockGap' => true, + '__experimentalDefaultControls' => array( + 'padding' => true, + 'blockGap' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + 'color' => array( + '__experimentalDuotone' => '> .wp-block-cover__image-background, > .wp-block-cover__video-background', + 'text' => true, + 'background' => false, + '__experimentalSkipSerialization' => array( + 'gradients' + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'layout' => array( + 'allowJustification' => false + ) + ), + 'editorStyle' => 'wp-block-cover-editor', + 'style' => 'wp-block-cover' + ), + 'details' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/details', + 'title' => 'Details', + 'category' => 'text', + 'description' => 'Hide and show additional content.', + 'keywords' => array( + 'disclosure', + 'summary', + 'hide' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'showContent' => array( + 'type' => 'boolean', + 'default' => false + ), + 'summary' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'width' => true, + 'style' => true + ), + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-details-editor', + 'style' => 'wp-block-details' + ), + 'embed' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/embed', + 'title' => 'Embed', + 'category' => 'embed', + 'description' => 'Add a block that displays content pulled from other sites, like Twitter or YouTube.', + 'textdomain' => 'default', + 'attributes' => array( + 'url' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + '__experimentalRole' => 'content' + ), + 'type' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'providerNameSlug' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'allowResponsive' => array( + 'type' => 'boolean', + 'default' => true + ), + 'responsive' => array( + 'type' => 'boolean', + 'default' => false, + '__experimentalRole' => 'content' + ), + 'previewable' => array( + 'type' => 'boolean', + 'default' => true, + '__experimentalRole' => 'content' + ) + ), + 'supports' => array( + 'align' => true, + 'spacing' => array( + 'margin' => true + ) + ), + 'editorStyle' => 'wp-block-embed-editor', + 'style' => 'wp-block-embed' + ), + 'file' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/file', + 'title' => 'File', + 'category' => 'media', + 'description' => 'Add a link to a downloadable file.', + 'keywords' => array( + 'document', + 'pdf', + 'download' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'id' => array( + 'type' => 'number' + ), + 'href' => array( + 'type' => 'string' + ), + 'fileId' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a:not([download])', + 'attribute' => 'id' + ), + 'fileName' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'a:not([download])' + ), + 'textLinkHref' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a:not([download])', + 'attribute' => 'href' + ), + 'textLinkTarget' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a:not([download])', + 'attribute' => 'target' + ), + 'showDownloadButton' => array( + 'type' => 'boolean', + 'default' => true + ), + 'downloadButtonText' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'a[download]' + ), + 'displayPreview' => array( + 'type' => 'boolean' + ), + 'previewHeight' => array( + 'type' => 'number', + 'default' => 600 + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'color' => array( + 'gradients' => true, + 'link' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true, + 'link' => true + ) + ) + ), + 'viewScript' => 'file:./view.min.js', + 'editorStyle' => 'wp-block-file-editor', + 'style' => 'wp-block-file' + ), + 'footnotes' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/footnotes', + 'title' => 'Footnotes', + 'category' => 'text', + 'description' => '', + 'keywords' => array( + 'references' + ), + 'textdomain' => 'default', + 'usesContext' => array( + 'postId', + 'postType' + ), + 'supports' => array( + 'html' => false, + 'multiple' => false, + 'inserter' => false, + 'reusable' => false + ), + 'style' => 'wp-block-footnotes' + ), + 'freeform' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/freeform', + 'title' => 'Classic', + 'category' => 'text', + 'description' => 'Use the classic WordPress editor.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'raw' + ) + ), + 'supports' => array( + 'className' => false, + 'customClassName' => false, + 'reusable' => false + ), + 'editorStyle' => 'wp-block-freeform-editor' + ), + 'gallery' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/gallery', + 'title' => 'Gallery', + 'category' => 'media', + 'description' => 'Display multiple images in a rich gallery.', + 'keywords' => array( + 'images', + 'photos' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'images' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => '.blocks-gallery-item', + 'query' => array( + 'url' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'src' + ), + 'fullUrl' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'data-full-url' + ), + 'link' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'data-link' + ), + 'alt' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'alt', + 'default' => '' + ), + 'id' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'data-id' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => '.blocks-gallery-item__caption' + ) + ) + ), + 'ids' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'number' + ), + 'default' => array( + + ) + ), + 'shortCodeTransforms' => array( + 'type' => 'array', + 'default' => array( + + ), + 'items' => array( + 'type' => 'object' + ) + ), + 'columns' => array( + 'type' => 'number', + 'minimum' => 1, + 'maximum' => 8 + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => '.blocks-gallery-caption' + ), + 'imageCrop' => array( + 'type' => 'boolean', + 'default' => true + ), + 'fixedHeight' => array( + 'type' => 'boolean', + 'default' => true + ), + 'linkTarget' => array( + 'type' => 'string' + ), + 'linkTo' => array( + 'type' => 'string' + ), + 'sizeSlug' => array( + 'type' => 'string', + 'default' => 'large' + ), + 'allowResize' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'providesContext' => array( + 'allowResize' => 'allowResize', + 'imageCrop' => 'imageCrop', + 'fixedHeight' => 'fixedHeight' + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'html' => false, + 'units' => array( + 'px', + 'em', + 'rem', + 'vh', + 'vw' + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true, + 'blockGap' => array( + 'horizontal', + 'vertical' + ), + '__experimentalSkipSerialization' => array( + 'blockGap' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true + ) + ), + 'color' => array( + 'text' => false, + 'background' => true, + 'gradients' => true + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'allowEditing' => false, + 'default' => array( + 'type' => 'flex' + ) + ) + ), + 'editorStyle' => 'wp-block-gallery-editor', + 'style' => 'wp-block-gallery' + ), + 'group' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/group', + 'title' => 'Group', + 'category' => 'design', + 'description' => 'Gather blocks in a layout container.', + 'keywords' => array( + 'container', + 'wrapper', + 'row', + 'section' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'tagName' => array( + 'type' => 'string', + 'default' => 'div' + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ), + 'allowedBlocks' => array( + 'type' => 'array' + ) + ), + 'supports' => array( + '__experimentalOnEnter' => true, + '__experimentalSettings' => true, + 'align' => array( + 'wide', + 'full' + ), + 'anchor' => true, + 'ariaLabel' => true, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ), + 'padding' => true, + 'blockGap' => true, + '__experimentalDefaultControls' => array( + 'padding' => true, + 'blockGap' => true + ) + ), + 'dimensions' => array( + 'minHeight' => true + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + 'position' => array( + 'sticky' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'layout' => array( + 'allowSizingOnChildren' => true + ) + ), + 'editorStyle' => 'wp-block-group-editor', + 'style' => 'wp-block-group' + ), + 'heading' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/heading', + 'title' => 'Heading', + 'category' => 'text', + 'description' => 'Introduce new sections and organize content to help visitors (and search engines) understand the structure of your content.', + 'keywords' => array( + 'title', + 'subtitle' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'h1,h2,h3,h4,h5,h6', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'level' => array( + 'type' => 'number', + 'default' => 2 + ), + 'placeholder' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'anchor' => true, + 'className' => true, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true, + 'textTransform' => true + ) + ), + '__unstablePasteTextInline' => true, + '__experimentalSlashInserter' => true + ), + 'editorStyle' => 'wp-block-heading-editor', + 'style' => 'wp-block-heading' + ), + 'home-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/home-link', + 'category' => 'design', + 'parent' => array( + 'core/navigation' + ), + 'title' => 'Home Link', + 'description' => 'Create a link that always points to the homepage of the site. Usually not necessary if there is already a site title link present in the header.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'fontSize', + 'customFontSize', + 'style' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-home-link-editor', + 'style' => 'wp-block-home-link' + ), + 'html' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/html', + 'title' => 'Custom HTML', + 'category' => 'widgets', + 'description' => 'Add custom HTML code and preview it as you edit.', + 'keywords' => array( + 'embed' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'raw' + ) + ), + 'supports' => array( + 'customClassName' => false, + 'className' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-html-editor' + ), + 'image' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/image', + 'title' => 'Image', + 'category' => 'media', + 'usesContext' => array( + 'allowResize', + 'imageCrop', + 'fixedHeight' + ), + 'description' => 'Insert an image to make a visual statement.', + 'keywords' => array( + 'img', + 'photo', + 'picture' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'align' => array( + 'type' => 'string' + ), + 'url' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'src', + '__experimentalRole' => 'content' + ), + 'alt' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'alt', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + '__experimentalRole' => 'content' + ), + 'title' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'title', + '__experimentalRole' => 'content' + ), + 'href' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure > a', + 'attribute' => 'href', + '__experimentalRole' => 'content' + ), + 'rel' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure > a', + 'attribute' => 'rel' + ), + 'linkClass' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure > a', + 'attribute' => 'class' + ), + 'id' => array( + 'type' => 'number', + '__experimentalRole' => 'content' + ), + 'width' => array( + 'type' => 'number' + ), + 'height' => array( + 'type' => 'number' + ), + 'aspectRatio' => array( + 'type' => 'string' + ), + 'scale' => array( + 'type' => 'string' + ), + 'sizeSlug' => array( + 'type' => 'string' + ), + 'linkDestination' => array( + 'type' => 'string' + ), + 'linkTarget' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure > a', + 'attribute' => 'target' + ) + ), + 'supports' => array( + 'anchor' => true, + 'behaviors' => array( + 'lightbox' => true + ), + 'color' => array( + 'text' => false, + 'background' => false + ), + 'filter' => array( + 'duotone' => true + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'width' => true, + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'width' => true + ) + ) + ), + 'selectors' => array( + 'border' => '.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder', + 'filter' => array( + 'duotone' => '.wp-block-image img, .wp-block-image .components-placeholder' + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'rounded', + 'label' => 'Rounded' + ) + ), + 'editorStyle' => 'wp-block-image-editor', + 'style' => 'wp-block-image' + ), + 'latest-comments' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/latest-comments', + 'title' => 'Latest Comments', + 'category' => 'widgets', + 'description' => 'Display a list of your most recent comments.', + 'keywords' => array( + 'recent comments' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'commentsToShow' => array( + 'type' => 'number', + 'default' => 5, + 'minimum' => 1, + 'maximum' => 100 + ), + 'displayAvatar' => array( + 'type' => 'boolean', + 'default' => true + ), + 'displayDate' => array( + 'type' => 'boolean', + 'default' => true + ), + 'displayExcerpt' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-latest-comments-editor', + 'style' => 'wp-block-latest-comments' + ), + 'latest-posts' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/latest-posts', + 'title' => 'Latest Posts', + 'category' => 'widgets', + 'description' => 'Display a list of your most recent posts.', + 'keywords' => array( + 'recent posts' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'categories' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'object' + ) + ), + 'selectedAuthor' => array( + 'type' => 'number' + ), + 'postsToShow' => array( + 'type' => 'number', + 'default' => 5 + ), + 'displayPostContent' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayPostContentRadio' => array( + 'type' => 'string', + 'default' => 'excerpt' + ), + 'excerptLength' => array( + 'type' => 'number', + 'default' => 55 + ), + 'displayAuthor' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayPostDate' => array( + 'type' => 'boolean', + 'default' => false + ), + 'postLayout' => array( + 'type' => 'string', + 'default' => 'list' + ), + 'columns' => array( + 'type' => 'number', + 'default' => 3 + ), + 'order' => array( + 'type' => 'string', + 'default' => 'desc' + ), + 'orderBy' => array( + 'type' => 'string', + 'default' => 'date' + ), + 'displayFeaturedImage' => array( + 'type' => 'boolean', + 'default' => false + ), + 'featuredImageAlign' => array( + 'type' => 'string', + 'enum' => array( + 'left', + 'center', + 'right' + ) + ), + 'featuredImageSizeSlug' => array( + 'type' => 'string', + 'default' => 'thumbnail' + ), + 'featuredImageSizeWidth' => array( + 'type' => 'number', + 'default' => null + ), + 'featuredImageSizeHeight' => array( + 'type' => 'number', + 'default' => null + ), + 'addLinkToFeaturedImage' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-latest-posts-editor', + 'style' => 'wp-block-latest-posts' + ), + 'legacy-widget' => array( + 'apiVersion' => 3, + 'name' => 'core/legacy-widget', + 'title' => 'Legacy Widget', + 'category' => 'widgets', + 'description' => 'Display a legacy widget.', + 'textdomain' => 'default', + 'attributes' => array( + 'id' => array( + 'type' => 'string', + 'default' => null + ), + 'idBase' => array( + 'type' => 'string', + 'default' => null + ), + 'instance' => array( + 'type' => 'object', + 'default' => null + ) + ), + 'supports' => array( + 'html' => false, + 'customClassName' => false, + 'reusable' => false + ), + 'editorStyle' => 'wp-block-legacy-widget-editor' + ), + 'list' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/list', + 'title' => 'List', + 'category' => 'text', + 'description' => 'Create a bulleted or numbered list.', + 'keywords' => array( + 'bullet list', + 'ordered list', + 'numbered list' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'ordered' => array( + 'type' => 'boolean', + 'default' => false, + '__experimentalRole' => 'content' + ), + 'values' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'ol,ul', + 'multiline' => 'li', + '__unstableMultilineWrapperTags' => array( + 'ol', + 'ul' + ), + 'default' => '', + '__experimentalRole' => 'content' + ), + 'type' => array( + 'type' => 'string' + ), + 'start' => array( + 'type' => 'number' + ), + 'reversed' => array( + 'type' => 'boolean' + ), + 'placeholder' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'anchor' => true, + 'className' => false, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + '__unstablePasteTextInline' => true, + '__experimentalSelector' => 'ol,ul', + '__experimentalSlashInserter' => true + ), + 'editorStyle' => 'wp-block-list-editor', + 'style' => 'wp-block-list' + ), + 'list-item' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/list-item', + 'title' => 'List item', + 'category' => 'text', + 'parent' => array( + 'core/list' + ), + 'description' => 'Create a list item.', + 'textdomain' => 'default', + 'attributes' => array( + 'placeholder' => array( + 'type' => 'string' + ), + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'li', + 'default' => '', + '__experimentalRole' => 'content' + ) + ), + 'supports' => array( + 'className' => false, + '__experimentalSelector' => 'li', + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'loginout' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/loginout', + 'title' => 'Login/out', + 'category' => 'theme', + 'description' => 'Show login & logout links.', + 'keywords' => array( + 'login', + 'logout', + 'form' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'displayLoginAsForm' => array( + 'type' => 'boolean', + 'default' => false + ), + 'redirectToCurrent' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'supports' => array( + 'className' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'media-text' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/media-text', + 'title' => 'Media & Text', + 'category' => 'media', + 'description' => 'Set media and words side-by-side for a richer layout.', + 'keywords' => array( + 'image', + 'video' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'align' => array( + 'type' => 'string', + 'default' => 'none' + ), + 'mediaAlt' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure img', + 'attribute' => 'alt', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'mediaPosition' => array( + 'type' => 'string', + 'default' => 'left' + ), + 'mediaId' => array( + 'type' => 'number', + '__experimentalRole' => 'content' + ), + 'mediaUrl' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure video,figure img', + 'attribute' => 'src', + '__experimentalRole' => 'content' + ), + 'mediaLink' => array( + 'type' => 'string' + ), + 'linkDestination' => array( + 'type' => 'string' + ), + 'linkTarget' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure a', + 'attribute' => 'target' + ), + 'href' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure a', + 'attribute' => 'href', + '__experimentalRole' => 'content' + ), + 'rel' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure a', + 'attribute' => 'rel' + ), + 'linkClass' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure a', + 'attribute' => 'class' + ), + 'mediaType' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'mediaWidth' => array( + 'type' => 'number', + 'default' => 50 + ), + 'mediaSizeSlug' => array( + 'type' => 'string' + ), + 'isStackedOnMobile' => array( + 'type' => 'boolean', + 'default' => true + ), + 'verticalAlignment' => array( + 'type' => 'string' + ), + 'imageFill' => array( + 'type' => 'boolean' + ), + 'focalPoint' => array( + 'type' => 'object' + ), + 'allowedBlocks' => array( + 'type' => 'array' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-media-text-editor', + 'style' => 'wp-block-media-text' + ), + 'missing' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/missing', + 'title' => 'Unsupported', + 'category' => 'text', + 'description' => 'Your site doesn’t include support for this block.', + 'textdomain' => 'default', + 'attributes' => array( + 'originalName' => array( + 'type' => 'string' + ), + 'originalUndelimitedContent' => array( + 'type' => 'string' + ), + 'originalContent' => array( + 'type' => 'string', + 'source' => 'html' + ) + ), + 'supports' => array( + 'className' => false, + 'customClassName' => false, + 'inserter' => false, + 'html' => false, + 'reusable' => false + ) + ), + 'more' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/more', + 'title' => 'More', + 'category' => 'design', + 'description' => 'Content before this block will be shown in the excerpt on your archives page.', + 'keywords' => array( + 'read more' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'customText' => array( + 'type' => 'string' + ), + 'noTeaser' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'customClassName' => false, + 'className' => false, + 'html' => false, + 'multiple' => false + ), + 'editorStyle' => 'wp-block-more-editor' + ), + 'navigation' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/navigation', + 'title' => 'Navigation', + 'category' => 'theme', + 'description' => 'A collection of blocks that allow visitors to get around your site.', + 'keywords' => array( + 'menu', + 'navigation', + 'links' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'ref' => array( + 'type' => 'number' + ), + 'textColor' => array( + 'type' => 'string' + ), + 'customTextColor' => array( + 'type' => 'string' + ), + 'rgbTextColor' => array( + 'type' => 'string' + ), + 'backgroundColor' => array( + 'type' => 'string' + ), + 'customBackgroundColor' => array( + 'type' => 'string' + ), + 'rgbBackgroundColor' => array( + 'type' => 'string' + ), + 'showSubmenuIcon' => array( + 'type' => 'boolean', + 'default' => true + ), + 'openSubmenusOnClick' => array( + 'type' => 'boolean', + 'default' => false + ), + 'overlayMenu' => array( + 'type' => 'string', + 'default' => 'mobile' + ), + 'icon' => array( + 'type' => 'string', + 'default' => 'handle' + ), + 'hasIcon' => array( + 'type' => 'boolean', + 'default' => true + ), + '__unstableLocation' => array( + 'type' => 'string' + ), + 'overlayBackgroundColor' => array( + 'type' => 'string' + ), + 'customOverlayBackgroundColor' => array( + 'type' => 'string' + ), + 'overlayTextColor' => array( + 'type' => 'string' + ), + 'customOverlayTextColor' => array( + 'type' => 'string' + ), + 'maxNestingLevel' => array( + 'type' => 'number', + 'default' => 5 + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ) + ), + 'providesContext' => array( + 'textColor' => 'textColor', + 'customTextColor' => 'customTextColor', + 'backgroundColor' => 'backgroundColor', + 'customBackgroundColor' => 'customBackgroundColor', + 'overlayTextColor' => 'overlayTextColor', + 'customOverlayTextColor' => 'customOverlayTextColor', + 'overlayBackgroundColor' => 'overlayBackgroundColor', + 'customOverlayBackgroundColor' => 'customOverlayBackgroundColor', + 'fontSize' => 'fontSize', + 'customFontSize' => 'customFontSize', + 'showSubmenuIcon' => 'showSubmenuIcon', + 'openSubmenusOnClick' => 'openSubmenusOnClick', + 'style' => 'style', + 'maxNestingLevel' => 'maxNestingLevel' + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'inserter' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalTextTransform' => true, + '__experimentalFontFamily' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextDecoration' => true, + '__experimentalSkipSerialization' => array( + 'textDecoration' + ), + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'spacing' => array( + 'blockGap' => true, + 'units' => array( + 'px', + 'em', + 'rem', + 'vh', + 'vw' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'allowVerticalAlignment' => false, + 'allowSizingOnChildren' => true, + 'default' => array( + 'type' => 'flex' + ) + ), + '__experimentalStyle' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'inherit' + ) + ) + ) + ) + ), + 'viewScript' => array( + 'file:./view.min.js', + 'file:./view-modal.min.js' + ), + 'editorStyle' => 'wp-block-navigation-editor', + 'style' => 'wp-block-navigation' + ), + 'navigation-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/navigation-link', + 'title' => 'Custom Link', + 'category' => 'design', + 'parent' => array( + 'core/navigation' + ), + 'description' => 'Add a page, link, or another item to your navigation.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ), + 'type' => array( + 'type' => 'string' + ), + 'description' => array( + 'type' => 'string' + ), + 'rel' => array( + 'type' => 'string' + ), + 'id' => array( + 'type' => 'number' + ), + 'opensInNewTab' => array( + 'type' => 'boolean', + 'default' => false + ), + 'url' => array( + 'type' => 'string' + ), + 'title' => array( + 'type' => 'string' + ), + 'kind' => array( + 'type' => 'string' + ), + 'isTopLevelLink' => array( + 'type' => 'boolean' + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'overlayTextColor', + 'customOverlayTextColor', + 'overlayBackgroundColor', + 'customOverlayBackgroundColor', + 'fontSize', + 'customFontSize', + 'showSubmenuIcon', + 'maxNestingLevel', + 'style' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + '__experimentalSlashInserter' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-navigation-link-editor', + 'style' => 'wp-block-navigation-link' + ), + 'navigation-submenu' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/navigation-submenu', + 'title' => 'Submenu', + 'category' => 'design', + 'parent' => array( + 'core/navigation' + ), + 'description' => 'Add a submenu to your navigation.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ), + 'type' => array( + 'type' => 'string' + ), + 'description' => array( + 'type' => 'string' + ), + 'rel' => array( + 'type' => 'string' + ), + 'id' => array( + 'type' => 'number' + ), + 'opensInNewTab' => array( + 'type' => 'boolean', + 'default' => false + ), + 'url' => array( + 'type' => 'string' + ), + 'title' => array( + 'type' => 'string' + ), + 'kind' => array( + 'type' => 'string' + ), + 'isTopLevelItem' => array( + 'type' => 'boolean' + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'overlayTextColor', + 'customOverlayTextColor', + 'overlayBackgroundColor', + 'customOverlayBackgroundColor', + 'fontSize', + 'customFontSize', + 'showSubmenuIcon', + 'maxNestingLevel', + 'openSubmenusOnClick', + 'style' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-navigation-submenu-editor', + 'style' => 'wp-block-navigation-submenu' + ), + 'nextpage' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/nextpage', + 'title' => 'Page Break', + 'category' => 'design', + 'description' => 'Separate your content into a multi-page experience.', + 'keywords' => array( + 'next page', + 'pagination' + ), + 'parent' => array( + 'core/post-content' + ), + 'textdomain' => 'default', + 'supports' => array( + 'customClassName' => false, + 'className' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-nextpage-editor' + ), + 'page-list' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/page-list', + 'title' => 'Page List', + 'category' => 'widgets', + 'description' => 'Display a list of all pages.', + 'keywords' => array( + 'menu', + 'navigation' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'parentPageID' => array( + 'type' => 'integer', + 'default' => 0 + ), + 'isNested' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'overlayTextColor', + 'customOverlayTextColor', + 'overlayBackgroundColor', + 'customOverlayBackgroundColor', + 'fontSize', + 'customFontSize', + 'showSubmenuIcon', + 'style', + 'openSubmenusOnClick' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-page-list-editor', + 'style' => 'wp-block-page-list' + ), + 'page-list-item' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/page-list-item', + 'title' => 'Page List Item', + 'category' => 'widgets', + 'parent' => array( + 'core/page-list' + ), + 'description' => 'Displays a page inside a list of all pages.', + 'keywords' => array( + 'page', + 'menu', + 'navigation' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'id' => array( + 'type' => 'number' + ), + 'label' => array( + 'type' => 'string' + ), + 'title' => array( + 'type' => 'string' + ), + 'link' => array( + 'type' => 'string' + ), + 'hasChildren' => array( + 'type' => 'boolean' + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'overlayTextColor', + 'customOverlayTextColor', + 'overlayBackgroundColor', + 'customOverlayBackgroundColor', + 'fontSize', + 'customFontSize', + 'showSubmenuIcon', + 'style', + 'openSubmenusOnClick' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'lock' => false, + 'inserter' => false, + '__experimentalToolbar' => false + ), + 'editorStyle' => 'wp-block-page-list-editor', + 'style' => 'wp-block-page-list' + ), + 'paragraph' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/paragraph', + 'title' => 'Paragraph', + 'category' => 'text', + 'description' => 'Start with the basic building block of all narrative.', + 'keywords' => array( + 'text' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'align' => array( + 'type' => 'string' + ), + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'p', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'dropCap' => array( + 'type' => 'boolean', + 'default' => false + ), + 'placeholder' => array( + 'type' => 'string' + ), + 'direction' => array( + 'type' => 'string', + 'enum' => array( + 'ltr', + 'rtl' + ) + ) + ), + 'supports' => array( + 'anchor' => true, + 'className' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalTextDecoration' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + '__experimentalSelector' => 'p', + '__unstablePasteTextInline' => true + ), + 'editorStyle' => 'wp-block-paragraph-editor', + 'style' => 'wp-block-paragraph' + ), + 'pattern' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/pattern', + 'title' => 'Pattern placeholder', + 'category' => 'theme', + 'description' => 'Show a block pattern.', + 'supports' => array( + 'html' => false, + 'inserter' => false + ), + 'textdomain' => 'default', + 'attributes' => array( + 'slug' => array( + 'type' => 'string' + ) + ) + ), + 'post-author' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-author', + 'title' => 'Post Author', + 'category' => 'theme', + 'description' => 'Display post author details such as name, avatar, and bio.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'avatarSize' => array( + 'type' => 'number', + 'default' => 48 + ), + 'showAvatar' => array( + 'type' => 'boolean', + 'default' => true + ), + 'showBio' => array( + 'type' => 'boolean' + ), + 'byline' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'usesContext' => array( + 'postType', + 'postId', + 'queryId' + ), + 'supports' => array( + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDuotone' => '.wp-block-post-author__avatar img', + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ) + ), + 'style' => 'wp-block-post-author' + ), + 'post-author-biography' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-author-biography', + 'title' => 'Post Author Biography', + 'category' => 'theme', + 'description' => 'The author biography.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postType', + 'postId' + ), + 'supports' => array( + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'post-author-name' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-author-name', + 'title' => 'Post Author Name', + 'category' => 'theme', + 'description' => 'The author name.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'usesContext' => array( + 'postType', + 'postId' + ), + 'supports' => array( + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'post-comments-form' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-comments-form', + 'title' => 'Post Comments Form', + 'category' => 'theme', + 'description' => 'Display a post\'s comments form.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postId', + 'postType' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-post-comments-form-editor', + 'style' => array( + 'wp-block-post-comments-form', + 'wp-block-buttons', + 'wp-block-button' + ) + ), + 'post-content' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-content', + 'title' => 'Post Content', + 'category' => 'theme', + 'description' => 'Displays the contents of a post or page.', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'layout' => true, + 'dimensions' => array( + 'minHeight' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-post-content-editor' + ), + 'post-date' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-date', + 'title' => 'Post Date', + 'category' => 'theme', + 'description' => 'Add the date of this post.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'format' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayType' => array( + 'type' => 'string', + 'default' => 'date' + ) + ), + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'post-excerpt' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-excerpt', + 'title' => 'Excerpt', + 'category' => 'theme', + 'description' => 'Display the excerpt.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'moreText' => array( + 'type' => 'string' + ), + 'showMoreOnNewLine' => array( + 'type' => 'boolean', + 'default' => true + ), + 'excerptLength' => array( + 'type' => 'number', + 'default' => 55 + ) + ), + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-post-excerpt-editor', + 'style' => 'wp-block-post-excerpt' + ), + 'post-featured-image' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-featured-image', + 'title' => 'Post Featured Image', + 'category' => 'theme', + 'description' => 'Display a post\'s featured image.', + 'textdomain' => 'default', + 'attributes' => array( + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'aspectRatio' => array( + 'type' => 'string' + ), + 'width' => array( + 'type' => 'string' + ), + 'height' => array( + 'type' => 'string' + ), + 'scale' => array( + 'type' => 'string', + 'default' => 'cover' + ), + 'sizeSlug' => array( + 'type' => 'string' + ), + 'rel' => array( + 'type' => 'string', + 'attribute' => 'rel', + 'default' => '' + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ), + 'overlayColor' => array( + 'type' => 'string' + ), + 'customOverlayColor' => array( + 'type' => 'string' + ), + 'dimRatio' => array( + 'type' => 'number', + 'default' => 0 + ), + 'gradient' => array( + 'type' => 'string' + ), + 'customGradient' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'supports' => array( + 'align' => array( + 'left', + 'right', + 'center', + 'wide', + 'full' + ), + 'color' => array( + '__experimentalDuotone' => 'img, .wp-block-post-featured-image__placeholder, .components-placeholder__illustration, .components-placeholder::before', + 'text' => false, + 'background' => false + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'width' => true, + '__experimentalSelector' => 'img, .block-editor-media-placeholder, .wp-block-post-featured-image__overlay', + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'width' => true + ) + ), + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ) + ), + 'editorStyle' => 'wp-block-post-featured-image-editor', + 'style' => 'wp-block-post-featured-image' + ), + 'post-navigation-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-navigation-link', + 'title' => 'Post Navigation Link', + 'category' => 'theme', + 'description' => 'Displays the next or previous post link that is adjacent to the current post.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'type' => array( + 'type' => 'string', + 'default' => 'next' + ), + 'label' => array( + 'type' => 'string' + ), + 'showTitle' => array( + 'type' => 'boolean', + 'default' => false + ), + 'linkLabel' => array( + 'type' => 'boolean', + 'default' => false + ), + 'arrow' => array( + 'type' => 'string', + 'default' => 'none' + ) + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'link' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-post-navigation-link' + ), + 'post-template' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-template', + 'title' => 'Post Template', + 'category' => 'theme', + 'parent' => array( + 'core/query' + ), + 'description' => 'Contains the block elements used to render a post, like the title, date, featured image, content or excerpt, and more.', + 'textdomain' => 'default', + 'usesContext' => array( + 'queryId', + 'query', + 'queryContext', + 'displayLayout', + 'templateSlug', + 'previewPostType' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'align' => array( + 'wide', + 'full' + ), + 'layout' => true, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'spacing' => array( + 'blockGap' => array( + '__experimentalDefault' => '1.25em' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true + ) + ) + ), + 'style' => 'wp-block-post-template', + 'editorStyle' => 'wp-block-post-template-editor' + ), + 'post-terms' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-terms', + 'title' => 'Post Terms', + 'category' => 'theme', + 'description' => 'Post terms.', + 'textdomain' => 'default', + 'attributes' => array( + 'term' => array( + 'type' => 'string' + ), + 'textAlign' => array( + 'type' => 'string' + ), + 'separator' => array( + 'type' => 'string', + 'default' => ', ' + ), + 'prefix' => array( + 'type' => 'string', + 'default' => '' + ), + 'suffix' => array( + 'type' => 'string', + 'default' => '' + ) + ), + 'usesContext' => array( + 'postId', + 'postType' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-post-terms' + ), + 'post-title' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-title', + 'title' => 'Title', + 'category' => 'theme', + 'description' => 'Displays the title of a post, page, or any other content-type.', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'level' => array( + 'type' => 'number', + 'default' => 2 + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'rel' => array( + 'type' => 'string', + 'attribute' => 'rel', + 'default' => '' + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true, + 'textTransform' => true + ) + ) + ), + 'style' => 'wp-block-post-title' + ), + 'preformatted' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/preformatted', + 'title' => 'Preformatted', + 'category' => 'text', + 'description' => 'Add text that respects your spacing and tabs, and also allows styling.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'pre', + 'default' => '', + '__unstablePreserveWhiteSpace' => true, + '__experimentalRole' => 'content' + ) + ), + 'supports' => array( + 'anchor' => true, + 'color' => array( + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-preformatted' + ), + 'pullquote' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/pullquote', + 'title' => 'Pullquote', + 'category' => 'text', + 'description' => 'Give special visual emphasis to a quote from your text.', + 'textdomain' => 'default', + 'attributes' => array( + 'value' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'p', + '__experimentalRole' => 'content' + ), + 'citation' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'cite', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'left', + 'right', + 'wide', + 'full' + ), + 'color' => array( + 'gradients' => true, + 'background' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + '__experimentalStyle' => array( + 'typography' => array( + 'fontSize' => '1.5em', + 'lineHeight' => '1.6' + ) + ) + ), + 'editorStyle' => 'wp-block-pullquote-editor', + 'style' => 'wp-block-pullquote' + ), + 'query' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query', + 'title' => 'Query Loop', + 'category' => 'theme', + 'description' => 'An advanced block that allows displaying post types based on different query parameters and visual configurations.', + 'textdomain' => 'default', + 'attributes' => array( + 'queryId' => array( + 'type' => 'number' + ), + 'query' => array( + 'type' => 'object', + 'default' => array( + 'perPage' => null, + 'pages' => 0, + 'offset' => 0, + 'postType' => 'post', + 'order' => 'desc', + 'orderBy' => 'date', + 'author' => '', + 'search' => '', + 'exclude' => array( + + ), + 'sticky' => '', + 'inherit' => true, + 'taxQuery' => null, + 'parents' => array( + + ) + ) + ), + 'tagName' => array( + 'type' => 'string', + 'default' => 'div' + ), + 'namespace' => array( + 'type' => 'string' + ) + ), + 'providesContext' => array( + 'queryId' => 'queryId', + 'query' => 'query', + 'displayLayout' => 'displayLayout' + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'layout' => true + ), + 'editorStyle' => 'wp-block-query-editor' + ), + 'query-no-results' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-no-results', + 'title' => 'No results', + 'category' => 'theme', + 'description' => 'Contains the block elements used to render content when no query results are found.', + 'parent' => array( + 'core/query' + ), + 'textdomain' => 'default', + 'usesContext' => array( + 'queryId', + 'query' + ), + 'supports' => array( + 'align' => true, + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'query-pagination' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-pagination', + 'title' => 'Pagination', + 'category' => 'theme', + 'parent' => array( + 'core/query' + ), + 'description' => 'Displays a paginated navigation to next/previous set of posts, when applicable.', + 'textdomain' => 'default', + 'attributes' => array( + 'paginationArrow' => array( + 'type' => 'string', + 'default' => 'none' + ), + 'showLabel' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'usesContext' => array( + 'queryId', + 'query' + ), + 'providesContext' => array( + 'paginationArrow' => 'paginationArrow', + 'showLabel' => 'showLabel' + ), + 'supports' => array( + 'align' => true, + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'default' => array( + 'type' => 'flex' + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-query-pagination-editor', + 'style' => 'wp-block-query-pagination' + ), + 'query-pagination-next' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-pagination-next', + 'title' => 'Next Page', + 'category' => 'theme', + 'parent' => array( + 'core/query-pagination' + ), + 'description' => 'Displays the next posts page link.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'queryId', + 'query', + 'paginationArrow', + 'showLabel' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'query-pagination-numbers' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-pagination-numbers', + 'title' => 'Page Numbers', + 'category' => 'theme', + 'parent' => array( + 'core/query-pagination' + ), + 'description' => 'Displays a list of page numbers for pagination', + 'textdomain' => 'default', + 'usesContext' => array( + 'queryId', + 'query' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-query-pagination-numbers-editor' + ), + 'query-pagination-previous' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-pagination-previous', + 'title' => 'Previous Page', + 'category' => 'theme', + 'parent' => array( + 'core/query-pagination' + ), + 'description' => 'Displays the previous posts page link.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'queryId', + 'query', + 'paginationArrow', + 'showLabel' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'query-title' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-title', + 'title' => 'Query Title', + 'category' => 'theme', + 'description' => 'Display the query title.', + 'textdomain' => 'default', + 'attributes' => array( + 'type' => array( + 'type' => 'string' + ), + 'textAlign' => array( + 'type' => 'string' + ), + 'level' => array( + 'type' => 'number', + 'default' => 1 + ), + 'showPrefix' => array( + 'type' => 'boolean', + 'default' => true + ), + 'showSearchTerm' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true, + 'textTransform' => true + ) + ) + ), + 'style' => 'wp-block-query-title' + ), + 'quote' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/quote', + 'title' => 'Quote', + 'category' => 'text', + 'description' => 'Give quoted text visual emphasis. "In quoting others, we cite ourselves." — Julio Cortázar', + 'keywords' => array( + 'blockquote', + 'cite' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'value' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'blockquote', + 'multiline' => 'p', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'citation' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'cite', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'align' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'anchor' => true, + 'html' => false, + '__experimentalOnEnter' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true + ) + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'plain', + 'label' => 'Plain' + ) + ), + 'editorStyle' => 'wp-block-quote-editor', + 'style' => 'wp-block-quote' + ), + 'read-more' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/read-more', + 'title' => 'Read More', + 'category' => 'theme', + 'description' => 'Displays the link of a post, page, or any other content-type.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string' + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'usesContext' => array( + 'postId' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextDecoration' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'textDecoration' => true + ) + ), + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ), + 'padding' => true, + '__experimentalDefaultControls' => array( + 'padding' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'width' => true + ) + ) + ), + 'style' => 'wp-block-read-more' + ), + 'rss' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/rss', + 'title' => 'RSS', + 'category' => 'widgets', + 'description' => 'Display entries from any RSS or Atom feed.', + 'keywords' => array( + 'atom', + 'feed' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'columns' => array( + 'type' => 'number', + 'default' => 2 + ), + 'blockLayout' => array( + 'type' => 'string', + 'default' => 'list' + ), + 'feedURL' => array( + 'type' => 'string', + 'default' => '' + ), + 'itemsToShow' => array( + 'type' => 'number', + 'default' => 5 + ), + 'displayExcerpt' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayAuthor' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayDate' => array( + 'type' => 'boolean', + 'default' => false + ), + 'excerptLength' => array( + 'type' => 'number', + 'default' => 55 + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false + ), + 'editorStyle' => 'wp-block-rss-editor', + 'style' => 'wp-block-rss' + ), + 'search' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/search', + 'title' => 'Search', + 'category' => 'widgets', + 'description' => 'Help visitors find your content.', + 'keywords' => array( + 'find' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'showLabel' => array( + 'type' => 'boolean', + 'default' => true + ), + 'placeholder' => array( + 'type' => 'string', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'width' => array( + 'type' => 'number' + ), + 'widthUnit' => array( + 'type' => 'string' + ), + 'buttonText' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'buttonPosition' => array( + 'type' => 'string', + 'default' => 'button-outside' + ), + 'buttonUseIcon' => array( + 'type' => 'boolean', + 'default' => false + ), + 'query' => array( + 'type' => 'object', + 'default' => array( + + ) + ), + 'buttonBehavior' => array( + 'type' => 'string', + 'default' => 'expand-searchfield' + ), + 'isSearchFieldHidden' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'align' => array( + 'left', + 'center', + 'right' + ), + 'color' => array( + 'gradients' => true, + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + '__experimentalSkipSerialization' => true, + '__experimentalSelector' => '.wp-block-search__label, .wp-block-search__input, .wp-block-search__button', + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'width' => true, + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'width' => true + ) + ), + 'html' => false + ), + 'editorStyle' => 'wp-block-search-editor', + 'style' => 'wp-block-search' + ), + 'separator' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/separator', + 'title' => 'Separator', + 'category' => 'design', + 'description' => 'Create a break between ideas or sections with a horizontal separator.', + 'keywords' => array( + 'horizontal-line', + 'hr', + 'divider' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'opacity' => array( + 'type' => 'string', + 'default' => 'alpha-channel' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'center', + 'wide', + 'full' + ), + 'color' => array( + 'enableContrastChecker' => false, + '__experimentalSkipSerialization' => true, + 'gradients' => true, + 'background' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ) + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'wide', + 'label' => 'Wide Line' + ), + array( + 'name' => 'dots', + 'label' => 'Dots' + ) + ), + 'editorStyle' => 'wp-block-separator-editor', + 'style' => 'wp-block-separator' + ), + 'shortcode' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/shortcode', + 'title' => 'Shortcode', + 'category' => 'widgets', + 'description' => 'Insert additional custom elements with a WordPress shortcode.', + 'textdomain' => 'default', + 'attributes' => array( + 'text' => array( + 'type' => 'string', + 'source' => 'raw' + ) + ), + 'supports' => array( + 'className' => false, + 'customClassName' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-shortcode-editor' + ), + 'site-logo' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/site-logo', + 'title' => 'Site Logo', + 'category' => 'theme', + 'description' => 'Display an image to represent this site. Update this block and the changes apply everywhere.', + 'textdomain' => 'default', + 'attributes' => array( + 'width' => array( + 'type' => 'number' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => true + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ), + 'shouldSyncIcon' => array( + 'type' => 'boolean' + ) + ), + 'example' => array( + 'viewportWidth' => 500, + 'attributes' => array( + 'width' => 350, + 'className' => 'block-editor-block-types-list__site-logo-example' + ) + ), + 'supports' => array( + 'html' => false, + 'align' => true, + 'alignWide' => false, + 'color' => array( + '__experimentalDuotone' => 'img, .components-placeholder__illustration, .components-placeholder::before', + 'text' => false, + 'background' => false + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'rounded', + 'label' => 'Rounded' + ) + ), + 'editorStyle' => 'wp-block-site-logo-editor', + 'style' => 'wp-block-site-logo' + ), + 'site-tagline' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/site-tagline', + 'title' => 'Site Tagline', + 'category' => 'theme', + 'description' => 'Describe in a few words what the site is about. The tagline can be used in search results or when sharing on social networks even if it’s not displayed in the theme design.', + 'keywords' => array( + 'description' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'example' => array( + + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-site-tagline-editor' + ), + 'site-title' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/site-title', + 'title' => 'Site Title', + 'category' => 'theme', + 'description' => 'Displays the name of this site. Update the block, and the changes apply everywhere it’s used. This will also appear in the browser title bar and in search results.', + 'textdomain' => 'default', + 'attributes' => array( + 'level' => array( + 'type' => 'number', + 'default' => 1 + ), + 'textAlign' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => true + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'example' => array( + 'viewportWidth' => 500 + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'padding' => true, + 'margin' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'lineHeight' => true, + 'fontAppearance' => true, + 'letterSpacing' => true, + 'textTransform' => true + ) + ) + ), + 'editorStyle' => 'wp-block-site-title-editor', + 'style' => 'wp-block-site-title' + ), + 'social-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/social-link', + 'title' => 'Social Icon', + 'category' => 'widgets', + 'parent' => array( + 'core/social-links' + ), + 'description' => 'Display an icon linking to a social media profile or site.', + 'textdomain' => 'default', + 'attributes' => array( + 'url' => array( + 'type' => 'string' + ), + 'service' => array( + 'type' => 'string' + ), + 'label' => array( + 'type' => 'string' + ), + 'rel' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'openInNewTab', + 'showLabels', + 'iconColor', + 'iconColorValue', + 'iconBackgroundColor', + 'iconBackgroundColorValue' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-social-link-editor' + ), + 'social-links' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/social-links', + 'title' => 'Social Icons', + 'category' => 'widgets', + 'description' => 'Display icons linking to your social media profiles or sites.', + 'keywords' => array( + 'links' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'iconColor' => array( + 'type' => 'string' + ), + 'customIconColor' => array( + 'type' => 'string' + ), + 'iconColorValue' => array( + 'type' => 'string' + ), + 'iconBackgroundColor' => array( + 'type' => 'string' + ), + 'customIconBackgroundColor' => array( + 'type' => 'string' + ), + 'iconBackgroundColorValue' => array( + 'type' => 'string' + ), + 'openInNewTab' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showLabels' => array( + 'type' => 'boolean', + 'default' => false + ), + 'size' => array( + 'type' => 'string' + ) + ), + 'providesContext' => array( + 'openInNewTab' => 'openInNewTab', + 'showLabels' => 'showLabels', + 'iconColor' => 'iconColor', + 'iconColorValue' => 'iconColorValue', + 'iconBackgroundColor' => 'iconBackgroundColor', + 'iconBackgroundColorValue' => 'iconBackgroundColorValue' + ), + 'supports' => array( + 'align' => array( + 'left', + 'center', + 'right' + ), + 'anchor' => true, + '__experimentalExposeControlsToChildren' => true, + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'allowVerticalAlignment' => false, + 'default' => array( + 'type' => 'flex' + ) + ), + 'color' => array( + 'enableContrastChecker' => false, + 'background' => true, + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => false + ) + ), + 'spacing' => array( + 'blockGap' => array( + 'horizontal', + 'vertical' + ), + 'margin' => true, + 'padding' => true, + 'units' => array( + 'px', + 'em', + 'rem', + 'vh', + 'vw' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true + ) + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'logos-only', + 'label' => 'Logos Only' + ), + array( + 'name' => 'pill-shape', + 'label' => 'Pill Shape' + ) + ), + 'editorStyle' => 'wp-block-social-links-editor', + 'style' => 'wp-block-social-links' + ), + 'spacer' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/spacer', + 'title' => 'Spacer', + 'category' => 'design', + 'description' => 'Add white space between blocks and customize its height.', + 'textdomain' => 'default', + 'attributes' => array( + 'height' => array( + 'type' => 'string', + 'default' => '100px' + ), + 'width' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'orientation' + ), + 'supports' => array( + 'anchor' => true, + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ), + '__experimentalDefaultControls' => array( + 'margin' => true + ) + ) + ), + 'editorStyle' => 'wp-block-spacer-editor', + 'style' => 'wp-block-spacer' + ), + 'table' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/table', + 'title' => 'Table', + 'category' => 'text', + 'description' => 'Create structured content in rows and columns to display information.', + 'textdomain' => 'default', + 'attributes' => array( + 'hasFixedLayout' => array( + 'type' => 'boolean', + 'default' => false + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + 'default' => '' + ), + 'head' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'thead tr', + 'query' => array( + 'cells' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'td,th', + 'query' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html' + ), + 'tag' => array( + 'type' => 'string', + 'default' => 'td', + 'source' => 'tag' + ), + 'scope' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'scope' + ), + 'align' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'data-align' + ), + 'colspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'colspan' + ), + 'rowspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'rowspan' + ) + ) + ) + ) + ), + 'body' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'tbody tr', + 'query' => array( + 'cells' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'td,th', + 'query' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html' + ), + 'tag' => array( + 'type' => 'string', + 'default' => 'td', + 'source' => 'tag' + ), + 'scope' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'scope' + ), + 'align' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'data-align' + ), + 'colspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'colspan' + ), + 'rowspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'rowspan' + ) + ) + ) + ) + ), + 'foot' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'tfoot tr', + 'query' => array( + 'cells' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'td,th', + 'query' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html' + ), + 'tag' => array( + 'type' => 'string', + 'default' => 'td', + 'source' => 'tag' + ), + 'scope' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'scope' + ), + 'align' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'data-align' + ), + 'colspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'colspan' + ), + 'rowspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'rowspan' + ) + ) + ) + ) + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'color' => array( + '__experimentalSkipSerialization' => true, + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + '__experimentalBorder' => array( + '__experimentalSkipSerialization' => true, + 'color' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'style' => true, + 'width' => true + ) + ), + '__experimentalSelector' => '.wp-block-table > table' + ), + 'styles' => array( + array( + 'name' => 'regular', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'stripes', + 'label' => 'Stripes' + ) + ), + 'editorStyle' => 'wp-block-table-editor', + 'style' => 'wp-block-table' + ), + 'tag-cloud' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/tag-cloud', + 'title' => 'Tag Cloud', + 'category' => 'widgets', + 'description' => 'A cloud of your most used tags.', + 'textdomain' => 'default', + 'attributes' => array( + 'numberOfTags' => array( + 'type' => 'number', + 'default' => 45, + 'minimum' => 1, + 'maximum' => 100 + ), + 'taxonomy' => array( + 'type' => 'string', + 'default' => 'post_tag' + ), + 'showTagCounts' => array( + 'type' => 'boolean', + 'default' => false + ), + 'smallestFontSize' => array( + 'type' => 'string', + 'default' => '8pt' + ), + 'largestFontSize' => array( + 'type' => 'string', + 'default' => '22pt' + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'outline', + 'label' => 'Outline' + ) + ), + 'supports' => array( + 'html' => false, + 'align' => true, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalLetterSpacing' => true + ) + ), + 'editorStyle' => 'wp-block-tag-cloud-editor' + ), + 'template-part' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/template-part', + 'title' => 'Template Part', + 'category' => 'theme', + 'description' => 'Edit the different global regions of your site, like the header, footer, sidebar, or create your own.', + 'textdomain' => 'default', + 'attributes' => array( + 'slug' => array( + 'type' => 'string' + ), + 'theme' => array( + 'type' => 'string' + ), + 'tagName' => array( + 'type' => 'string' + ), + 'area' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'reusable' => false + ), + 'editorStyle' => 'wp-block-template-part-editor' + ), + 'term-description' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/term-description', + 'title' => 'Term Description', + 'category' => 'theme', + 'description' => 'Display the description of categories, tags and custom taxonomies when viewing an archive.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'padding' => true, + 'margin' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'text-columns' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/text-columns', + 'title' => 'Text Columns (deprecated)', + 'icon' => 'columns', + 'category' => 'design', + 'description' => 'This block is deprecated. Please use the Columns block instead.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'array', + 'source' => 'query', + 'selector' => 'p', + 'query' => array( + 'children' => array( + 'type' => 'string', + 'source' => 'html' + ) + ), + 'default' => array( + array( + + ), + array( + + ) + ) + ), + 'columns' => array( + 'type' => 'number', + 'default' => 2 + ), + 'width' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'inserter' => false + ), + 'editorStyle' => 'wp-block-text-columns-editor', + 'style' => 'wp-block-text-columns' + ), + 'verse' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/verse', + 'title' => 'Verse', + 'category' => 'text', + 'description' => 'Insert poetry. Use special spacing formats. Or quote song lyrics.', + 'keywords' => array( + 'poetry', + 'poem' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'pre', + 'default' => '', + '__unstablePreserveWhiteSpace' => true, + '__experimentalRole' => 'content' + ), + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'anchor' => true, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + '__experimentalFontFamily' => true, + 'lineHeight' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + '__experimentalBorder' => array( + 'radius' => true, + 'width' => true, + 'color' => true, + 'style' => true + ) + ), + 'style' => 'wp-block-verse', + 'editorStyle' => 'wp-block-verse-editor' + ), + 'video' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/video', + 'title' => 'Video', + 'category' => 'media', + 'description' => 'Embed a video from your media library or upload a new one.', + 'keywords' => array( + 'movie' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'autoplay' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'autoplay' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + '__experimentalRole' => 'content' + ), + 'controls' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'controls', + 'default' => true + ), + 'id' => array( + 'type' => 'number', + '__experimentalRole' => 'content' + ), + 'loop' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'loop' + ), + 'muted' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'muted' + ), + 'poster' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'poster' + ), + 'preload' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'preload', + 'default' => 'metadata' + ), + 'src' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'src', + '__experimentalRole' => 'content' + ), + 'playsInline' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'playsinline' + ), + 'tracks' => array( + '__experimentalRole' => 'content', + 'type' => 'array', + 'items' => array( + 'type' => 'object' + ), + 'default' => array( + + ) + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ) + ), + 'editorStyle' => 'wp-block-video-editor', + 'style' => 'wp-block-video' + ), + 'widget-group' => array( + 'apiVersion' => 3, + 'name' => 'core/widget-group', + 'category' => 'widgets', + 'attributes' => array( + 'title' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'html' => false, + 'inserter' => true, + 'customClassName' => true, + 'reusable' => false + ), + 'editorStyle' => 'wp-block-widget-group-editor', + 'style' => 'wp-block-widget-group' + ) +); \ No newline at end of file diff --git a/src/wp-includes/blocks/button/block.json b/src/wp-includes/blocks/button/block.json index cc9921953a..e337aa857f 100644 --- a/src/wp-includes/blocks/button/block.json +++ b/src/wp-includes/blocks/button/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/button", "title": "Button", "category": "design", @@ -16,30 +16,35 @@ "type": "string", "source": "attribute", "selector": "a", - "attribute": "href" + "attribute": "href", + "__experimentalRole": "content" }, "title": { "type": "string", "source": "attribute", "selector": "a", - "attribute": "title" + "attribute": "title", + "__experimentalRole": "content" }, "text": { "type": "string", "source": "html", - "selector": "a" + "selector": "a", + "__experimentalRole": "content" }, "linkTarget": { "type": "string", "source": "attribute", "selector": "a", - "attribute": "target" + "attribute": "target", + "__experimentalRole": "content" }, "rel": { "type": "string", "source": "attribute", "selector": "a", - "attribute": "rel" + "attribute": "rel", + "__experimentalRole": "content" }, "placeholder": { "type": "string" @@ -92,10 +97,16 @@ } }, "__experimentalBorder": { + "color": true, "radius": true, + "style": true, + "width": true, "__experimentalSkipSerialization": true, "__experimentalDefaultControls": { - "radius": true + "color": true, + "radius": true, + "style": true, + "width": true } }, "__experimentalSelector": ".wp-block-button .wp-block-button__link" diff --git a/src/wp-includes/blocks/buttons/block.json b/src/wp-includes/blocks/buttons/block.json index 266646d96b..4dc420bd41 100644 --- a/src/wp-includes/blocks/buttons/block.json +++ b/src/wp-includes/blocks/buttons/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/buttons", "title": "Buttons", "category": "design", @@ -10,6 +10,7 @@ "supports": { "anchor": true, "align": [ "wide", "full" ], + "html": false, "__experimentalExposeControlsToChildren": true, "spacing": { "blockGap": true, @@ -31,7 +32,7 @@ "fontSize": true } }, - "__experimentalLayout": { + "layout": { "allowSwitching": false, "allowInheriting": false, "default": { diff --git a/src/wp-includes/blocks/calendar/block.json b/src/wp-includes/blocks/calendar/block.json index 2accd7142c..974d47ff8e 100644 --- a/src/wp-includes/blocks/calendar/block.json +++ b/src/wp-includes/blocks/calendar/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/calendar", "title": "Calendar", "category": "widgets", diff --git a/src/wp-includes/blocks/categories/block.json b/src/wp-includes/blocks/categories/block.json index adf28dc42b..e0d77ff569 100644 --- a/src/wp-includes/blocks/categories/block.json +++ b/src/wp-includes/blocks/categories/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/categories", "title": "Categories List", "category": "widgets", diff --git a/src/wp-includes/blocks/code/block.json b/src/wp-includes/blocks/code/block.json index 6927800229..7f58e79d22 100644 --- a/src/wp-includes/blocks/code/block.json +++ b/src/wp-includes/blocks/code/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/code", "title": "Code", "category": "text", @@ -14,6 +14,7 @@ } }, "supports": { + "align": [ "wide" ], "anchor": true, "typography": { "fontSize": true, diff --git a/src/wp-includes/blocks/column/block.json b/src/wp-includes/blocks/column/block.json index f6f7bc8d1f..31ad66cb6b 100644 --- a/src/wp-includes/blocks/column/block.json +++ b/src/wp-includes/blocks/column/block.json @@ -1,9 +1,9 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/column", "title": "Column", - "category": "text", + "category": "design", "parent": [ "core/columns" ], "description": "A single column within a columns block.", "textdomain": "default", @@ -38,7 +38,8 @@ "blockGap": true, "padding": true, "__experimentalDefaultControls": { - "padding": true + "padding": true, + "blockGap": true } }, "__experimentalBorder": { @@ -64,6 +65,6 @@ "fontSize": true } }, - "__experimentalLayout": true + "layout": true } } diff --git a/src/wp-includes/blocks/columns/block.json b/src/wp-includes/blocks/columns/block.json index aaaa72263e..a99fd020ca 100644 --- a/src/wp-includes/blocks/columns/block.json +++ b/src/wp-includes/blocks/columns/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/columns", "title": "Columns", "category": "design", @@ -13,6 +13,10 @@ "isStackedOnMobile": { "type": "boolean", "default": true + }, + "templateLock": { + "type": [ "string", "boolean" ], + "enum": [ "all", "insert", "contentOnly", false ] } }, "supports": { @@ -35,10 +39,11 @@ "margin": [ "top", "bottom" ], "padding": true, "__experimentalDefaultControls": { - "padding": true + "padding": true, + "blockGap": true } }, - "__experimentalLayout": { + "layout": { "allowSwitching": false, "allowInheriting": false, "allowEditing": false, diff --git a/src/wp-includes/blocks/comment-author-name/block.json b/src/wp-includes/blocks/comment-author-name/block.json index 59300c317a..93350779fc 100644 --- a/src/wp-includes/blocks/comment-author-name/block.json +++ b/src/wp-includes/blocks/comment-author-name/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comment-author-name", "title": "Comment Author Name", "category": "theme", diff --git a/src/wp-includes/blocks/comment-content/block.json b/src/wp-includes/blocks/comment-content/block.json index 0c28c25f33..9ac4b54533 100644 --- a/src/wp-includes/blocks/comment-content/block.json +++ b/src/wp-includes/blocks/comment-content/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comment-content", "title": "Comment Content", "category": "theme", diff --git a/src/wp-includes/blocks/comment-date/block.json b/src/wp-includes/blocks/comment-date/block.json index e90cb0b0d8..7e4776c68f 100644 --- a/src/wp-includes/blocks/comment-date/block.json +++ b/src/wp-includes/blocks/comment-date/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comment-date", "title": "Comment Date", "category": "theme", diff --git a/src/wp-includes/blocks/comment-edit-link/block.json b/src/wp-includes/blocks/comment-edit-link/block.json index 14795c83e1..505305f609 100644 --- a/src/wp-includes/blocks/comment-edit-link/block.json +++ b/src/wp-includes/blocks/comment-edit-link/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comment-edit-link", "title": "Comment Edit Link", "category": "theme", diff --git a/src/wp-includes/blocks/comment-reply-link/block.json b/src/wp-includes/blocks/comment-reply-link/block.json index 9d4a1d8668..c101294121 100644 --- a/src/wp-includes/blocks/comment-reply-link/block.json +++ b/src/wp-includes/blocks/comment-reply-link/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comment-reply-link", "title": "Comment Reply Link", "category": "theme", diff --git a/src/wp-includes/blocks/comment-template.php b/src/wp-includes/blocks/comment-template.php index 45fd993adb..3a553e802d 100644 --- a/src/wp-includes/blocks/comment-template.php +++ b/src/wp-includes/blocks/comment-template.php @@ -25,13 +25,26 @@ function block_core_comment_template_render_comments( $comments, $block ) { $content = ''; foreach ( $comments as $comment ) { + $comment_id = $comment->comment_ID; + $filter_block_context = static function( $context ) use ( $comment_id ) { + $context['commentId'] = $comment_id; + return $context; + }; - $block_content = ( new WP_Block( - $block->parsed_block, - array( - 'commentId' => $comment->comment_ID, - ) - ) )->render( array( 'dynamic' => false ) ); + /* + * We set commentId context through the `render_block_context` filter so + * that dynamically inserted blocks (at `render_block` filter stage) + * will also receive that context. + */ + add_filter( 'render_block_context', $filter_block_context ); + + /* + * We construct a new WP_Block instance from the parsed block so that + * it'll receive any changes made by the `render_block_data` filter. + */ + $block_content = ( new WP_Block( $block->parsed_block ) )->render( array( 'dynamic' => false ) ); + + remove_filter( 'render_block_context', $filter_block_context ); $children = $comment->get_children(); diff --git a/src/wp-includes/blocks/comment-template/block.json b/src/wp-includes/blocks/comment-template/block.json index 1c318a8c21..7b9bfc5e03 100644 --- a/src/wp-includes/blocks/comment-template/block.json +++ b/src/wp-includes/blocks/comment-template/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comment-template", "title": "Comment Template", "category": "design", diff --git a/src/wp-includes/blocks/comments-pagination-next.php b/src/wp-includes/blocks/comments-pagination-next.php index a535b7c40d..5a8df691ff 100644 --- a/src/wp-includes/blocks/comments-pagination-next.php +++ b/src/wp-includes/blocks/comments-pagination-next.php @@ -26,7 +26,7 @@ function render_block_core_comments_pagination_next( $attributes, $content, $blo $label = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? $attributes['label'] : $default_label; $pagination_arrow = get_comments_pagination_arrow( $block, 'next' ); - $filter_link_attributes = function() { + $filter_link_attributes = static function() { return get_block_wrapper_attributes(); }; add_filter( 'next_comments_link_attributes', $filter_link_attributes ); diff --git a/src/wp-includes/blocks/comments-pagination-next/block.json b/src/wp-includes/blocks/comments-pagination-next/block.json index 48da9495bf..d619865ebd 100644 --- a/src/wp-includes/blocks/comments-pagination-next/block.json +++ b/src/wp-includes/blocks/comments-pagination-next/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comments-pagination-next", "title": "Comments Next Page", "category": "theme", diff --git a/src/wp-includes/blocks/comments-pagination-numbers/block.json b/src/wp-includes/blocks/comments-pagination-numbers/block.json index 479872bccf..fcebb52763 100644 --- a/src/wp-includes/blocks/comments-pagination-numbers/block.json +++ b/src/wp-includes/blocks/comments-pagination-numbers/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comments-pagination-numbers", "title": "Comments Page Numbers", "category": "theme", diff --git a/src/wp-includes/blocks/comments-pagination-previous.php b/src/wp-includes/blocks/comments-pagination-previous.php index 951dc8dd78..ed3fa653ab 100644 --- a/src/wp-includes/blocks/comments-pagination-previous.php +++ b/src/wp-includes/blocks/comments-pagination-previous.php @@ -22,7 +22,7 @@ function render_block_core_comments_pagination_previous( $attributes, $content, $label = $pagination_arrow . $label; } - $filter_link_attributes = function() { + $filter_link_attributes = static function() { return get_block_wrapper_attributes(); }; add_filter( 'previous_comments_link_attributes', $filter_link_attributes ); diff --git a/src/wp-includes/blocks/comments-pagination-previous/block.json b/src/wp-includes/blocks/comments-pagination-previous/block.json index a48782af29..2dab1e9dd7 100644 --- a/src/wp-includes/blocks/comments-pagination-previous/block.json +++ b/src/wp-includes/blocks/comments-pagination-previous/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comments-pagination-previous", "title": "Comments Previous Page", "category": "theme", diff --git a/src/wp-includes/blocks/comments-pagination/block.json b/src/wp-includes/blocks/comments-pagination/block.json index ffa2828912..a11decd201 100644 --- a/src/wp-includes/blocks/comments-pagination/block.json +++ b/src/wp-includes/blocks/comments-pagination/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comments-pagination", "title": "Comments Pagination", "category": "theme", @@ -29,7 +29,7 @@ "link": true } }, - "__experimentalLayout": { + "layout": { "allowSwitching": false, "allowInheriting": false, "default": { diff --git a/src/wp-includes/blocks/comments-title/block.json b/src/wp-includes/blocks/comments-title/block.json index 3c5db438a3..12b105afe9 100644 --- a/src/wp-includes/blocks/comments-title/block.json +++ b/src/wp-includes/blocks/comments-title/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comments-title", "title": "Comments Title", "category": "theme", diff --git a/src/wp-includes/blocks/comments.php b/src/wp-includes/blocks/comments.php index a5e51cfbf4..48aac15af6 100644 --- a/src/wp-includes/blocks/comments.php +++ b/src/wp-includes/blocks/comments.php @@ -29,13 +29,8 @@ function render_block_core_comments( $attributes, $content, $block ) { return ''; } - $comment_args = array( - 'post_id' => $post_id, - 'count' => true, - 'status' => 'approve', - ); // Return early if there are no comments and comments are closed. - if ( ! comments_open( $post_id ) && get_comments( $comment_args ) === 0 ) { + if ( ! comments_open( $post_id ) && (int) get_comments_number( $post_id ) === 0 ) { return ''; } @@ -212,6 +207,7 @@ function register_legacy_post_comments_block() { * like `_wp_multiple_block_styles`, which is required in this case because * the block has multiple styles. */ + /** This filter is documented in wp-includes/blocks.php */ $metadata = apply_filters( 'block_type_metadata', $metadata ); register_block_type( 'core/post-comments', $metadata ); diff --git a/src/wp-includes/blocks/comments/block.json b/src/wp-includes/blocks/comments/block.json index 399941891d..4bfe4bb901 100644 --- a/src/wp-includes/blocks/comments/block.json +++ b/src/wp-includes/blocks/comments/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/comments", "title": "Comments", "category": "theme", @@ -18,6 +18,7 @@ }, "supports": { "align": [ "wide", "full" ], + "html": false, "color": { "gradients": true, "link": true, @@ -27,7 +28,6 @@ "link": true } }, - "html": false, "spacing": { "margin": true, "padding": true diff --git a/src/wp-includes/blocks/cover.php b/src/wp-includes/blocks/cover.php index e5a497fd76..5f6b2cadaa 100644 --- a/src/wp-includes/blocks/cover.php +++ b/src/wp-includes/blocks/cover.php @@ -34,7 +34,7 @@ function render_block_core_cover( $attributes, $content ) { /* * Inserts the featured image between the (1st) cover 'background' `span` and 'inner_container' `div`, - * and removes eventual withespace characters between the two (typically introduced at template level) + * and removes eventual whitespace characters between the two (typically introduced at template level) */ $inner_container_start = '/]+wp-block-cover__inner-container[\s|"][^>]*>/U'; if ( 1 === preg_match( $inner_container_start, $content, $matches, PREG_OFFSET_CAPTURE ) ) { @@ -46,22 +46,19 @@ function render_block_core_cover( $attributes, $content ) { update_post_thumbnail_cache(); } $current_featured_image = get_the_post_thumbnail_url(); - - $styles = 'background-image:url(' . esc_url( $current_featured_image ) . '); '; - - if ( isset( $attributes['minHeight'] ) ) { - $height_unit = empty( $attributes['minHeightUnit'] ) ? 'px' : $attributes['minHeightUnit']; - $height = " min-height:{$attributes['minHeight']}{$height_unit}"; - - $styles .= $height; + if ( ! $current_featured_image ) { + return $content; } - $content = preg_replace( - '/class=\".*?\"/', - '${0} style="' . $styles . '"', - $content, - 1 - ); + $processor = new WP_HTML_Tag_Processor( $content ); + $processor->next_tag(); + + $styles = $processor->get_attribute( 'style' ); + $merged_styles = ! empty( $styles ) ? $styles . ';' : ''; + $merged_styles .= 'background-image:url(' . esc_url( $current_featured_image ) . ');'; + + $processor->set_attribute( 'style', $merged_styles ); + $content = $processor->get_updated_html(); } return $content; diff --git a/src/wp-includes/blocks/cover/block.json b/src/wp-includes/blocks/cover/block.json index 3bcc779a0f..39ee697802 100644 --- a/src/wp-includes/blocks/cover/block.json +++ b/src/wp-includes/blocks/cover/block.json @@ -1,10 +1,10 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/cover", "title": "Cover", "category": "media", - "description": "Add an image or video with a text overlay — great for headers.", + "description": "Add an image or video with a text overlay.", "textdomain": "default", "attributes": { "url": { @@ -88,14 +88,29 @@ "spacing": { "padding": true, "margin": [ "top", "bottom" ], + "blockGap": true, "__experimentalDefaultControls": { - "padding": true + "padding": true, + "blockGap": true + } + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "style": true, + "width": true, + "__experimentalDefaultControls": { + "color": true, + "radius": true, + "style": true, + "width": true } }, "color": { "__experimentalDuotone": "> .wp-block-cover__image-background, > .wp-block-cover__video-background", - "text": false, - "background": false + "text": true, + "background": false, + "__experimentalSkipSerialization": [ "gradients" ] }, "typography": { "fontSize": true, @@ -109,6 +124,9 @@ "__experimentalDefaultControls": { "fontSize": true } + }, + "layout": { + "allowJustification": false } }, "editorStyle": "wp-block-cover-editor", diff --git a/src/wp-includes/blocks/details/block.json b/src/wp-includes/blocks/details/block.json new file mode 100644 index 0000000000..01110dfec2 --- /dev/null +++ b/src/wp-includes/blocks/details/block.json @@ -0,0 +1,55 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/details", + "title": "Details", + "category": "text", + "description": "Hide and show additional content.", + "keywords": [ "disclosure", "summary", "hide" ], + "textdomain": "default", + "attributes": { + "showContent": { + "type": "boolean", + "default": false + }, + "summary": { + "type": "string" + } + }, + "supports": { + "align": [ "wide", "full" ], + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "__experimentalBorder": { + "color": true, + "width": true, + "style": true + }, + "html": false, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-details-editor", + "style": "wp-block-details" +} diff --git a/src/wp-includes/blocks/embed/block.json b/src/wp-includes/blocks/embed/block.json index e36768cd72..9ca54db871 100644 --- a/src/wp-includes/blocks/embed/block.json +++ b/src/wp-includes/blocks/embed/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/embed", "title": "Embed", "category": "embed", @@ -41,7 +41,10 @@ } }, "supports": { - "align": true + "align": true, + "spacing": { + "margin": true + } }, "editorStyle": "wp-block-embed-editor", "style": "wp-block-embed" diff --git a/src/wp-includes/blocks/file.php b/src/wp-includes/blocks/file.php index 9081b63a5e..26a48ccad9 100644 --- a/src/wp-includes/blocks/file.php +++ b/src/wp-includes/blocks/file.php @@ -5,18 +5,47 @@ * @package WordPress */ +if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + /** + * Replaces view script for the File block with version using Interactivity API. + * + * @param array $metadata Block metadata as read in via block.json. + * + * @return array Filtered block type metadata. + */ + function gutenberg_block_core_file_update_interactive_view_script( $metadata ) { + if ( 'core/file' === $metadata['name'] ) { + $metadata['viewScript'] = array( 'file:./interactivity.min.js' ); + } + return $metadata; + } + add_filter( 'block_type_metadata', 'gutenberg_block_core_file_update_interactive_view_script', 10, 1 ); +} + /** * When the `core/file` block is rendering, check if we need to enqueue the `'wp-block-file-view` script. * - * @param array $attributes The block attributes. - * @param string $content The block content. + * @param array $attributes The block attributes. + * @param string $content The block content. + * @param WP_Block $block The parsed block. * * @return string Returns the block content. */ -function render_block_core_file( $attributes, $content ) { - $should_load_view_script = ! empty( $attributes['displayPreview'] ) && ! wp_script_is( 'wp-block-file-view' ); - if ( $should_load_view_script ) { - wp_enqueue_script( 'wp-block-file-view' ); +function render_block_core_file( $attributes, $content, $block ) { + $should_load_view_script = ! empty( $attributes['displayPreview'] ); + $view_js_file = 'wp-block-file-view'; + // If the script already exists, there is no point in removing it from viewScript. + if ( ! wp_script_is( $view_js_file ) ) { + $script_handles = $block->block_type->view_script_handles; + + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( ! $should_load_view_script && in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + } + // If the script is needed, but it was previously removed, add it again. + if ( $should_load_view_script && ! in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); + } } // Update object's aria-label attribute if present in block HTML. @@ -25,7 +54,7 @@ function render_block_core_file( $attributes, $content ) { $pattern = '@aria-label="(?[^"]+)?")@i'; $content = preg_replace_callback( $pattern, - function ( $matches ) { + static function ( $matches ) { $filename = ! empty( $matches['filename'] ) ? $matches['filename'] : ''; $has_filename = ! empty( $filename ) && 'PDF embed' !== $filename; $label = $has_filename ? @@ -41,6 +70,17 @@ function render_block_core_file( $attributes, $content ) { $content ); + // If it uses the Interactivity API, add the directives. + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN && $should_load_view_script ) { + $processor = new WP_HTML_Tag_Processor( $content ); + $processor->next_tag(); + $processor->set_attribute( 'data-wp-interactive', '' ); + $processor->next_tag( 'object' ); + $processor->set_attribute( 'data-wp-bind--hidden', '!selectors.core.file.hasPdfPreview' ); + $processor->set_attribute( 'hidden', true ); + return $processor->get_updated_html(); + } + return $content; } diff --git a/src/wp-includes/blocks/file/block.json b/src/wp-includes/blocks/file/block.json index 8e90825a64..12edc20630 100644 --- a/src/wp-includes/blocks/file/block.json +++ b/src/wp-includes/blocks/file/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/file", "title": "File", "category": "media", @@ -56,7 +56,16 @@ }, "supports": { "anchor": true, - "align": true + "align": true, + "color": { + "gradients": true, + "link": true, + "text": false, + "__experimentalDefaultControls": { + "background": true, + "link": true + } + } }, "viewScript": "file:./view.min.js", "editorStyle": "wp-block-file-editor", diff --git a/src/wp-includes/blocks/file/view.asset.php b/src/wp-includes/blocks/file/view.asset.php index 06a9e2f578..66a3d9b76a 100644 --- a/src/wp-includes/blocks/file/view.asset.php +++ b/src/wp-includes/blocks/file/view.asset.php @@ -1 +1 @@ - array(), 'version' => 'ee575fc5e86fe255013d'); + array(), 'version' => 'e614f07ba8410b17e456'); diff --git a/src/wp-includes/blocks/file/view.min.asset.php b/src/wp-includes/blocks/file/view.min.asset.php index d27ebcbf94..1f266d5b8d 100644 --- a/src/wp-includes/blocks/file/view.min.asset.php +++ b/src/wp-includes/blocks/file/view.min.asset.php @@ -1 +1 @@ - array(), 'version' => '2a20786ca914ea00891f'); + array(), 'version' => '9d287166f699a66eff3b'); diff --git a/src/wp-includes/blocks/footnotes.php b/src/wp-includes/blocks/footnotes.php new file mode 100644 index 0000000000..b7be0542d7 --- /dev/null +++ b/src/wp-includes/blocks/footnotes.php @@ -0,0 +1,78 @@ +context['postId'] ) ) { + return ''; + } + + if ( post_password_required( $block->context['postId'] ) ) { + return; + } + + $footnotes = get_post_meta( $block->context['postId'], 'footnotes', true ); + + if ( ! $footnotes ) { + return; + } + + $footnotes = json_decode( $footnotes, true ); + + if ( count( $footnotes ) === 0 ) { + return ''; + } + + $wrapper_attributes = get_block_wrapper_attributes(); + + $block_content = ''; + + foreach ( $footnotes as $footnote ) { + $block_content .= sprintf( + '
  • %2$s ↩︎
  • ', + $footnote['id'], + $footnote['content'] + ); + } + + return sprintf( + '
      %2$s
    ', + $wrapper_attributes, + $block_content + ); +} + +/** + * Registers the `core/footnotes` block on the server. + */ +function register_block_core_footnotes() { + register_post_meta( + 'post', + 'footnotes', + array( + 'show_in_rest' => true, + 'single' => true, + 'type' => 'string', + ) + ); + register_block_type_from_metadata( + __DIR__ . '/footnotes', + array( + 'render_callback' => 'render_block_core_footnotes', + ) + ); +} +add_action( 'init', 'register_block_core_footnotes' ); diff --git a/src/wp-includes/blocks/footnotes/block.json b/src/wp-includes/blocks/footnotes/block.json new file mode 100644 index 0000000000..0ab992009d --- /dev/null +++ b/src/wp-includes/blocks/footnotes/block.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/footnotes", + "title": "Footnotes", + "category": "text", + "description": "", + "keywords": [ "references" ], + "textdomain": "default", + "usesContext": [ "postId", "postType" ], + "supports": { + "html": false, + "multiple": false, + "inserter": false, + "reusable": false + }, + "style": "wp-block-footnotes" +} diff --git a/src/wp-includes/blocks/freeform/block.json b/src/wp-includes/blocks/freeform/block.json index 84b57b7532..d40e8ea13d 100644 --- a/src/wp-includes/blocks/freeform/block.json +++ b/src/wp-includes/blocks/freeform/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/freeform", "title": "Classic", "category": "text", @@ -9,7 +9,7 @@ "attributes": { "content": { "type": "string", - "source": "html" + "source": "raw" } }, "supports": { diff --git a/src/wp-includes/blocks/gallery/block.json b/src/wp-includes/blocks/gallery/block.json index 0400430b95..07425e1037 100644 --- a/src/wp-includes/blocks/gallery/block.json +++ b/src/wp-includes/blocks/gallery/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/gallery", "title": "Gallery", "category": "media", @@ -123,7 +123,7 @@ "background": true, "gradients": true }, - "__experimentalLayout": { + "layout": { "allowSwitching": false, "allowInheriting": false, "allowEditing": false, diff --git a/src/wp-includes/blocks/group/block.json b/src/wp-includes/blocks/group/block.json index 2b227a1584..6eaf785862 100644 --- a/src/wp-includes/blocks/group/block.json +++ b/src/wp-includes/blocks/group/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/group", "title": "Group", "category": "design", @@ -15,6 +15,9 @@ "templateLock": { "type": [ "string", "boolean" ], "enum": [ "all", "insert", "contentOnly", false ] + }, + "allowedBlocks": { + "type": "array" } }, "supports": { @@ -72,7 +75,7 @@ "fontSize": true } }, - "__experimentalLayout": { + "layout": { "allowSizingOnChildren": true } }, diff --git a/src/wp-includes/blocks/heading/block.json b/src/wp-includes/blocks/heading/block.json index f9d701eace..ff2a5d2675 100644 --- a/src/wp-includes/blocks/heading/block.json +++ b/src/wp-includes/blocks/heading/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/heading", "title": "Heading", "category": "text", diff --git a/src/wp-includes/blocks/home-link.php b/src/wp-includes/blocks/home-link.php index 33f41057c9..459979b0d4 100644 --- a/src/wp-includes/blocks/home-link.php +++ b/src/wp-includes/blocks/home-link.php @@ -98,12 +98,12 @@ function block_core_home_link_build_li_wrapper_attributes( $context ) { $colors['css_classes'], $font_sizes['css_classes'] ); + $classes[] = 'wp-block-navigation-item'; $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); - $css_classes = trim( implode( ' ', $classes ) ) . ' wp-block-navigation-item'; $wrapper_attributes = get_block_wrapper_attributes( array( - 'class' => $css_classes, + 'class' => implode( ' ', $classes ), 'style' => $style_attribute, ) ); diff --git a/src/wp-includes/blocks/home-link/block.json b/src/wp-includes/blocks/home-link/block.json index 567bdf8c27..a9827b7718 100644 --- a/src/wp-includes/blocks/home-link/block.json +++ b/src/wp-includes/blocks/home-link/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/home-link", "category": "design", "parent": [ "core/navigation" ], diff --git a/src/wp-includes/blocks/html/block.json b/src/wp-includes/blocks/html/block.json index c1e1e94b87..b1a2ad6062 100644 --- a/src/wp-includes/blocks/html/block.json +++ b/src/wp-includes/blocks/html/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/html", "title": "Custom HTML", "category": "widgets", diff --git a/src/wp-includes/blocks/image.php b/src/wp-includes/blocks/image.php index 9a9f175556..1e437d860a 100644 --- a/src/wp-includes/blocks/image.php +++ b/src/wp-includes/blocks/image.php @@ -14,24 +14,30 @@ * @return string Returns the block content with the data-id attribute added. */ function render_block_core_image( $attributes, $content ) { + + $processor = new WP_HTML_Tag_Processor( $content ); + $processor->next_tag( 'img' ); + + if ( $processor->get_attribute( 'src' ) === null ) { + return ''; + } + if ( isset( $attributes['data-id'] ) ) { // Add the data-id="$id" attribute to the img element // to provide backwards compatibility for the Gallery Block, // which now wraps Image Blocks within innerBlocks. // The data-id attribute is added in a core/gallery `render_block_data` hook. - $data_id_attribute = 'data-id="' . esc_attr( $attributes['data-id'] ) . '"'; - if ( ! str_contains( $content, $data_id_attribute ) ) { - $content = str_replace( 'set_attribute( 'data-id', $attributes['data-id'] ); } - return $content; -} + return $processor->get_updated_html(); +} /** * Registers the `core/image` block on server. */ function register_block_core_image() { + register_block_type_from_metadata( __DIR__ . '/image', array( diff --git a/src/wp-includes/blocks/image/block.json b/src/wp-includes/blocks/image/block.json index 62edb882be..7c8b2c2715 100644 --- a/src/wp-includes/blocks/image/block.json +++ b/src/wp-includes/blocks/image/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/image", "title": "Image", "category": "media", @@ -69,6 +69,12 @@ "height": { "type": "number" }, + "aspectRatio": { + "type": "string" + }, + "scale": { + "type": "string" + }, "sizeSlug": { "type": "string" }, @@ -84,16 +90,20 @@ }, "supports": { "anchor": true, + "behaviors": { + "lightbox": true + }, "color": { - "__experimentalDuotone": "img, .components-placeholder", "text": false, "background": false }, + "filter": { + "duotone": true + }, "__experimentalBorder": { "color": true, "radius": true, "width": true, - "__experimentalSelector": "img, .wp-block-image__crop-area", "__experimentalSkipSerialization": true, "__experimentalDefaultControls": { "color": true, @@ -102,6 +112,12 @@ } } }, + "selectors": { + "border": ".wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder", + "filter": { + "duotone": ".wp-block-image img, .wp-block-image .components-placeholder" + } + }, "styles": [ { "name": "default", diff --git a/src/wp-includes/blocks/latest-comments/block.json b/src/wp-includes/blocks/latest-comments/block.json index 0b1ae021b5..0b213e9b79 100644 --- a/src/wp-includes/blocks/latest-comments/block.json +++ b/src/wp-includes/blocks/latest-comments/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/latest-comments", "title": "Latest Comments", "category": "widgets", @@ -33,6 +33,19 @@ "spacing": { "margin": true, "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } } }, "editorStyle": "wp-block-latest-comments-editor", diff --git a/src/wp-includes/blocks/latest-posts.php b/src/wp-includes/blocks/latest-posts.php index d3945ee2c9..746133ec7a 100644 --- a/src/wp-includes/blocks/latest-posts.php +++ b/src/wp-includes/blocks/latest-posts.php @@ -48,6 +48,14 @@ function render_block_core_latest_posts( $attributes ) { $block_core_latest_posts_excerpt_length = $attributes['excerptLength']; add_filter( 'excerpt_length', 'block_core_latest_posts_get_excerpt_length', 20 ); + $filter_latest_posts_excerpt_more = static function( $more ) use ( $attributes ) { + $use_excerpt = 'excerpt' === $attributes['displayPostContentRadio']; + /* translators: %1$s is a URL to a post, excerpt truncation character, default … */ + return $use_excerpt ? sprintf( __( ' … Read more', 'gutenberg' ), esc_url( get_permalink() ) ) : $more; + }; + + add_filter( 'excerpt_more', $filter_latest_posts_excerpt_more ); + if ( isset( $attributes['categories'] ) ) { $args['category__in'] = array_column( $attributes['categories'], 'id' ); } diff --git a/src/wp-includes/blocks/latest-posts/block.json b/src/wp-includes/blocks/latest-posts/block.json index 13a01280c4..f36164614d 100644 --- a/src/wp-includes/blocks/latest-posts/block.json +++ b/src/wp-includes/blocks/latest-posts/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/latest-posts", "title": "Latest Posts", "category": "widgets", diff --git a/src/wp-includes/blocks/legacy-widget/block.json b/src/wp-includes/blocks/legacy-widget/block.json index 30b60c6448..6b0c1e2a91 100644 --- a/src/wp-includes/blocks/legacy-widget/block.json +++ b/src/wp-includes/blocks/legacy-widget/block.json @@ -1,5 +1,5 @@ { - "apiVersion": 2, + "apiVersion": 3, "name": "core/legacy-widget", "title": "Legacy Widget", "category": "widgets", diff --git a/src/wp-includes/blocks/list-item/block.json b/src/wp-includes/blocks/list-item/block.json index 745d6e30b4..41221f1c31 100644 --- a/src/wp-includes/blocks/list-item/block.json +++ b/src/wp-includes/blocks/list-item/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/list-item", "title": "List item", "category": "text", diff --git a/src/wp-includes/blocks/list/block.json b/src/wp-includes/blocks/list/block.json index 4e1089b088..e7ef850d29 100644 --- a/src/wp-includes/blocks/list/block.json +++ b/src/wp-includes/blocks/list/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/list", "title": "List", "category": "text", diff --git a/src/wp-includes/blocks/loginout/block.json b/src/wp-includes/blocks/loginout/block.json index 3db9d0040c..3593961c09 100644 --- a/src/wp-includes/blocks/loginout/block.json +++ b/src/wp-includes/blocks/loginout/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/loginout", "title": "Login/out", "category": "theme", @@ -20,7 +20,17 @@ "supports": { "className": true, "typography": { - "fontSize": false + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } } } } diff --git a/src/wp-includes/blocks/media-text/block.json b/src/wp-includes/blocks/media-text/block.json index 1c9fc0b682..8ffc653d68 100644 --- a/src/wp-includes/blocks/media-text/block.json +++ b/src/wp-includes/blocks/media-text/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/media-text", "title": "Media & Text", "category": "media", @@ -10,7 +10,7 @@ "attributes": { "align": { "type": "string", - "default": "wide" + "default": "none" }, "mediaAlt": { "type": "string", @@ -89,6 +89,9 @@ }, "focalPoint": { "type": "object" + }, + "allowedBlocks": { + "type": "array" } }, "supports": { diff --git a/src/wp-includes/blocks/missing/block.json b/src/wp-includes/blocks/missing/block.json index 9a44caa248..0bc512bbbf 100644 --- a/src/wp-includes/blocks/missing/block.json +++ b/src/wp-includes/blocks/missing/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/missing", "title": "Unsupported", "category": "text", diff --git a/src/wp-includes/blocks/more/block.json b/src/wp-includes/blocks/more/block.json index 25f1df2377..bfd95652ea 100644 --- a/src/wp-includes/blocks/more/block.json +++ b/src/wp-includes/blocks/more/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/more", "title": "More", "category": "design", diff --git a/src/wp-includes/blocks/navigation-link.php b/src/wp-includes/blocks/navigation-link.php index ab384f8349..5333ab6ea3 100644 --- a/src/wp-includes/blocks/navigation-link.php +++ b/src/wp-includes/blocks/navigation-link.php @@ -181,7 +181,8 @@ function render_block_core_navigation_link( $attributes, $content, $block ) { $css_classes = trim( implode( ' ', $classes ) ); $has_submenu = count( $block->inner_blocks ) > 0; - $is_active = ! empty( $attributes['id'] ) && ( get_queried_object_id() === (int) $attributes['id'] ); + $kind = empty( $attributes['kind'] ) ? 'post_type' : str_replace( '-', '_', $attributes['kind'] ); + $is_active = ! empty( $attributes['id'] ) && get_queried_object_id() === (int) $attributes['id'] && ! empty( get_queried_object()->$kind ); $wrapper_attributes = get_block_wrapper_attributes( array( diff --git a/src/wp-includes/blocks/navigation-link/block.json b/src/wp-includes/blocks/navigation-link/block.json index ae151a279e..b2cbeaed63 100644 --- a/src/wp-includes/blocks/navigation-link/block.json +++ b/src/wp-includes/blocks/navigation-link/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/navigation-link", "title": "Custom Link", "category": "design", diff --git a/src/wp-includes/blocks/navigation-submenu.php b/src/wp-includes/blocks/navigation-submenu.php index cf1364f81f..748613193b 100644 --- a/src/wp-includes/blocks/navigation-submenu.php +++ b/src/wp-includes/blocks/navigation-submenu.php @@ -14,66 +14,6 @@ * @param bool $is_sub_menu Whether the block is a sub-menu. * @return array Colors CSS classes and inline styles. */ -function block_core_navigation_submenu_build_css_colors( $context, $attributes, $is_sub_menu = false ) { - $colors = array( - 'css_classes' => array(), - 'inline_styles' => '', - ); - - // Text color. - $named_text_color = null; - $custom_text_color = null; - - if ( $is_sub_menu && array_key_exists( 'customOverlayTextColor', $context ) ) { - $custom_text_color = $context['customOverlayTextColor']; - } elseif ( $is_sub_menu && array_key_exists( 'overlayTextColor', $context ) ) { - $named_text_color = $context['overlayTextColor']; - } elseif ( array_key_exists( 'customTextColor', $context ) ) { - $custom_text_color = $context['customTextColor']; - } elseif ( array_key_exists( 'textColor', $context ) ) { - $named_text_color = $context['textColor']; - } elseif ( isset( $context['style']['color']['text'] ) ) { - $custom_text_color = $context['style']['color']['text']; - } - - // If has text color. - if ( ! is_null( $named_text_color ) ) { - // Add the color class. - array_push( $colors['css_classes'], 'has-text-color', sprintf( 'has-%s-color', $named_text_color ) ); - } elseif ( ! is_null( $custom_text_color ) ) { - // Add the custom color inline style. - $colors['css_classes'][] = 'has-text-color'; - $colors['inline_styles'] .= sprintf( 'color: %s;', $custom_text_color ); - } - - // Background color. - $named_background_color = null; - $custom_background_color = null; - - if ( $is_sub_menu && array_key_exists( 'customOverlayBackgroundColor', $context ) ) { - $custom_background_color = $context['customOverlayBackgroundColor']; - } elseif ( $is_sub_menu && array_key_exists( 'overlayBackgroundColor', $context ) ) { - $named_background_color = $context['overlayBackgroundColor']; - } elseif ( array_key_exists( 'customBackgroundColor', $context ) ) { - $custom_background_color = $context['customBackgroundColor']; - } elseif ( array_key_exists( 'backgroundColor', $context ) ) { - $named_background_color = $context['backgroundColor']; - } elseif ( isset( $context['style']['color']['background'] ) ) { - $custom_background_color = $context['style']['color']['background']; - } - - // If has background color. - if ( ! is_null( $named_background_color ) ) { - // Add the background-color class. - array_push( $colors['css_classes'], 'has-background', sprintf( 'has-%s-background-color', $named_background_color ) ); - } elseif ( ! is_null( $custom_background_color ) ) { - // Add the custom background-color inline style. - $colors['css_classes'][] = 'has-background'; - $colors['inline_styles'] .= sprintf( 'background-color: %s;', $custom_background_color ); - } - - return $colors; -} /** * Build an array with CSS classes and inline styles defining the font sizes @@ -129,7 +69,6 @@ function block_core_navigation_submenu_render_submenu_icon() { * @return string Returns the post content with the legacy widget added. */ function render_block_core_navigation_submenu( $attributes, $content, $block ) { - $navigation_link_has_id = isset( $attributes['id'] ) && is_numeric( $attributes['id'] ); $is_post_type = isset( $attributes['kind'] ) && 'post-type' === $attributes['kind']; $is_post_type = $is_post_type || isset( $attributes['type'] ) && ( 'post' === $attributes['type'] || 'page' === $attributes['type'] ); @@ -144,17 +83,13 @@ function render_block_core_navigation_submenu( $attributes, $content, $block ) { return ''; } - $colors = block_core_navigation_submenu_build_css_colors( $block->context, $attributes ); $font_sizes = block_core_navigation_submenu_build_css_font_sizes( $block->context ); - $classes = array_merge( - $colors['css_classes'], - $font_sizes['css_classes'] - ); - $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); + $style_attribute = $font_sizes['inline_styles']; - $css_classes = trim( implode( ' ', $classes ) ); + $css_classes = trim( implode( ' ', $font_sizes['css_classes'] ) ); $has_submenu = count( $block->inner_blocks ) > 0; - $is_active = ! empty( $attributes['id'] ) && ( get_queried_object_id() === (int) $attributes['id'] ); + $kind = empty( $attributes['kind'] ) ? 'post_type' : str_replace( '-', '_', $attributes['kind'] ); + $is_active = ! empty( $attributes['id'] ) && get_queried_object_id() === (int) $attributes['id'] && ! empty( get_queried_object()->$kind ); $show_submenu_indicators = isset( $block->context['showSubmenuIcon'] ) && $block->context['showSubmenuIcon']; $open_on_click = isset( $block->context['openSubmenusOnClick'] ) && $block->context['openSubmenusOnClick']; @@ -249,14 +184,33 @@ function render_block_core_navigation_submenu( $attributes, $content, $block ) { } if ( $has_submenu ) { - $colors = block_core_navigation_submenu_build_css_colors( $block->context, $attributes, $has_submenu ); - $classes = array_merge( - array( 'wp-block-navigation__submenu-container' ), - $colors['css_classes'] - ); - $css_classes = trim( implode( ' ', $classes ) ); + // Copy some attributes from the parent block to this one. + // Ideally this would happen in the client when the block is created. + if ( array_key_exists( 'overlayTextColor', $block->context ) ) { + $attributes['textColor'] = $block->context['overlayTextColor']; + } + if ( array_key_exists( 'overlayBackgroundColor', $block->context ) ) { + $attributes['backgroundColor'] = $block->context['overlayBackgroundColor']; + } + if ( array_key_exists( 'customOverlayTextColor', $block->context ) ) { + $attributes['style']['color']['text'] = $block->context['customOverlayTextColor']; + } + if ( array_key_exists( 'customOverlayBackgroundColor', $block->context ) ) { + $attributes['style']['color']['background'] = $block->context['customOverlayBackgroundColor']; + } - $style_attribute = $colors['inline_styles']; + // This allows us to be able to get a response from gutenberg_apply_colors_support. + $block->block_type->supports['color'] = true; + $colors_supports = gutenberg_apply_colors_support( $block->block_type, $attributes ); + $css_classes = 'wp-block-navigation__submenu-container'; + if ( array_key_exists( 'class', $colors_supports ) ) { + $css_classes .= ' ' . $colors_supports['class']; + } + + $style_attribute = ''; + if ( array_key_exists( 'style', $colors_supports ) ) { + $style_attribute = $colors_supports['style']; + } $inner_blocks_html = ''; foreach ( $block->inner_blocks as $inner_block ) { diff --git a/src/wp-includes/blocks/navigation-submenu/block.json b/src/wp-includes/blocks/navigation-submenu/block.json index f311a9f36e..91364109ea 100644 --- a/src/wp-includes/blocks/navigation-submenu/block.json +++ b/src/wp-includes/blocks/navigation-submenu/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/navigation-submenu", "title": "Submenu", "category": "design", diff --git a/src/wp-includes/blocks/navigation.php b/src/wp-includes/blocks/navigation.php index 03aaae31c5..f8f53a93e7 100644 --- a/src/wp-includes/blocks/navigation.php +++ b/src/wp-includes/blocks/navigation.php @@ -65,59 +65,87 @@ if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { return $menu_items_by_parent_id; } + + /** + * Add Interactivity API directives to the navigation-submenu and page-list blocks markup using the Tag Processor + * The final HTML of the navigation-submenu and the page-list blocks will look similar to this: + * + *
  • + * + * Title + *
      + * SUBMENU ITEMS + *
    + *
  • + * + * @param string $w Markup of the navigation block. + * @param array $block_attributes Block attributes. + * + * @return string Submenu markup with the directives injected. + */ + function gutenberg_block_core_navigation_add_directives_to_submenu( $w, $block_attributes ) { + while ( $w->next_tag( + array( + 'tag_name' => 'LI', + 'class_name' => 'has-child', + ) + ) ) { + // Add directives to the parent `
  • `. + $w->set_attribute( 'data-wp-interactive', true ); + $w->set_attribute( 'data-wp-context', '{ "core": { "navigation": { "isMenuOpen": { "click": false, "hover": false }, "overlay": false } } }' ); + $w->set_attribute( 'data-wp-effect', 'effects.core.navigation.initMenu' ); + $w->set_attribute( 'data-wp-on--focusout', 'actions.core.navigation.handleMenuFocusout' ); + $w->set_attribute( 'data-wp-on--keydown', 'actions.core.navigation.handleMenuKeydown' ); + if ( ! isset( $block_attributes['openSubmenusOnClick'] ) || false === $block_attributes['openSubmenusOnClick'] ) { + $w->set_attribute( 'data-wp-on--mouseenter', 'actions.core.navigation.openMenuOnHover' ); + $w->set_attribute( 'data-wp-on--mouseleave', 'actions.core.navigation.closeMenuOnHover' ); + } + + // Add directives to the toggle submenu button. + if ( $w->next_tag( + array( + 'tag_name' => 'BUTTON', + 'class_name' => 'wp-block-navigation-submenu__toggle', + ) + ) ) { + $w->set_attribute( 'data-wp-on--click', 'actions.core.navigation.toggleMenuOnClick' ); + $w->set_attribute( 'data-wp-bind--aria-expanded', 'selectors.core.navigation.isMenuOpen' ); + }; + + // Iterate through subitems if exist. + gutenberg_block_core_navigation_add_directives_to_submenu( $w, $block_attributes ); + } + return $w->get_updated_html(); + }; + + /** + * Replaces view script for the Navigation block with version using Interactivity API. + * + * @param array $metadata Block metadata as read in via block.json. + * + * @return array Filtered block type metadata. + */ + function gutenberg_block_core_navigation_update_interactive_view_script( $metadata ) { + if ( 'core/navigation' === $metadata['name'] ) { + $metadata['viewScript'] = array( 'file:./interactivity.min.js' ); + } + return $metadata; + } + add_filter( 'block_type_metadata', 'gutenberg_block_core_navigation_update_interactive_view_script', 10, 1 ); } -/** - * Turns menu item data into a nested array of parsed blocks - * - * @param array $menu_items An array of menu items that represent - * an individual level of a menu. - * @param array $menu_items_by_parent_id An array keyed by the id of the - * parent menu where each element is an - * array of menu items that belong to - * that parent. - * @return array An array of parsed block data. - */ -function block_core_navigation_parse_blocks_from_menu_items( $menu_items, $menu_items_by_parent_id ) { - if ( empty( $menu_items ) ) { - return array(); - } - $blocks = array(); - - foreach ( $menu_items as $menu_item ) { - $class_name = ! empty( $menu_item->classes ) ? implode( ' ', (array) $menu_item->classes ) : null; - $id = ( null !== $menu_item->object_id && 'custom' !== $menu_item->object ) ? $menu_item->object_id : null; - $opens_in_new_tab = null !== $menu_item->target && '_blank' === $menu_item->target; - $rel = ( null !== $menu_item->xfn && '' !== $menu_item->xfn ) ? $menu_item->xfn : null; - $kind = null !== $menu_item->type ? str_replace( '_', '-', $menu_item->type ) : 'custom'; - - $block = array( - 'blockName' => isset( $menu_items_by_parent_id[ $menu_item->ID ] ) ? 'core/navigation-submenu' : 'core/navigation-link', - 'attrs' => array( - 'className' => $class_name, - 'description' => $menu_item->description, - 'id' => $id, - 'kind' => $kind, - 'label' => $menu_item->title, - 'opensInNewTab' => $opens_in_new_tab, - 'rel' => $rel, - 'title' => $menu_item->attr_title, - 'type' => $menu_item->object, - 'url' => $menu_item->url, - ), - ); - - $block['innerBlocks'] = isset( $menu_items_by_parent_id[ $menu_item->ID ] ) - ? block_core_navigation_parse_blocks_from_menu_items( $menu_items_by_parent_id[ $menu_item->ID ], $menu_items_by_parent_id ) - : array(); - $block['innerContent'] = array_map( 'serialize_block', $block['innerBlocks'] ); - - $blocks[] = $block; - } - - return $blocks; -} /** * Build an array with CSS classes and inline styles defining the colors @@ -248,148 +276,9 @@ function block_core_navigation_render_submenu_icon() { return ''; } -/** - * Get the classic navigation menu to use as a fallback. - * - * @return object WP_Term The classic navigation. - */ -function block_core_navigation_get_classic_menu_fallback() { - $classic_nav_menus = wp_get_nav_menus(); - // If menus exist. - if ( $classic_nav_menus && ! is_wp_error( $classic_nav_menus ) ) { - // Handles simple use case where user has a classic menu and switches to a block theme. - // Returns the menu assigned to location `primary`. - $locations = get_nav_menu_locations(); - if ( isset( $locations['primary'] ) ) { - $primary_menu = wp_get_nav_menu_object( $locations['primary'] ); - if ( $primary_menu ) { - return $primary_menu; - } - } - // Returns a menu if `primary` is its slug. - foreach ( $classic_nav_menus as $classic_nav_menu ) { - if ( 'primary' === $classic_nav_menu->slug ) { - return $classic_nav_menu; - } - } - - // Otherwise return the most recently created classic menu. - usort( - $classic_nav_menus, - function( $a, $b ) { - return $b->term_id - $a->term_id; - } - ); - return $classic_nav_menus[0]; - } -} - -/** - * Converts a classic navigation to blocks. - * - * @param object $classic_nav_menu WP_Term The classic navigation object to convert. - * @return array the normalized parsed blocks. - */ -function block_core_navigation_get_classic_menu_fallback_blocks( $classic_nav_menu ) { - // BEGIN: Code that already exists in wp_nav_menu(). - $menu_items = wp_get_nav_menu_items( $classic_nav_menu->term_id, array( 'update_post_term_cache' => false ) ); - - // Set up the $menu_item variables. - _wp_menu_item_classes_by_context( $menu_items ); - - $sorted_menu_items = array(); - foreach ( (array) $menu_items as $menu_item ) { - $sorted_menu_items[ $menu_item->menu_order ] = $menu_item; - } - - unset( $menu_items, $menu_item ); - - // END: Code that already exists in wp_nav_menu(). - - $menu_items_by_parent_id = array(); - foreach ( $sorted_menu_items as $menu_item ) { - $menu_items_by_parent_id[ $menu_item->menu_item_parent ][] = $menu_item; - } - - $inner_blocks = block_core_navigation_parse_blocks_from_menu_items( - isset( $menu_items_by_parent_id[0] ) - ? $menu_items_by_parent_id[0] - : array(), - $menu_items_by_parent_id - ); - - return serialize_blocks( $inner_blocks ); -} - -/** - * If there's a the classic menu then use it as a fallback. - * - * @return array the normalized parsed blocks. - */ -function block_core_navigation_maybe_use_classic_menu_fallback() { - // See if we have a classic menu. - $classic_nav_menu = block_core_navigation_get_classic_menu_fallback(); - - if ( ! $classic_nav_menu ) { - return; - } - - // If we have a classic menu then convert it to blocks. - $classic_nav_menu_blocks = block_core_navigation_get_classic_menu_fallback_blocks( $classic_nav_menu ); - - if ( empty( $classic_nav_menu_blocks ) ) { - return; - } - - // Create a new navigation menu from the classic menu. - $wp_insert_post_result = wp_insert_post( - array( - 'post_content' => $classic_nav_menu_blocks, - 'post_title' => $classic_nav_menu->slug, - 'post_name' => $classic_nav_menu->slug, - 'post_status' => 'publish', - 'post_type' => 'wp_navigation', - ), - true // So that we can check whether the result is an error. - ); - - if ( is_wp_error( $wp_insert_post_result ) ) { - return; - } - - // Fetch the most recently published navigation which will be the classic one created above. - return block_core_navigation_get_most_recently_published_navigation(); -} - -/** - * Finds the most recently published `wp_navigation` Post. - * - * @return WP_Post|null the first non-empty Navigation or null. - */ -function block_core_navigation_get_most_recently_published_navigation() { - - // Default to the most recently created menu. - $parsed_args = array( - 'post_type' => 'wp_navigation', - 'no_found_rows' => true, - 'update_post_meta_cache' => false, - 'update_post_term_cache' => false, - 'order' => 'DESC', - 'orderby' => 'date', - 'post_status' => 'publish', - 'posts_per_page' => 1, // get only the most recent. - ); - - $navigation_post = new WP_Query( $parsed_args ); - if ( count( $navigation_post->posts ) > 0 ) { - return $navigation_post->posts[0]; - } - - return null; -} /** * Filter out empty "null" blocks from the block list. @@ -403,7 +292,7 @@ function block_core_navigation_get_most_recently_published_navigation() { function block_core_navigation_filter_out_empty_blocks( $parsed_blocks ) { $filtered = array_filter( $parsed_blocks, - function( $block ) { + static function( $block ) { return isset( $block['blockName'] ); } ); @@ -452,15 +341,7 @@ function block_core_navigation_get_fallback_blocks() { // If `core/page-list` is not registered then return empty blocks. $fallback_blocks = $registry->is_registered( 'core/page-list' ) ? $page_list_fallback : array(); - // Default to a list of Pages. - - $navigation_post = block_core_navigation_get_most_recently_published_navigation(); - - // If there are no navigation posts then try to find a classic menu - // and convert it into a block based navigation menu. - if ( ! $navigation_post ) { - $navigation_post = block_core_navigation_maybe_use_classic_menu_fallback(); - } + $navigation_post = WP_Navigation_Fallback_Gutenberg::get_fallback(); // Use the first non-empty Navigation as fallback if available. if ( $navigation_post ) { @@ -531,7 +412,6 @@ function block_core_navigation_from_block_get_post_ids( $block ) { * @return string Returns the post content with the legacy widget added. */ function render_block_core_navigation( $attributes, $content, $block ) { - static $seen_menu_names = array(); // Flag used to indicate whether the rendered output is considered to be @@ -562,15 +442,6 @@ function render_block_core_navigation( $attributes, $content, $block ) { */ $has_old_responsive_attribute = ! empty( $attributes['isResponsive'] ) && $attributes['isResponsive']; $is_responsive_menu = isset( $attributes['overlayMenu'] ) && 'never' !== $attributes['overlayMenu'] || $has_old_responsive_attribute; - $should_load_view_script = ! wp_script_is( 'wp-block-navigation-view' ) && ( $is_responsive_menu || $attributes['openSubmenusOnClick'] || $attributes['showSubmenuIcon'] ); - if ( $should_load_view_script ) { - wp_enqueue_script( 'wp-block-navigation-view' ); - } - - $should_load_modal_view_script = isset( $attributes['overlayMenu'] ) && 'never' !== $attributes['overlayMenu']; - if ( $should_load_modal_view_script ) { - wp_enqueue_script( 'wp-block-navigation-view-modal' ); - } $inner_blocks = $block->inner_blocks; @@ -668,7 +539,10 @@ function render_block_core_navigation( $attributes, $content, $block ) { // Restore legacy classnames for submenu positioning. $layout_class = ''; - if ( isset( $attributes['layout']['justifyContent'] ) ) { + if ( + isset( $attributes['layout']['justifyContent'] ) && + isset( $layout_justification[ $attributes['layout']['justifyContent'] ] ) + ) { $layout_class .= $layout_justification[ $attributes['layout']['justifyContent'] ]; } if ( isset( $attributes['layout']['orientation'] ) && 'vertical' === $attributes['layout']['orientation'] ) { @@ -712,14 +586,44 @@ function render_block_core_navigation( $attributes, $content, $block ) { 'core/site-logo', ); + $block_styles = isset( $attributes['styles'] ) ? $attributes['styles'] : ''; + $style = $block_styles . $colors['inline_styles'] . $font_sizes['inline_styles']; + $class = implode( ' ', $classes ); + + // If the menu name has been used previously then append an ID + // to the name to ensure uniqueness across a given post. + if ( isset( $seen_menu_names[ $nav_menu_name ] ) && $seen_menu_names[ $nav_menu_name ] > 1 ) { + $count = $seen_menu_names[ $nav_menu_name ]; + $nav_menu_name = $nav_menu_name . ' ' . ( $count ); + } + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $class, + 'style' => $style, + 'aria-label' => $nav_menu_name, + ) + ); + + $container_attributes = get_block_wrapper_attributes( + array( + 'class' => 'wp-block-navigation__container ' . $class, + 'style' => $style, + ) + ); + $inner_blocks_html = ''; $is_list_open = false; + $has_submenus = false; foreach ( $inner_blocks as $inner_block ) { $is_list_item = in_array( $inner_block->name, $list_item_nav_blocks, true ); if ( $is_list_item && ! $is_list_open ) { $is_list_open = true; - $inner_blocks_html .= '
      '; + $inner_blocks_html .= sprintf( + '
        ', + $container_attributes + ); } if ( ! $is_list_item && $is_list_open ) { @@ -728,6 +632,15 @@ function render_block_core_navigation( $attributes, $content, $block ) { } $inner_block_content = $inner_block->render(); + $p = new WP_HTML_Tag_Processor( $inner_block_content ); + if ( $p->next_tag( + array( + 'name' => 'LI', + 'class_name' => 'has-child', + ) + ) ) { + $has_submenus = true; + } if ( ! empty( $inner_block_content ) ) { if ( in_array( $inner_block->name, $needs_list_item_wrapper, true ) ) { $inner_blocks_html .= '
      • ' . $inner_block_content . '
      • '; @@ -741,22 +654,27 @@ function render_block_core_navigation( $attributes, $content, $block ) { $inner_blocks_html .= '
      '; } - $block_styles = isset( $attributes['styles'] ) ? $attributes['styles'] : ''; + // If the script already exists, there is no point in removing it from viewScript. + $should_load_view_script = ( $is_responsive_menu || ( $has_submenus && ( $attributes['openSubmenusOnClick'] || $attributes['showSubmenuIcon'] ) ) ); + $view_js_file = 'wp-block-navigation-view'; + if ( ! wp_script_is( $view_js_file ) ) { + $script_handles = $block->block_type->view_script_handles; - // If the menu name has been used previously then append an ID - // to the name to ensure uniqueness across a given post. - if ( isset( $seen_menu_names[ $nav_menu_name ] ) && $seen_menu_names[ $nav_menu_name ] > 1 ) { - $count = $seen_menu_names[ $nav_menu_name ]; - $nav_menu_name = $nav_menu_name . ' ' . ( $count ); + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( ! $should_load_view_script && in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file, 'wp-block-navigation-view-2' ) ); + } + // If the script is needed, but it was previously removed, add it again. + if ( $should_load_view_script && ! in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file, 'wp-block-navigation-view-2' ) ); + } } - $wrapper_attributes = get_block_wrapper_attributes( - array( - 'class' => implode( ' ', $classes ), - 'style' => $block_styles . $colors['inline_styles'] . $font_sizes['inline_styles'], - 'aria-label' => $nav_menu_name, - ) - ); + // Add directives to the submenu if needed. + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN && $has_submenus && $should_load_view_script ) { + $w = new WP_HTML_Tag_Processor( $inner_blocks_html ); + $inner_blocks_html = gutenberg_block_core_navigation_add_directives_to_submenu( $w, $attributes ); + } $modal_unique_id = wp_unique_id( 'modal-' ); @@ -795,12 +713,45 @@ function render_block_core_navigation( $attributes, $content, $block ) { $toggle_aria_label_open = $should_display_icon_label ? 'aria-label="' . __( 'Open menu' ) . '"' : ''; // Open button label. $toggle_aria_label_close = $should_display_icon_label ? 'aria-label="' . __( 'Close menu' ) . '"' : ''; // Close button label. + // Add Interactivity API directives to the markup if needed. + $nav_element_directives = ''; + $open_button_directives = ''; + $responsive_container_directives = ''; + $responsive_dialog_directives = ''; + $close_button_directives = ''; + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN && $should_load_view_script ) { + $nav_element_directives = ' + data-wp-interactive + data-wp-context=\'{ "core": { "navigation": { "isMenuOpen": { "click": false, "hover": false }, "overlay": true, "roleAttribute": "" } } }\' + '; + $open_button_directives = ' + data-wp-on--click="actions.core.navigation.openMenuOnClick" + data-wp-on--keydown="actions.core.navigation.handleMenuKeydown" + '; + $responsive_container_directives = ' + data-wp-class--has-modal-open="selectors.core.navigation.isMenuOpen" + data-wp-class--is-menu-open="selectors.core.navigation.isMenuOpen" + data-wp-effect="effects.core.navigation.initMenu" + data-wp-on--keydown="actions.core.navigation.handleMenuKeydown" + data-wp-on--focusout="actions.core.navigation.handleMenuFocusout" + tabindex="-1" + '; + $responsive_dialog_directives = ' + data-wp-bind--aria-modal="selectors.core.navigation.isMenuOpen" + data-wp-bind--role="selectors.core.navigation.roleAttribute" + data-wp-effect="effects.core.navigation.focusFirstElement" + '; + $close_button_directives = ' + data-wp-on--click="actions.core.navigation.closeMenuOnClick" + '; + } + $responsive_container_markup = sprintf( - ' -
      + ' +
      -
      - +
      +
      %2$s
      @@ -816,13 +767,18 @@ function render_block_core_navigation( $attributes, $content, $block ) { esc_attr( safecss_filter_attr( $colors['overlay_inline_styles'] ) ), __( 'Menu' ), $toggle_button_content, - $toggle_close_button_content + $toggle_close_button_content, + $open_button_directives, + $responsive_container_directives, + $responsive_dialog_directives, + $close_button_directives ); return sprintf( - '', + '', $wrapper_attributes, - $responsive_container_markup + $responsive_container_markup, + $nav_element_directives ); } @@ -876,3 +832,212 @@ function block_core_navigation_typographic_presets_backcompatibility( $parsed_bl } add_filter( 'render_block_data', 'block_core_navigation_typographic_presets_backcompatibility' ); + +/** + * Turns menu item data into a nested array of parsed blocks + * + * @param array $menu_items An array of menu items that represent + * an individual level of a menu. + * @param array $menu_items_by_parent_id An array keyed by the id of the + * parent menu where each element is an + * array of menu items that belong to + * that parent. + * @return array An array of parsed block data. + */ +function block_core_navigation_parse_blocks_from_menu_items( $menu_items, $menu_items_by_parent_id ) { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback_Gutenberg::parse_blocks_from_menu_items' ); + + if ( empty( $menu_items ) ) { + return array(); + } + + $blocks = array(); + + foreach ( $menu_items as $menu_item ) { + $class_name = ! empty( $menu_item->classes ) ? implode( ' ', (array) $menu_item->classes ) : null; + $id = ( null !== $menu_item->object_id && 'custom' !== $menu_item->object ) ? $menu_item->object_id : null; + $opens_in_new_tab = null !== $menu_item->target && '_blank' === $menu_item->target; + $rel = ( null !== $menu_item->xfn && '' !== $menu_item->xfn ) ? $menu_item->xfn : null; + $kind = null !== $menu_item->type ? str_replace( '_', '-', $menu_item->type ) : 'custom'; + + $block = array( + 'blockName' => isset( $menu_items_by_parent_id[ $menu_item->ID ] ) ? 'core/navigation-submenu' : 'core/navigation-link', + 'attrs' => array( + 'className' => $class_name, + 'description' => $menu_item->description, + 'id' => $id, + 'kind' => $kind, + 'label' => $menu_item->title, + 'opensInNewTab' => $opens_in_new_tab, + 'rel' => $rel, + 'title' => $menu_item->attr_title, + 'type' => $menu_item->object, + 'url' => $menu_item->url, + ), + ); + + $block['innerBlocks'] = isset( $menu_items_by_parent_id[ $menu_item->ID ] ) + ? block_core_navigation_parse_blocks_from_menu_items( $menu_items_by_parent_id[ $menu_item->ID ], $menu_items_by_parent_id ) + : array(); + $block['innerContent'] = array_map( 'serialize_block', $block['innerBlocks'] ); + + $blocks[] = $block; + } + + return $blocks; +} + +/** + * Get the classic navigation menu to use as a fallback. + * + * @return object WP_Term The classic navigation. + */ +function block_core_navigation_get_classic_menu_fallback() { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback_Gutenberg::get_classic_menu_fallback' ); + + $classic_nav_menus = wp_get_nav_menus(); + + // If menus exist. + if ( $classic_nav_menus && ! is_wp_error( $classic_nav_menus ) ) { + // Handles simple use case where user has a classic menu and switches to a block theme. + + // Returns the menu assigned to location `primary`. + $locations = get_nav_menu_locations(); + if ( isset( $locations['primary'] ) ) { + $primary_menu = wp_get_nav_menu_object( $locations['primary'] ); + if ( $primary_menu ) { + return $primary_menu; + } + } + + // Returns a menu if `primary` is its slug. + foreach ( $classic_nav_menus as $classic_nav_menu ) { + if ( 'primary' === $classic_nav_menu->slug ) { + return $classic_nav_menu; + } + } + + // Otherwise return the most recently created classic menu. + usort( + $classic_nav_menus, + static function( $a, $b ) { + return $b->term_id - $a->term_id; + } + ); + return $classic_nav_menus[0]; + } +} + +/** + * Converts a classic navigation to blocks. + * + * @param object $classic_nav_menu WP_Term The classic navigation object to convert. + * @return array the normalized parsed blocks. + */ +function block_core_navigation_get_classic_menu_fallback_blocks( $classic_nav_menu ) { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback_Gutenberg::get_classic_menu_fallback_blocks' ); + + // BEGIN: Code that already exists in wp_nav_menu(). + $menu_items = wp_get_nav_menu_items( $classic_nav_menu->term_id, array( 'update_post_term_cache' => false ) ); + + // Set up the $menu_item variables. + _wp_menu_item_classes_by_context( $menu_items ); + + $sorted_menu_items = array(); + foreach ( (array) $menu_items as $menu_item ) { + $sorted_menu_items[ $menu_item->menu_order ] = $menu_item; + } + + unset( $menu_items, $menu_item ); + + // END: Code that already exists in wp_nav_menu(). + + $menu_items_by_parent_id = array(); + foreach ( $sorted_menu_items as $menu_item ) { + $menu_items_by_parent_id[ $menu_item->menu_item_parent ][] = $menu_item; + } + + $inner_blocks = block_core_navigation_parse_blocks_from_menu_items( + isset( $menu_items_by_parent_id[0] ) + ? $menu_items_by_parent_id[0] + : array(), + $menu_items_by_parent_id + ); + + return serialize_blocks( $inner_blocks ); +} + +/** + * If there's a the classic menu then use it as a fallback. + * + * @return array the normalized parsed blocks. + */ +function block_core_navigation_maybe_use_classic_menu_fallback() { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback_Gutenberg::create_classic_menu_fallback' ); + + // See if we have a classic menu. + $classic_nav_menu = block_core_navigation_get_classic_menu_fallback(); + + if ( ! $classic_nav_menu ) { + return; + } + + // If we have a classic menu then convert it to blocks. + $classic_nav_menu_blocks = block_core_navigation_get_classic_menu_fallback_blocks( $classic_nav_menu ); + + if ( empty( $classic_nav_menu_blocks ) ) { + return; + } + + // Create a new navigation menu from the classic menu. + $wp_insert_post_result = wp_insert_post( + array( + 'post_content' => $classic_nav_menu_blocks, + 'post_title' => $classic_nav_menu->name, + 'post_name' => $classic_nav_menu->slug, + 'post_status' => 'publish', + 'post_type' => 'wp_navigation', + ), + true // So that we can check whether the result is an error. + ); + + if ( is_wp_error( $wp_insert_post_result ) ) { + return; + } + + // Fetch the most recently published navigation which will be the classic one created above. + return block_core_navigation_get_most_recently_published_navigation(); +} + +/** + * Finds the most recently published `wp_navigation` Post. + * + * @return WP_Post|null the first non-empty Navigation or null. + */ +function block_core_navigation_get_most_recently_published_navigation() { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback_Gutenberg::get_most_recently_published_navigation' ); + + // Default to the most recently created menu. + $parsed_args = array( + 'post_type' => 'wp_navigation', + 'no_found_rows' => true, + 'update_post_meta_cache' => false, + 'update_post_term_cache' => false, + 'order' => 'DESC', + 'orderby' => 'date', + 'post_status' => 'publish', + 'posts_per_page' => 1, // get only the most recent. + ); + + $navigation_post = new WP_Query( $parsed_args ); + if ( count( $navigation_post->posts ) > 0 ) { + return $navigation_post->posts[0]; + } + + return null; +} diff --git a/src/wp-includes/blocks/navigation/block.json b/src/wp-includes/blocks/navigation/block.json index ee67381620..e45d053536 100644 --- a/src/wp-includes/blocks/navigation/block.json +++ b/src/wp-includes/blocks/navigation/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/navigation", "title": "Navigation", "category": "theme", @@ -87,7 +87,6 @@ "showSubmenuIcon": "showSubmenuIcon", "openSubmenusOnClick": "openSubmenusOnClick", "style": "style", - "orientation": "orientation", "maxNestingLevel": "maxNestingLevel" }, "supports": { @@ -115,7 +114,7 @@ "blockGap": true } }, - "__experimentalLayout": { + "layout": { "allowSwitching": false, "allowInheriting": false, "allowVerticalAlignment": false, diff --git a/src/wp-includes/blocks/navigation/view-modal.asset.php b/src/wp-includes/blocks/navigation/view-modal.asset.php index 35bf91ef33..94385651cd 100644 --- a/src/wp-includes/blocks/navigation/view-modal.asset.php +++ b/src/wp-includes/blocks/navigation/view-modal.asset.php @@ -1 +1 @@ - array(), 'version' => 'd09326a9acd3f6992aae'); + array(), 'version' => 'a145d0113e969f692877'); diff --git a/src/wp-includes/blocks/navigation/view-modal.min.asset.php b/src/wp-includes/blocks/navigation/view-modal.min.asset.php index c6b1fdefa2..3bfd6f1641 100644 --- a/src/wp-includes/blocks/navigation/view-modal.min.asset.php +++ b/src/wp-includes/blocks/navigation/view-modal.min.asset.php @@ -1 +1 @@ - array(), 'version' => 'f51363b18f0497ec84da'); + array(), 'version' => '4922697e0a5370a09f02'); diff --git a/src/wp-includes/blocks/navigation/view.asset.php b/src/wp-includes/blocks/navigation/view.asset.php index 47c4cec85f..728ff5dd4d 100644 --- a/src/wp-includes/blocks/navigation/view.asset.php +++ b/src/wp-includes/blocks/navigation/view.asset.php @@ -1 +1 @@ - array(), 'version' => '4ab20ef60d94f9632256'); + array(), 'version' => 'e0302ba06467706c7421'); diff --git a/src/wp-includes/blocks/navigation/view.min.asset.php b/src/wp-includes/blocks/navigation/view.min.asset.php index a5cea71cb5..8372aaad5f 100644 --- a/src/wp-includes/blocks/navigation/view.min.asset.php +++ b/src/wp-includes/blocks/navigation/view.min.asset.php @@ -1 +1 @@ - array(), 'version' => 'c24330f635f5cb9d5e0e'); + array(), 'version' => '886680af40b7521d60fc'); diff --git a/src/wp-includes/blocks/nextpage/block.json b/src/wp-includes/blocks/nextpage/block.json index 6a133264d6..ab88d4a7be 100644 --- a/src/wp-includes/blocks/nextpage/block.json +++ b/src/wp-includes/blocks/nextpage/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/nextpage", "title": "Page Break", "category": "design", diff --git a/src/wp-includes/blocks/page-list-item.php b/src/wp-includes/blocks/page-list-item.php new file mode 100644 index 0000000000..2955c795ae --- /dev/null +++ b/src/wp-includes/blocks/page-list-item.php @@ -0,0 +1,14 @@ +post_parent ][ $page->ID ] = array( 'page_id' => $page->ID, 'title' => $page->post_title, - 'link' => get_permalink( $page->ID ), + 'link' => get_permalink( $page ), 'is_active' => $is_active, ); } else { $top_level_pages[ $page->ID ] = array( 'page_id' => $page->ID, 'title' => $page->post_title, - 'link' => get_permalink( $page->ID ), + 'link' => get_permalink( $page ), 'is_active' => $is_active, ); diff --git a/src/wp-includes/blocks/page-list/block.json b/src/wp-includes/blocks/page-list/block.json index 4f4f45c4bb..7f4f2ce86c 100644 --- a/src/wp-includes/blocks/page-list/block.json +++ b/src/wp-includes/blocks/page-list/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/page-list", "title": "Page List", "category": "widgets", diff --git a/src/wp-includes/blocks/paragraph/block.json b/src/wp-includes/blocks/paragraph/block.json index 497a6b2c29..cbabc108ec 100644 --- a/src/wp-includes/blocks/paragraph/block.json +++ b/src/wp-includes/blocks/paragraph/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/paragraph", "title": "Paragraph", "category": "text", @@ -43,7 +43,11 @@ }, "spacing": { "margin": true, - "padding": true + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } }, "typography": { "fontSize": true, diff --git a/src/wp-includes/blocks/pattern.php b/src/wp-includes/blocks/pattern.php index 32a08601ca..a819cb6bd4 100644 --- a/src/wp-includes/blocks/pattern.php +++ b/src/wp-includes/blocks/pattern.php @@ -33,6 +33,7 @@ function render_block_core_pattern( $attributes ) { $slug = $attributes['slug']; $registry = WP_Block_Patterns_Registry::get_instance(); + if ( ! $registry->is_registered( $slug ) ) { return ''; } diff --git a/src/wp-includes/blocks/pattern/block.json b/src/wp-includes/blocks/pattern/block.json index da02314240..e9a85a9b2f 100644 --- a/src/wp-includes/blocks/pattern/block.json +++ b/src/wp-includes/blocks/pattern/block.json @@ -1,8 +1,8 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/pattern", - "title": "Pattern", + "title": "Pattern placeholder", "category": "theme", "description": "Show a block pattern.", "supports": { diff --git a/src/wp-includes/blocks/post-author-biography/block.json b/src/wp-includes/blocks/post-author-biography/block.json index 434b6b0965..6964da1969 100644 --- a/src/wp-includes/blocks/post-author-biography/block.json +++ b/src/wp-includes/blocks/post-author-biography/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-author-biography", "title": "Post Author Biography", "category": "theme", diff --git a/src/wp-includes/blocks/post-author-name/block.json b/src/wp-includes/blocks/post-author-name/block.json index 29ad4b0d4d..3acb8c19bf 100644 --- a/src/wp-includes/blocks/post-author-name/block.json +++ b/src/wp-includes/blocks/post-author-name/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-author-name", "title": "Post Author Name", "category": "theme", diff --git a/src/wp-includes/blocks/post-author.php b/src/wp-includes/blocks/post-author.php index 7e6a9e6a0b..898d947828 100644 --- a/src/wp-includes/blocks/post-author.php +++ b/src/wp-includes/blocks/post-author.php @@ -32,7 +32,7 @@ function render_block_core_post_author( $attributes, $content, $block ) { $link = get_author_posts_url( $author_id ); $author_name = get_the_author_meta( 'display_name', $author_id ); if ( ! empty( $attributes['isLink'] && ! empty( $attributes['linkTarget'] ) ) ) { - $author_name = sprintf( '%2s', esc_url( $link ), esc_attr( $attributes['linkTarget'] ), $author_name ); + $author_name = sprintf( '%3$s', esc_url( $link ), esc_attr( $attributes['linkTarget'] ), $author_name ); } $byline = ! empty( $attributes['byline'] ) ? $attributes['byline'] : false; diff --git a/src/wp-includes/blocks/post-author/block.json b/src/wp-includes/blocks/post-author/block.json index 7d7cd28225..ada3a77803 100644 --- a/src/wp-includes/blocks/post-author/block.json +++ b/src/wp-includes/blocks/post-author/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-author", "title": "Post Author", "category": "theme", @@ -63,6 +63,5 @@ } } }, - "editorStyle": "wp-block-post-author-editor", "style": "wp-block-post-author" } diff --git a/src/wp-includes/blocks/post-comments-form/block.json b/src/wp-includes/blocks/post-comments-form/block.json index 5ed4122d11..62f92b7581 100644 --- a/src/wp-includes/blocks/post-comments-form/block.json +++ b/src/wp-includes/blocks/post-comments-form/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-comments-form", "title": "Post Comments Form", "category": "theme", diff --git a/src/wp-includes/blocks/post-content/block.json b/src/wp-includes/blocks/post-content/block.json index c6041e036d..044ca5768b 100644 --- a/src/wp-includes/blocks/post-content/block.json +++ b/src/wp-includes/blocks/post-content/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-content", "title": "Post Content", "category": "theme", @@ -10,7 +10,7 @@ "supports": { "align": [ "wide", "full" ], "html": false, - "__experimentalLayout": true, + "layout": true, "dimensions": { "minHeight": true }, diff --git a/src/wp-includes/blocks/post-date.php b/src/wp-includes/blocks/post-date.php index 5c20ee30c2..b59db80b24 100644 --- a/src/wp-includes/blocks/post-date.php +++ b/src/wp-includes/blocks/post-date.php @@ -18,25 +18,34 @@ function render_block_core_post_date( $attributes, $content, $block ) { return ''; } - $post_ID = $block->context['postId']; + $post_ID = $block->context['postId']; + $formatted_date = get_the_date( empty( $attributes['format'] ) ? '' : $attributes['format'], $post_ID ); + $unformatted_date = esc_attr( get_the_date( 'c', $post_ID ) ); + $classes = array(); - $classes = array(); if ( isset( $attributes['textAlign'] ) ) { $classes[] = 'has-text-align-' . $attributes['textAlign']; } if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { $classes[] = 'has-link-color'; } - $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + /* + * If the "Display last modified date" setting is enabled, + * only display the modified date if it is later than the publishing date. + */ if ( isset( $attributes['displayType'] ) && 'modified' === $attributes['displayType'] ) { - $formatted_date = get_the_modified_date( empty( $attributes['format'] ) ? '' : $attributes['format'], $post_ID ); - $unformatted_date = esc_attr( get_the_modified_date( 'c', $post_ID ) ); - } else { - $formatted_date = get_the_date( empty( $attributes['format'] ) ? '' : $attributes['format'], $post_ID ); - $unformatted_date = esc_attr( get_the_date( 'c', $post_ID ) ); + if ( get_the_modified_date( 'Ymdhi', $post_ID ) > get_the_date( 'Ymdhi', $post_ID ) ) { + $formatted_date = get_the_modified_date( empty( $attributes['format'] ) ? '' : $attributes['format'], $post_ID ); + $unformatted_date = esc_attr( get_the_modified_date( 'c', $post_ID ) ); + $classes[] = 'wp-block-post-date__modified-date'; + } else { + return ''; + } } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { $formatted_date = sprintf( '%2s', get_the_permalink( $post_ID ), $formatted_date ); } diff --git a/src/wp-includes/blocks/post-date/block.json b/src/wp-includes/blocks/post-date/block.json index b469dbe87d..ed87259c3b 100644 --- a/src/wp-includes/blocks/post-date/block.json +++ b/src/wp-includes/blocks/post-date/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-date", "title": "Post Date", "category": "theme", diff --git a/src/wp-includes/blocks/post-excerpt.php b/src/wp-includes/blocks/post-excerpt.php index 1380918fe1..4ed4edab95 100644 --- a/src/wp-includes/blocks/post-excerpt.php +++ b/src/wp-includes/blocks/post-excerpt.php @@ -18,14 +18,20 @@ function render_block_core_post_excerpt( $attributes, $content, $block ) { return ''; } - $excerpt = get_the_excerpt(); - - if ( empty( $excerpt ) ) { - return ''; + /* + * The purpose of the excerpt length setting is to limit the length of both + * automatically generated and user-created excerpts. + * Because the excerpt_length filter only applies to auto generated excerpts, + * wp_trim_words is used instead. + */ + $excerpt_length = $attributes['excerptLength']; + $excerpt = get_the_excerpt( $block->context['postId'] ); + if ( isset( $excerpt_length ) ) { + $excerpt = wp_trim_words( $excerpt, $excerpt_length ); } $more_text = ! empty( $attributes['moreText'] ) ? '' . wp_kses_post( $attributes['moreText'] ) . '' : ''; - $filter_excerpt_more = function( $more ) use ( $more_text ) { + $filter_excerpt_more = static function( $more ) use ( $more_text ) { return empty( $more_text ) ? $more : ''; }; /** @@ -70,3 +76,20 @@ function register_block_core_post_excerpt() { ); } add_action( 'init', 'register_block_core_post_excerpt' ); + +/** + * If themes or plugins filter the excerpt_length, we need to + * override the filter in the editor, otherwise + * the excerpt length block setting has no effect. + * Returns 100 because 100 is the max length in the setting. + */ +if ( is_admin() || + defined( 'REST_REQUEST' ) && REST_REQUEST ) { + add_filter( + 'excerpt_length', + static function() { + return 100; + }, + PHP_INT_MAX + ); +} diff --git a/src/wp-includes/blocks/post-excerpt/block.json b/src/wp-includes/blocks/post-excerpt/block.json index 03107ff900..33b7818ebe 100644 --- a/src/wp-includes/blocks/post-excerpt/block.json +++ b/src/wp-includes/blocks/post-excerpt/block.json @@ -1,10 +1,10 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-excerpt", - "title": "Post Excerpt", + "title": "Excerpt", "category": "theme", - "description": "Display a post's excerpt.", + "description": "Display the excerpt.", "textdomain": "default", "attributes": { "textAlign": { @@ -16,6 +16,10 @@ "showMoreOnNewLine": { "type": "boolean", "default": true + }, + "excerptLength": { + "type": "number", + "default": 55 } }, "usesContext": [ "postId", "postType", "queryId" ], diff --git a/src/wp-includes/blocks/post-featured-image.php b/src/wp-includes/blocks/post-featured-image.php index 8da66accd3..6cb4110ee0 100644 --- a/src/wp-includes/blocks/post-featured-image.php +++ b/src/wp-includes/blocks/post-featured-image.php @@ -42,11 +42,20 @@ function render_block_core_post_featured_image( $attributes, $content, $block ) } } - if ( ! empty( $attributes['height'] ) ) { - $extra_styles = "height:{$attributes['height']};"; - if ( ! empty( $attributes['scale'] ) ) { - $extra_styles .= "object-fit:{$attributes['scale']};"; - } + $extra_styles = ''; + + // Aspect ratio with a height set needs to override the default width/height. + if ( ! empty( $attributes['aspectRatio'] ) ) { + $extra_styles .= 'width:100%;height:100%;'; + } elseif ( ! empty( $attributes['height'] ) ) { + $extra_styles .= "height:{$attributes['height']};"; + } + + if ( ! empty( $attributes['scale'] ) ) { + $extra_styles .= "object-fit:{$attributes['scale']};"; + } + + if ( ! empty( $extra_styles ) ) { $attr['style'] = empty( $attr['style'] ) ? $extra_styles : $attr['style'] . $extra_styles; } @@ -71,12 +80,19 @@ function render_block_core_post_featured_image( $attributes, $content, $block ) $featured_image = $featured_image . $overlay_markup; } - $width = ! empty( $attributes['width'] ) ? esc_attr( safecss_filter_attr( 'width:' . $attributes['width'] ) ) . ';' : ''; - $height = ! empty( $attributes['height'] ) ? esc_attr( safecss_filter_attr( 'height:' . $attributes['height'] ) ) . ';' : ''; - if ( ! $height && ! $width ) { + $aspect_ratio = ! empty( $attributes['aspectRatio'] ) + ? esc_attr( safecss_filter_attr( 'aspect-ratio:' . $attributes['aspectRatio'] ) ) . ';' + : ''; + $width = ! empty( $attributes['width'] ) + ? esc_attr( safecss_filter_attr( 'width:' . $attributes['width'] ) ) . ';' + : ''; + $height = ! empty( $attributes['height'] ) + ? esc_attr( safecss_filter_attr( 'height:' . $attributes['height'] ) ) . ';' + : ''; + if ( ! $height && ! $width && ! $aspect_ratio ) { $wrapper_attributes = get_block_wrapper_attributes(); } else { - $wrapper_attributes = get_block_wrapper_attributes( array( 'style' => $width . $height ) ); + $wrapper_attributes = get_block_wrapper_attributes( array( 'style' => $aspect_ratio . $width . $height ) ); } return "
      {$featured_image}
      "; } diff --git a/src/wp-includes/blocks/post-featured-image/block.json b/src/wp-includes/blocks/post-featured-image/block.json index 40f51cffa0..aa6428cad0 100644 --- a/src/wp-includes/blocks/post-featured-image/block.json +++ b/src/wp-includes/blocks/post-featured-image/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-featured-image", "title": "Post Featured Image", "category": "theme", @@ -11,6 +11,9 @@ "type": "boolean", "default": false }, + "aspectRatio": { + "type": "string" + }, "width": { "type": "string" }, diff --git a/src/wp-includes/blocks/post-navigation-link/block.json b/src/wp-includes/blocks/post-navigation-link/block.json index 7b8d87fe26..4e7df560c6 100644 --- a/src/wp-includes/blocks/post-navigation-link/block.json +++ b/src/wp-includes/blocks/post-navigation-link/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-navigation-link", "title": "Post Navigation Link", "category": "theme", diff --git a/src/wp-includes/blocks/post-template.php b/src/wp-includes/blocks/post-template.php index 3a3c207cf9..3c023c80ed 100644 --- a/src/wp-includes/blocks/post-template.php +++ b/src/wp-includes/blocks/post-template.php @@ -72,6 +72,11 @@ function render_block_core_post_template( $attributes, $content, $block ) { $classnames .= ' has-link-color'; } + // Ensure backwards compatibility by flagging the number of columns via classname when using grid layout. + if ( isset( $attributes['layout']['type'] ) && 'grid' === $attributes['layout']['type'] && ! empty( $attributes['layout']['columnCount'] ) ) { + $classnames .= ' ' . sanitize_title( 'columns-' . $attributes['layout']['columnCount'] ); + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => trim( $classnames ) ) ); $content = ''; @@ -85,17 +90,18 @@ function render_block_core_post_template( $attributes, $content, $block ) { // This ensures that for the inner instances of the Post Template block, we do not render any block supports. $block_instance['blockName'] = 'core/null'; + $post_id = get_the_ID(); + $post_type = get_post_type(); + $filter_block_context = static function( $context ) use ( $post_id, $post_type ) { + $context['postType'] = $post_type; + $context['postId'] = $post_id; + return $context; + }; + add_filter( 'render_block_context', $filter_block_context ); // Render the inner blocks of the Post Template block with `dynamic` set to `false` to prevent calling // `render_callback` and ensure that no wrapper markup is included. - $block_content = ( - new WP_Block( - $block_instance, - array( - 'postType' => get_post_type(), - 'postId' => get_the_ID(), - ) - ) - )->render( array( 'dynamic' => false ) ); + $block_content = ( new WP_Block( $block_instance ) )->render( array( 'dynamic' => false ) ); + remove_filter( 'render_block_context', $filter_block_context ); // Wrap the render inner blocks in a `li` element with the appropriate post classes. $post_classes = implode( ' ', get_post_class( 'wp-block-post' ) ); diff --git a/src/wp-includes/blocks/post-template/block.json b/src/wp-includes/blocks/post-template/block.json index bc9910b47d..1f0d4677e6 100644 --- a/src/wp-includes/blocks/post-template/block.json +++ b/src/wp-includes/blocks/post-template/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-template", "title": "Post Template", "category": "theme", @@ -18,10 +18,8 @@ "supports": { "reusable": false, "html": false, - "align": true, - "__experimentalLayout": { - "allowEditing": false - }, + "align": [ "wide", "full" ], + "layout": true, "color": { "gradients": true, "link": true, @@ -42,6 +40,14 @@ "__experimentalDefaultControls": { "fontSize": true } + }, + "spacing": { + "blockGap": { + "__experimentalDefault": "1.25em" + }, + "__experimentalDefaultControls": { + "blockGap": true + } } }, "style": "wp-block-post-template", diff --git a/src/wp-includes/blocks/post-terms.php b/src/wp-includes/blocks/post-terms.php index 5511dd2f8e..96951a9e15 100644 --- a/src/wp-includes/blocks/post-terms.php +++ b/src/wp-includes/blocks/post-terms.php @@ -64,8 +64,8 @@ function render_block_core_post_terms( $attributes, $content, $block ) { function register_block_core_post_terms() { $taxonomies = get_taxonomies( array( - 'public' => true, - 'show_in_rest' => true, + 'publicly_queryable' => true, + 'show_in_rest' => true, ), 'objects' ); @@ -87,6 +87,7 @@ function register_block_core_post_terms() { 'term' => $taxonomy->name, ), 'isActive' => array( 'term' ), + 'scope' => array( 'inserter', 'transform' ), ); // Set the category variation as the default one. if ( 'category' === $taxonomy->name ) { diff --git a/src/wp-includes/blocks/post-terms/block.json b/src/wp-includes/blocks/post-terms/block.json index e14f96170c..0da7fb02f8 100644 --- a/src/wp-includes/blocks/post-terms/block.json +++ b/src/wp-includes/blocks/post-terms/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-terms", "title": "Post Terms", "category": "theme", diff --git a/src/wp-includes/blocks/post-title.php b/src/wp-includes/blocks/post-title.php index 1f03b12fc2..e1d4b255c5 100644 --- a/src/wp-includes/blocks/post-title.php +++ b/src/wp-includes/blocks/post-title.php @@ -19,8 +19,8 @@ function render_block_core_post_title( $attributes, $content, $block ) { return ''; } - $post_ID = $block->context['postId']; - $title = get_the_title(); + $post = get_post( $block->context['postId'] ); + $title = get_the_title( $post ); if ( ! $title ) { return ''; @@ -28,12 +28,12 @@ function render_block_core_post_title( $attributes, $content, $block ) { $tag_name = 'h2'; if ( isset( $attributes['level'] ) ) { - $tag_name = 0 === $attributes['level'] ? 'p' : 'h' . $attributes['level']; + $tag_name = 'h' . $attributes['level']; } if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { $rel = ! empty( $attributes['rel'] ) ? 'rel="' . esc_attr( $attributes['rel'] ) . '"' : ''; - $title = sprintf( '%4$s', get_the_permalink( $post_ID ), esc_attr( $attributes['linkTarget'] ), $rel, $title ); + $title = sprintf( '%4$s', get_the_permalink( $post ), esc_attr( $attributes['linkTarget'] ), $rel, $title ); } $classes = array(); diff --git a/src/wp-includes/blocks/post-title/block.json b/src/wp-includes/blocks/post-title/block.json index 015896ff1b..eda5332f24 100644 --- a/src/wp-includes/blocks/post-title/block.json +++ b/src/wp-includes/blocks/post-title/block.json @@ -1,8 +1,8 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/post-title", - "title": "Post Title", + "title": "Title", "category": "theme", "description": "Displays the title of a post, page, or any other content-type.", "textdomain": "default", diff --git a/src/wp-includes/blocks/preformatted/block.json b/src/wp-includes/blocks/preformatted/block.json index bab40b94a7..f781cb1125 100644 --- a/src/wp-includes/blocks/preformatted/block.json +++ b/src/wp-includes/blocks/preformatted/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/preformatted", "title": "Preformatted", "category": "text", diff --git a/src/wp-includes/blocks/pullquote/block.json b/src/wp-includes/blocks/pullquote/block.json index 0732bb52f6..54c4175d31 100644 --- a/src/wp-includes/blocks/pullquote/block.json +++ b/src/wp-includes/blocks/pullquote/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/pullquote", "title": "Pullquote", "category": "text", diff --git a/src/wp-includes/blocks/query-no-results/block.json b/src/wp-includes/blocks/query-no-results/block.json index f042223f36..32088752bb 100644 --- a/src/wp-includes/blocks/query-no-results/block.json +++ b/src/wp-includes/blocks/query-no-results/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/query-no-results", "title": "No results", "category": "theme", diff --git a/src/wp-includes/blocks/query-pagination-next.php b/src/wp-includes/blocks/query-pagination-next.php index e92b58938d..f0ded727ee 100644 --- a/src/wp-includes/blocks/query-pagination-next.php +++ b/src/wp-includes/blocks/query-pagination-next.php @@ -20,10 +20,15 @@ function render_block_core_query_pagination_next( $attributes, $content, $block $max_page = isset( $block->context['query']['pages'] ) ? (int) $block->context['query']['pages'] : 0; $wrapper_attributes = get_block_wrapper_attributes(); + $show_label = isset( $block->context['showLabel'] ) ? (bool) $block->context['showLabel'] : true; $default_label = __( 'Next Page' ); - $label = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? esc_html( $attributes['label'] ) : $default_label; + $label_text = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? esc_html( $attributes['label'] ) : $default_label; + $label = $show_label ? $label_text : ''; $pagination_arrow = get_query_pagination_arrow( $block, true ); + if ( ! $label ) { + $wrapper_attributes .= ' aria-label="' . $label_text . '"'; + } if ( $pagination_arrow ) { $label .= $pagination_arrow; } @@ -31,7 +36,7 @@ function render_block_core_query_pagination_next( $attributes, $content, $block // Check if the pagination is for Query that inherits the global context. if ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ) { - $filter_link_attributes = function() use ( $wrapper_attributes ) { + $filter_link_attributes = static function() use ( $wrapper_attributes ) { return $wrapper_attributes; }; add_filter( 'next_posts_link_attributes', $filter_link_attributes ); diff --git a/src/wp-includes/blocks/query-pagination-next/block.json b/src/wp-includes/blocks/query-pagination-next/block.json index ad87d05b5e..60d44d7ca1 100644 --- a/src/wp-includes/blocks/query-pagination-next/block.json +++ b/src/wp-includes/blocks/query-pagination-next/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/query-pagination-next", "title": "Next Page", "category": "theme", @@ -12,7 +12,7 @@ "type": "string" } }, - "usesContext": [ "queryId", "query", "paginationArrow" ], + "usesContext": [ "queryId", "query", "paginationArrow", "showLabel" ], "supports": { "reusable": false, "html": false, diff --git a/src/wp-includes/blocks/query-pagination-numbers/block.json b/src/wp-includes/blocks/query-pagination-numbers/block.json index fd28596581..f00b2993a7 100644 --- a/src/wp-includes/blocks/query-pagination-numbers/block.json +++ b/src/wp-includes/blocks/query-pagination-numbers/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/query-pagination-numbers", "title": "Page Numbers", "category": "theme", @@ -32,5 +32,5 @@ } } }, - "editorStyle": "query-pagination-numbers-editor" + "editorStyle": "wp-block-query-pagination-numbers-editor" } diff --git a/src/wp-includes/blocks/query-pagination-previous.php b/src/wp-includes/blocks/query-pagination-previous.php index 9bb9f0d1f2..5665506598 100644 --- a/src/wp-includes/blocks/query-pagination-previous.php +++ b/src/wp-includes/blocks/query-pagination-previous.php @@ -19,9 +19,14 @@ function render_block_core_query_pagination_previous( $attributes, $content, $bl $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; $wrapper_attributes = get_block_wrapper_attributes(); + $show_label = isset( $block->context['showLabel'] ) ? (bool) $block->context['showLabel'] : true; $default_label = __( 'Previous Page' ); - $label = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? esc_html( $attributes['label'] ) : $default_label; + $label_text = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? esc_html( $attributes['label'] ) : $default_label; + $label = $show_label ? $label_text : ''; $pagination_arrow = get_query_pagination_arrow( $block, false ); + if ( ! $label ) { + $wrapper_attributes .= ' aria-label="' . $label_text . '"'; + } if ( $pagination_arrow ) { $label = $pagination_arrow . $label; } @@ -29,7 +34,7 @@ function render_block_core_query_pagination_previous( $attributes, $content, $bl // Check if the pagination is for Query that inherits the global context // and handle appropriately. if ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ) { - $filter_link_attributes = function() use ( $wrapper_attributes ) { + $filter_link_attributes = static function() use ( $wrapper_attributes ) { return $wrapper_attributes; }; diff --git a/src/wp-includes/blocks/query-pagination-previous/block.json b/src/wp-includes/blocks/query-pagination-previous/block.json index 484cefe6bb..d13442f831 100644 --- a/src/wp-includes/blocks/query-pagination-previous/block.json +++ b/src/wp-includes/blocks/query-pagination-previous/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/query-pagination-previous", "title": "Previous Page", "category": "theme", @@ -12,7 +12,7 @@ "type": "string" } }, - "usesContext": [ "queryId", "query", "paginationArrow" ], + "usesContext": [ "queryId", "query", "paginationArrow", "showLabel" ], "supports": { "reusable": false, "html": false, diff --git a/src/wp-includes/blocks/query-pagination/block.json b/src/wp-includes/blocks/query-pagination/block.json index f75f4077d4..e32a9ba9b4 100644 --- a/src/wp-includes/blocks/query-pagination/block.json +++ b/src/wp-includes/blocks/query-pagination/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/query-pagination", "title": "Pagination", "category": "theme", @@ -11,11 +11,16 @@ "paginationArrow": { "type": "string", "default": "none" + }, + "showLabel": { + "type": "boolean", + "default": true } }, "usesContext": [ "queryId", "query" ], "providesContext": { - "paginationArrow": "paginationArrow" + "paginationArrow": "paginationArrow", + "showLabel": "showLabel" }, "supports": { "align": true, @@ -30,7 +35,7 @@ "link": true } }, - "__experimentalLayout": { + "layout": { "allowSwitching": false, "allowInheriting": false, "default": { diff --git a/src/wp-includes/blocks/query-title.php b/src/wp-includes/blocks/query-title.php index d781de3826..29793e5227 100644 --- a/src/wp-includes/blocks/query-title.php +++ b/src/wp-includes/blocks/query-title.php @@ -28,12 +28,9 @@ function render_block_core_query_title( $attributes ) { if ( $is_archive ) { $show_prefix = isset( $attributes['showPrefix'] ) ? $attributes['showPrefix'] : true; if ( ! $show_prefix ) { - $filter_title = function( $title, $original_title ) { - return $original_title; - }; - add_filter( 'get_the_archive_title', $filter_title, 10, 2 ); + add_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 ); $title = get_the_archive_title(); - remove_filter( 'get_the_archive_title', $filter_title, 10, 2 ); + remove_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 ); } else { $title = get_the_archive_title(); } diff --git a/src/wp-includes/blocks/query-title/block.json b/src/wp-includes/blocks/query-title/block.json index 33df75866b..2db349e55d 100644 --- a/src/wp-includes/blocks/query-title/block.json +++ b/src/wp-includes/blocks/query-title/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/query-title", "title": "Query Title", "category": "theme", diff --git a/src/wp-includes/blocks/query/block.json b/src/wp-includes/blocks/query/block.json index 1974761962..e4b78b585b 100644 --- a/src/wp-includes/blocks/query/block.json +++ b/src/wp-includes/blocks/query/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/query", "title": "Query Loop", "category": "theme", @@ -32,12 +32,6 @@ "type": "string", "default": "div" }, - "displayLayout": { - "type": "object", - "default": { - "type": "list" - } - }, "namespace": { "type": "string" } @@ -50,7 +44,7 @@ "supports": { "align": [ "wide", "full" ], "html": false, - "__experimentalLayout": true + "layout": true }, "editorStyle": "wp-block-query-editor" } diff --git a/src/wp-includes/blocks/quote/block.json b/src/wp-includes/blocks/quote/block.json index adb9fddca7..49ee925794 100644 --- a/src/wp-includes/blocks/quote/block.json +++ b/src/wp-includes/blocks/quote/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/quote", "title": "Quote", "category": "text", @@ -29,6 +29,7 @@ }, "supports": { "anchor": true, + "html": false, "__experimentalOnEnter": true, "typography": { "fontSize": true, diff --git a/src/wp-includes/blocks/read-more/block.json b/src/wp-includes/blocks/read-more/block.json index 61b0452c7c..d3386a49d6 100644 --- a/src/wp-includes/blocks/read-more/block.json +++ b/src/wp-includes/blocks/read-more/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/read-more", "title": "Read More", "category": "theme", diff --git a/src/wp-includes/blocks/require-dynamic-blocks.php b/src/wp-includes/blocks/require-dynamic-blocks.php index 1f9bf0a16c..229a0311b8 100644 --- a/src/wp-includes/blocks/require-dynamic-blocks.php +++ b/src/wp-includes/blocks/require-dynamic-blocks.php @@ -21,6 +21,7 @@ require_once ABSPATH . WPINC . '/blocks/comments-pagination-previous.php'; require_once ABSPATH . WPINC . '/blocks/comments-title.php'; require_once ABSPATH . WPINC . '/blocks/cover.php'; require_once ABSPATH . WPINC . '/blocks/file.php'; +require_once ABSPATH . WPINC . '/blocks/footnotes.php'; require_once ABSPATH . WPINC . '/blocks/gallery.php'; require_once ABSPATH . WPINC . '/blocks/heading.php'; require_once ABSPATH . WPINC . '/blocks/home-link.php'; @@ -32,6 +33,7 @@ require_once ABSPATH . WPINC . '/blocks/navigation.php'; require_once ABSPATH . WPINC . '/blocks/navigation-link.php'; require_once ABSPATH . WPINC . '/blocks/navigation-submenu.php'; require_once ABSPATH . WPINC . '/blocks/page-list.php'; +require_once ABSPATH . WPINC . '/blocks/page-list-item.php'; require_once ABSPATH . WPINC . '/blocks/pattern.php'; require_once ABSPATH . WPINC . '/blocks/post-author.php'; require_once ABSPATH . WPINC . '/blocks/post-author-biography.php'; diff --git a/src/wp-includes/blocks/require-static-blocks.php b/src/wp-includes/blocks/require-static-blocks.php index 44009bef5f..69f6d68410 100644 --- a/src/wp-includes/blocks/require-static-blocks.php +++ b/src/wp-includes/blocks/require-static-blocks.php @@ -9,6 +9,7 @@ return array( 'code', 'column', 'columns', + 'details', 'embed', 'freeform', 'group', @@ -19,7 +20,6 @@ return array( 'missing', 'more', 'nextpage', - 'page-list-item', 'paragraph', 'preformatted', 'pullquote', diff --git a/src/wp-includes/blocks/rss/block.json b/src/wp-includes/blocks/rss/block.json index 8a351d877a..2535eda594 100644 --- a/src/wp-includes/blocks/rss/block.json +++ b/src/wp-includes/blocks/rss/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/rss", "title": "RSS", "category": "widgets", diff --git a/src/wp-includes/blocks/search.php b/src/wp-includes/blocks/search.php index c7461a8679..ce76587dbb 100644 --- a/src/wp-includes/blocks/search.php +++ b/src/wp-includes/blocks/search.php @@ -29,11 +29,11 @@ function render_block_core_search( $attributes ) { $classnames = classnames_for_block_core_search( $attributes ); $show_label = ( ! empty( $attributes['showLabel'] ) ) ? true : false; $use_icon_button = ( ! empty( $attributes['buttonUseIcon'] ) ) ? true : false; - $show_input = ( ! empty( $attributes['buttonPosition'] ) && 'button-only' === $attributes['buttonPosition'] ) ? false : true; $show_button = ( ! empty( $attributes['buttonPosition'] ) && 'no-button' === $attributes['buttonPosition'] ) ? false : true; + $button_position = $show_button ? $attributes['buttonPosition'] : null; $query_params = ( ! empty( $attributes['query'] ) ) ? $attributes['query'] : array(); - $input_markup = ''; - $button_markup = ''; + $button_behavior = ( ! empty( $attributes['buttonBehavior'] ) ) ? $attributes['buttonBehavior'] : 'default'; + $button = ''; $query_params_markup = ''; $inline_styles = styles_for_block_core_search( $attributes ); $color_classes = get_color_classes_for_block_core_search( $attributes ); @@ -44,42 +44,37 @@ function render_block_core_search( $attributes ) { $border_color_classes = get_border_color_classes_for_block_core_search( $attributes ); $label_inner_html = empty( $attributes['label'] ) ? __( 'Search' ) : wp_kses_post( $attributes['label'] ); - - $label_markup = sprintf( - '', - esc_attr( $input_id ), - $label_inner_html - ); - if ( $show_label && ! empty( $attributes['label'] ) ) { - $label_classes = array( 'wp-block-search__label' ); - if ( ! empty( $typography_classes ) ) { - $label_classes[] = $typography_classes; + $label = new WP_HTML_Tag_Processor( sprintf( '', $inline_styles['label'], $label_inner_html ) ); + if ( $label->next_tag() ) { + $label->set_attribute( 'for', $input_id ); + $label->add_class( 'wp-block-search__label' ); + if ( $show_label && ! empty( $attributes['label'] ) ) { + if ( ! empty( $typography_classes ) ) { + $label->add_class( $typography_classes ); + } + } else { + $label->add_class( 'screen-reader-text' ); } - $label_markup = sprintf( - '', - esc_attr( $input_id ), - esc_attr( implode( ' ', $label_classes ) ), - $inline_styles['label'], - $label_inner_html - ); } - if ( $show_input ) { - $input_classes = array( 'wp-block-search__input' ); - if ( ! $is_button_inside && ! empty( $border_color_classes ) ) { - $input_classes[] = $border_color_classes; + $input = new WP_HTML_Tag_Processor( sprintf( '', $inline_styles['input'] ) ); + $input_classes = array( 'wp-block-search__input' ); + if ( ! $is_button_inside && ! empty( $border_color_classes ) ) { + $input_classes[] = $border_color_classes; + } + if ( ! empty( $typography_classes ) ) { + $input_classes[] = $typography_classes; + } + if ( $input->next_tag() ) { + $input->add_class( implode( ' ', $input_classes ) ); + $input->set_attribute( 'id', $input_id ); + $input->set_attribute( 'value', get_search_query() ); + $input->set_attribute( 'placeholder', $attributes['placeholder'] ); + if ( 'button-only' === $button_position && 'expand-searchfield' === $button_behavior ) { + $input->set_attribute( 'aria-hidden', 'true' ); + $input->set_attribute( 'tabindex', '-1' ); + wp_enqueue_script( 'wp-block--search-view', plugins_url( 'search/view.min.js', __FILE__ ) ); } - if ( ! empty( $typography_classes ) ) { - $input_classes[] = $typography_classes; - } - $input_markup = sprintf( - '', - $input_id, - esc_attr( implode( ' ', $input_classes ) ), - get_search_query(), - esc_attr( $attributes['placeholder'] ), - $inline_styles['input'] - ); } if ( count( $query_params ) > 0 ) { @@ -101,7 +96,6 @@ function render_block_core_search( $attributes ) { if ( ! empty( $typography_classes ) ) { $button_classes[] = $typography_classes; } - $aria_label = ''; if ( ! $is_button_inside && ! empty( $border_color_classes ) ) { $button_classes[] = $border_color_classes; @@ -111,24 +105,27 @@ function render_block_core_search( $attributes ) { $button_internal_markup = wp_kses_post( $attributes['buttonText'] ); } } else { - $aria_label = sprintf( 'aria-label="%s"', esc_attr( wp_strip_all_tags( $attributes['buttonText'] ) ) ); - $button_classes[] = 'has-icon'; - + $button_classes[] = 'has-icon'; $button_internal_markup = ' - + '; } // Include the button element class. $button_classes[] = wp_theme_get_element_class_name( 'button' ); - $button_markup = sprintf( - '', - esc_attr( implode( ' ', $button_classes ) ), - $inline_styles['button'], - $aria_label, - $button_internal_markup - ); + $button = new WP_HTML_Tag_Processor( sprintf( '', $inline_styles['button'], $button_internal_markup ) ); + + if ( $button->next_tag() ) { + $button->add_class( implode( ' ', $button_classes ) ); + if ( 'expand-searchfield' === $attributes['buttonBehavior'] && 'button-only' === $attributes['buttonPosition'] ) { + $button->set_attribute( 'aria-label', __( 'Expand search field' ) ); + $button->set_attribute( 'aria-controls', 'wp-block-search__input-' . $input_id ); + $button->set_attribute( 'aria-expanded', 'false' ); + } else { + $button->set_attribute( 'aria-label', wp_strip_all_tags( $attributes['buttonText'] ) ); + } + } } $field_markup_classes = $is_button_inside ? $border_color_classes : ''; @@ -136,7 +133,7 @@ function render_block_core_search( $attributes ) { '
      %s
      ', esc_attr( $field_markup_classes ), $inline_styles['wrapper'], - $input_markup . $query_params_markup . $button_markup + $input . $query_params_markup . $button ); $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classnames ) @@ -146,7 +143,7 @@ function render_block_core_search( $attributes ) { '
      %s
      ', esc_url( home_url( '/' ) ), $wrapper_attributes, - $label_markup . $field_markup + $label . $field_markup ); } @@ -188,6 +185,9 @@ function classnames_for_block_core_search( $attributes ) { if ( 'button-only' === $attributes['buttonPosition'] ) { $classnames[] = 'wp-block-search__button-only'; + if ( ! empty( $attributes['buttonBehavior'] ) && 'expand-searchfield' === $attributes['buttonBehavior'] ) { + $classnames[] = 'wp-block-search__button-behavior-expand wp-block-search__searchfield-hidden'; + } } } @@ -294,10 +294,9 @@ function styles_for_block_core_search( $attributes ) { $show_label = ( isset( $attributes['showLabel'] ) ) && false !== $attributes['showLabel']; // Add width styles. - $has_width = ! empty( $attributes['width'] ) && ! empty( $attributes['widthUnit'] ); - $button_only = ! empty( $attributes['buttonPosition'] ) && 'button-only' === $attributes['buttonPosition']; + $has_width = ! empty( $attributes['width'] ) && ! empty( $attributes['widthUnit'] ); - if ( $has_width && ! $button_only ) { + if ( $has_width ) { $wrapper_styles[] = sprintf( 'width: %d%s;', esc_attr( $attributes['width'] ), diff --git a/src/wp-includes/blocks/search/block.json b/src/wp-includes/blocks/search/block.json index fbd0fa874c..1a23590699 100644 --- a/src/wp-includes/blocks/search/block.json +++ b/src/wp-includes/blocks/search/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/search", "title": "Search", "category": "widgets", @@ -42,6 +42,14 @@ "query": { "type": "object", "default": {} + }, + "buttonBehavior": { + "type": "string", + "default": "expand-searchfield" + }, + "isSearchFieldHidden": { + "type": "boolean", + "default": false } }, "supports": { diff --git a/src/wp-includes/blocks/separator/block.json b/src/wp-includes/blocks/separator/block.json index bee358d208..970f6b5cbb 100644 --- a/src/wp-includes/blocks/separator/block.json +++ b/src/wp-includes/blocks/separator/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/separator", "title": "Separator", "category": "design", diff --git a/src/wp-includes/blocks/shortcode/block.json b/src/wp-includes/blocks/shortcode/block.json index 5b36d141dd..22d838a719 100644 --- a/src/wp-includes/blocks/shortcode/block.json +++ b/src/wp-includes/blocks/shortcode/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/shortcode", "title": "Shortcode", "category": "widgets", @@ -9,7 +9,7 @@ "attributes": { "text": { "type": "string", - "source": "html" + "source": "raw" } }, "supports": { diff --git a/src/wp-includes/blocks/site-logo.php b/src/wp-includes/blocks/site-logo.php index 35e199d59d..f1819fcaac 100644 --- a/src/wp-includes/blocks/site-logo.php +++ b/src/wp-includes/blocks/site-logo.php @@ -13,7 +13,7 @@ * @return string The render. */ function render_block_core_site_logo( $attributes ) { - $adjust_width_height_filter = function ( $image ) use ( $attributes ) { + $adjust_width_height_filter = static function ( $image ) use ( $attributes ) { if ( empty( $attributes['width'] ) || empty( $image ) || ! $image[1] || ! $image[2] ) { return $image; } @@ -39,8 +39,13 @@ function render_block_core_site_logo( $attributes ) { if ( $attributes['isLink'] && '_blank' === $attributes['linkTarget'] ) { // Add the link target after the rel="home". // Add an aria-label for informing that the page opens in a new tab. - $aria_label = 'aria-label="' . esc_attr__( '(Home link, opens in a new tab)' ) . '"'; - $custom_logo = str_replace( 'rel="home"', 'rel="home" target="' . esc_attr( $attributes['linkTarget'] ) . '"' . $aria_label, $custom_logo ); + $processor = new WP_HTML_Tag_Processor( $custom_logo ); + $processor->next_tag( 'a' ); + if ( 'home' === $processor->get_attribute( 'rel' ) ) { + $processor->set_attribute( 'aria-label', __( '(Home link, opens in a new tab)' ) ); + $processor->set_attribute( 'target', $attributes['linkTarget'] ); + } + $custom_logo = $processor->get_updated_html(); } $classnames = array(); diff --git a/src/wp-includes/blocks/site-logo/block.json b/src/wp-includes/blocks/site-logo/block.json index f7efcb7215..747f1ab94a 100644 --- a/src/wp-includes/blocks/site-logo/block.json +++ b/src/wp-includes/blocks/site-logo/block.json @@ -1,10 +1,10 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/site-logo", "title": "Site Logo", "category": "theme", - "description": "Display a graphic to represent this site. Update the block, and the changes apply everywhere it’s used. This is different than the site icon, which is the smaller image visible in your dashboard, browser tabs, etc used to help others recognize this site.", + "description": "Display an image to represent this site. Update this block and the changes apply everywhere.", "textdomain": "default", "attributes": { "width": { diff --git a/src/wp-includes/blocks/site-tagline/block.json b/src/wp-includes/blocks/site-tagline/block.json index 230bdd5fef..7382c084ee 100644 --- a/src/wp-includes/blocks/site-tagline/block.json +++ b/src/wp-includes/blocks/site-tagline/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/site-tagline", "title": "Site Tagline", "category": "theme", diff --git a/src/wp-includes/blocks/site-title/block.json b/src/wp-includes/blocks/site-title/block.json index aeac5ee574..2c37258acb 100644 --- a/src/wp-includes/blocks/site-title/block.json +++ b/src/wp-includes/blocks/site-title/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/site-title", "title": "Site Title", "category": "theme", diff --git a/src/wp-includes/blocks/social-link.php b/src/wp-includes/blocks/social-link.php index 7e669bf56d..51ed9374c9 100644 --- a/src/wp-includes/blocks/social-link.php +++ b/src/wp-includes/blocks/social-link.php @@ -47,7 +47,7 @@ function render_block_core_social_link( $attributes, $content, $block ) { $icon = block_core_social_link_get_icon( $service ); $wrapper_attributes = get_block_wrapper_attributes( array( - 'class' => 'wp-social-link wp-social-link-' . $service, + 'class' => 'wp-social-link wp-social-link-' . $service . block_core_social_link_get_color_classes( $block->context ), 'style' => block_core_social_link_get_color_styles( $block->context ), ) ); @@ -59,15 +59,15 @@ function render_block_core_social_link( $attributes, $content, $block ) { $link .= esc_html( $label ); $link .= ''; - $w = new WP_HTML_Tag_Processor( $link ); - $w->next_tag( 'a' ); + $processor = new WP_HTML_Tag_Processor( $link ); + $processor->next_tag( 'a' ); if ( $open_in_new_tab ) { - $w->set_attribute( 'rel', esc_attr( $rel ) . ' noopener nofollow' ); - $w->set_attribute( 'target', '_blank' ); + $processor->set_attribute( 'rel', esc_attr( $rel ) . ' noopener nofollow' ); + $processor->set_attribute( 'target', '_blank' ); } elseif ( '' !== $rel ) { - $w->set_attribute( 'rel', esc_attr( $rel ) ); + $processor->set_attribute( 'rel', esc_attr( $rel ) ); } - return $w; + return $processor->get_updated_html(); } /** @@ -144,7 +144,7 @@ function block_core_social_link_services( $service = '', $field = '' ) { ), 'chain' => array( 'name' => 'Link', - 'icon' => '', + 'icon' => '', ), 'codepen' => array( 'name' => 'CodePen', @@ -208,7 +208,7 @@ function block_core_social_link_services( $service = '', $field = '' ) { ), 'mail' => array( 'name' => 'Mail', - 'icon' => '', + 'icon' => '', ), 'mastodon' => array( 'name' => 'Mastodon', @@ -337,3 +337,24 @@ function block_core_social_link_get_color_styles( $context ) { return implode( '', $styles ); } + +/** + * Returns CSS classes for icon and icon background colors. + * + * @param array $context Block context passed to Social Sharing Link. + * + * @return string CSS classes for link's icon and background colors. + */ +function block_core_social_link_get_color_classes( $context ) { + $classes = array(); + + if ( array_key_exists( 'iconColor', $context ) ) { + $classes[] = 'has-' . $context['iconColor'] . '-color'; + } + + if ( array_key_exists( 'iconBackgroundColor', $context ) ) { + $classes[] = 'has-' . $context['iconBackgroundColor'] . '-background-color'; + } + + return ' ' . implode( ' ', $classes ); +} diff --git a/src/wp-includes/blocks/social-link/block.json b/src/wp-includes/blocks/social-link/block.json index 5f64b7dcf7..50e95efedb 100644 --- a/src/wp-includes/blocks/social-link/block.json +++ b/src/wp-includes/blocks/social-link/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/social-link", "title": "Social Icon", "category": "widgets", @@ -24,7 +24,9 @@ "usesContext": [ "openInNewTab", "showLabels", + "iconColor", "iconColorValue", + "iconBackgroundColor", "iconBackgroundColorValue" ], "supports": { diff --git a/src/wp-includes/blocks/social-links/block.json b/src/wp-includes/blocks/social-links/block.json index a7707cf195..064b077b5e 100644 --- a/src/wp-includes/blocks/social-links/block.json +++ b/src/wp-includes/blocks/social-links/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/social-links", "title": "Social Icons", "category": "widgets", @@ -41,14 +41,16 @@ "providesContext": { "openInNewTab": "openInNewTab", "showLabels": "showLabels", + "iconColor": "iconColor", "iconColorValue": "iconColorValue", + "iconBackgroundColor": "iconBackgroundColor", "iconBackgroundColorValue": "iconBackgroundColorValue" }, "supports": { "align": [ "left", "center", "right" ], "anchor": true, "__experimentalExposeControlsToChildren": true, - "__experimentalLayout": { + "layout": { "allowSwitching": false, "allowInheriting": false, "allowVerticalAlignment": false, diff --git a/src/wp-includes/blocks/spacer/block.json b/src/wp-includes/blocks/spacer/block.json index 021ff9f4a2..a9da8d537f 100644 --- a/src/wp-includes/blocks/spacer/block.json +++ b/src/wp-includes/blocks/spacer/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/spacer", "title": "Spacer", "category": "design", diff --git a/src/wp-includes/blocks/table/block.json b/src/wp-includes/blocks/table/block.json index adac1e9c21..54e4bc26ca 100644 --- a/src/wp-includes/blocks/table/block.json +++ b/src/wp-includes/blocks/table/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/table", "title": "Table", "category": "text", diff --git a/src/wp-includes/blocks/tag-cloud/block.json b/src/wp-includes/blocks/tag-cloud/block.json index c722227398..9481dc9456 100644 --- a/src/wp-includes/blocks/tag-cloud/block.json +++ b/src/wp-includes/blocks/tag-cloud/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/tag-cloud", "title": "Tag Cloud", "category": "widgets", diff --git a/src/wp-includes/blocks/template-part.php b/src/wp-includes/blocks/template-part.php index 6f41f2a793..84e3a985ec 100644 --- a/src/wp-includes/blocks/template-part.php +++ b/src/wp-includes/blocks/template-part.php @@ -18,27 +18,29 @@ function render_block_core_template_part( $attributes ) { $template_part_id = null; $content = null; $area = WP_TEMPLATE_PART_AREA_UNCATEGORIZED; + $stylesheet = get_stylesheet(); if ( isset( $attributes['slug'] ) && isset( $attributes['theme'] ) && - get_stylesheet() === $attributes['theme'] + $stylesheet === $attributes['theme'] ) { $template_part_id = $attributes['theme'] . '//' . $attributes['slug']; $template_part_query = new WP_Query( array( - 'post_type' => 'wp_template_part', - 'post_status' => 'publish', - 'post_name__in' => array( $attributes['slug'] ), - 'tax_query' => array( + 'post_type' => 'wp_template_part', + 'post_status' => 'publish', + 'post_name__in' => array( $attributes['slug'] ), + 'tax_query' => array( array( 'taxonomy' => 'wp_theme', 'field' => 'name', 'terms' => $attributes['theme'], ), ), - 'posts_per_page' => 1, - 'no_found_rows' => true, + 'posts_per_page' => 1, + 'no_found_rows' => true, + 'lazy_load_term_meta' => false, // Do not lazy load term meta, as template parts only have one term. ) ); $template_part_post = $template_part_query->have_posts() ? $template_part_query->next_post() : null; @@ -64,16 +66,22 @@ function render_block_core_template_part( $attributes ) { } else { // Else, if the template part was provided by the active theme, // render the corresponding file content. - $parent_theme_folders = get_block_theme_folders( get_template() ); - $child_theme_folders = get_block_theme_folders( get_stylesheet() ); - $child_theme_part_file_path = get_theme_file_path( '/' . $child_theme_folders['wp_template_part'] . '/' . $attributes['slug'] . '.html' ); - $parent_theme_part_file_path = get_theme_file_path( '/' . $parent_theme_folders['wp_template_part'] . '/' . $attributes['slug'] . '.html' ); - $template_part_file_path = 0 === validate_file( $attributes['slug'] ) && file_exists( $child_theme_part_file_path ) ? $child_theme_part_file_path : $parent_theme_part_file_path; - if ( 0 === validate_file( $attributes['slug'] ) && file_exists( $template_part_file_path ) ) { - $content = file_get_contents( $template_part_file_path ); - $content = is_string( $content ) && '' !== $content - ? _inject_theme_attribute_in_block_template_content( $content ) - : ''; + if ( 0 === validate_file( $attributes['slug'] ) ) { + $themes = array( $stylesheet ); + $template = get_template(); + if ( $stylesheet !== $template ) { + $themes[] = $template; + } + + foreach ( $themes as $theme ) { + $theme_folders = get_block_theme_folders( $theme ); + $template_part_file_path = get_theme_file_path( '/' . $theme_folders['wp_template_part'] . '/' . $attributes['slug'] . '.html' ); + if ( file_exists( $template_part_file_path ) ) { + $content = (string) file_get_contents( $template_part_file_path ); + $content = '' !== $content ? _inject_theme_attribute_in_block_template_content( $content ) : ''; + break; + } + } } if ( '' !== $content && null !== $content ) { @@ -172,21 +180,34 @@ function render_block_core_template_part( $attributes ) { /** * Returns an array of area variation objects for the template part block. * + * @param array $instance_variations The variations for instances. + * * @return array Array containing the block variation objects. */ -function build_template_part_block_area_variations() { +function build_template_part_block_area_variations( $instance_variations ) { $variations = array(); $defined_areas = get_allowed_block_template_part_areas(); + foreach ( $defined_areas as $area ) { if ( 'uncategorized' !== $area['area'] ) { + $has_instance_for_area = false; + foreach ( $instance_variations as $variation ) { + if ( $variation['attributes']['area'] === $area['area'] ) { + $has_instance_for_area = true; + break; + } + } + + $scope = $has_instance_for_area ? array() : array( 'inserter' ); + $variations[] = array( - 'name' => $area['area'], + 'name' => 'area_' . $area['area'], 'title' => $area['label'], 'description' => $area['description'], 'attributes' => array( 'area' => $area['area'], ), - 'scope' => array( 'inserter' ), + 'scope' => $scope, 'icon' => $area['icon'], ); } @@ -222,7 +243,7 @@ function build_template_part_block_instance_variations() { foreach ( $template_parts as $template_part ) { $variations[] = array( - 'name' => sanitize_title( $template_part->slug ), + 'name' => 'instance_' . sanitize_title( $template_part->slug ), 'title' => $template_part->title, // If there's no description for the template part don't show the // block description. This is a bit hacky, but prevent the fallback @@ -254,7 +275,9 @@ function build_template_part_block_instance_variations() { * @return array Array containing the block variation objects. */ function build_template_part_block_variations() { - return array_merge( build_template_part_block_area_variations(), build_template_part_block_instance_variations() ); + $instance_variations = build_template_part_block_instance_variations(); + $area_variations = build_template_part_block_area_variations( $instance_variations ); + return array_merge( $area_variations, $instance_variations ); } /** diff --git a/src/wp-includes/blocks/template-part/block.json b/src/wp-includes/blocks/template-part/block.json index 3801eee941..9fe431150a 100644 --- a/src/wp-includes/blocks/template-part/block.json +++ b/src/wp-includes/blocks/template-part/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/template-part", "title": "Template Part", "category": "theme", diff --git a/src/wp-includes/blocks/term-description/block.json b/src/wp-includes/blocks/term-description/block.json index 66eb9348a4..fc91a4aff4 100644 --- a/src/wp-includes/blocks/term-description/block.json +++ b/src/wp-includes/blocks/term-description/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/term-description", "title": "Term Description", "category": "theme", @@ -38,6 +38,5 @@ "fontSize": true } } - }, - "editorStyle": "wp-block-term-description-editor" + } } diff --git a/src/wp-includes/blocks/text-columns/block.json b/src/wp-includes/blocks/text-columns/block.json index 84d5ccece0..3af169fadb 100644 --- a/src/wp-includes/blocks/text-columns/block.json +++ b/src/wp-includes/blocks/text-columns/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/text-columns", "title": "Text Columns (deprecated)", "icon": "columns", diff --git a/src/wp-includes/blocks/verse/block.json b/src/wp-includes/blocks/verse/block.json index dc0772cc9a..5fabf49ade 100644 --- a/src/wp-includes/blocks/verse/block.json +++ b/src/wp-includes/blocks/verse/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/verse", "title": "Verse", "category": "text", @@ -47,6 +47,12 @@ "spacing": { "margin": true, "padding": true + }, + "__experimentalBorder": { + "radius": true, + "width": true, + "color": true, + "style": true } }, "style": "wp-block-verse", diff --git a/src/wp-includes/blocks/video/block.json b/src/wp-includes/blocks/video/block.json index 6f53246cc8..df2d207537 100644 --- a/src/wp-includes/blocks/video/block.json +++ b/src/wp-includes/blocks/video/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "core/video", "title": "Video", "category": "media", diff --git a/src/wp-includes/blocks/widget-group/block.json b/src/wp-includes/blocks/widget-group/block.json index ec48d90eda..c29e811554 100644 --- a/src/wp-includes/blocks/widget-group/block.json +++ b/src/wp-includes/blocks/widget-group/block.json @@ -1,5 +1,5 @@ { - "apiVersion": 2, + "apiVersion": 3, "name": "core/widget-group", "category": "widgets", "attributes": { diff --git a/src/wp-includes/load.php b/src/wp-includes/load.php index c0398cb4f9..fb5f98d261 100644 --- a/src/wp-includes/load.php +++ b/src/wp-includes/load.php @@ -73,12 +73,14 @@ function wp_fix_server_vars() { } // Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests. - if ( isset( $_SERVER['SCRIPT_FILENAME'] ) && str_ends_with( $_SERVER['SCRIPT_FILENAME'], 'php.cgi' ) ) { + if ( isset( $_SERVER['SCRIPT_FILENAME'] ) + && ( strpos( $_SERVER['SCRIPT_FILENAME'], 'php.cgi' ) === strlen( $_SERVER['SCRIPT_FILENAME'] ) - 7 ) + ) { $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED']; } // Fix for Dreamhost and other PHP as CGI hosts. - if ( isset( $_SERVER['SCRIPT_NAME'] ) && str_contains( $_SERVER['SCRIPT_NAME'], 'php.cgi' ) ) { + if ( isset( $_SERVER['SCRIPT_NAME'] ) && ( strpos( $_SERVER['SCRIPT_NAME'], 'php.cgi' ) !== false ) ) { unset( $_SERVER['PATH_INFO'] ); } @@ -877,7 +879,7 @@ function wp_get_mu_plugins() { return $mu_plugins; } while ( ( $plugin = readdir( $dh ) ) !== false ) { - if ( str_ends_with( $plugin, '.php' ) ) { + if ( '.php' === substr( $plugin, -4 ) ) { $mu_plugins[] = WPMU_PLUGIN_DIR . '/' . $plugin; } } @@ -919,7 +921,7 @@ function wp_get_active_and_valid_plugins() { foreach ( $active_plugins as $plugin ) { if ( ! validate_file( $plugin ) // $plugin must validate as file. - && str_ends_with( $plugin, '.php' ) // $plugin must end with '.php'. + && '.php' === substr( $plugin, -4 ) // $plugin must end with '.php'. && file_exists( WP_PLUGIN_DIR . '/' . $plugin ) // $plugin must exist. // Not already included as a network plugin. && ( ! $network_plugins || ! in_array( WP_PLUGIN_DIR . '/' . $plugin, $network_plugins, true ) ) @@ -1549,11 +1551,11 @@ function wp_convert_hr_to_bytes( $value ) { $value = strtolower( trim( $value ) ); $bytes = (int) $value; - if ( str_contains( $value, 'g' ) ) { + if ( false !== strpos( $value, 'g' ) ) { $bytes *= GB_IN_BYTES; - } elseif ( str_contains( $value, 'm' ) ) { + } elseif ( false !== strpos( $value, 'm' ) ) { $bytes *= MB_IN_BYTES; - } elseif ( str_contains( $value, 'k' ) ) { + } elseif ( false !== strpos( $value, 'k' ) ) { $bytes *= KB_IN_BYTES; } @@ -1832,7 +1834,7 @@ function wp_is_xml_request() { if ( isset( $_SERVER['HTTP_ACCEPT'] ) ) { foreach ( $accepted as $type ) { - if ( str_contains( $_SERVER['HTTP_ACCEPT'], $type ) ) { + if ( false !== strpos( $_SERVER['HTTP_ACCEPT'], $type ) ) { return true; } } diff --git a/tests/phpunit/data/blocks/fixtures/core__cover.html b/tests/phpunit/data/blocks/fixtures/core__cover.html index ae26d922c2..34e8b7ad5e 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover.html +++ b/tests/phpunit/data/blocks/fixtures/core__cover.html @@ -1,5 +1,5 @@ -
      +

      Guten Berg!

      diff --git a/tests/phpunit/data/blocks/fixtures/core__cover.json b/tests/phpunit/data/blocks/fixtures/core__cover.json index dea09d92c1..6b3ec9c1c9 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover.json +++ b/tests/phpunit/data/blocks/fixtures/core__cover.json @@ -12,6 +12,6 @@ "backgroundType": "image" }, "innerBlocks": [], - "originalContent": "
      \n

      Guten Berg!

      \n
      " + "originalContent": "
      \n

      Guten Berg!

      \n
      " } ] diff --git a/tests/phpunit/data/blocks/fixtures/core__cover.parsed.json b/tests/phpunit/data/blocks/fixtures/core__cover.parsed.json index 14f37b6170..e4c901f253 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover.parsed.json +++ b/tests/phpunit/data/blocks/fixtures/core__cover.parsed.json @@ -6,9 +6,9 @@ "dimRatio": 40 }, "innerBlocks": [], - "innerHTML": "\n
      \n

      Guten Berg!

      \n
      \n", + "innerHTML": "\n
      \n

      Guten Berg!

      \n
      \n", "innerContent": [ - "\n
      \n

      Guten Berg!

      \n
      \n" + "\n
      \n

      Guten Berg!

      \n
      \n" ] }, { diff --git a/tests/phpunit/data/blocks/fixtures/core__cover.server.html b/tests/phpunit/data/blocks/fixtures/core__cover.server.html index 726c24a585..ba293cb7a9 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover.server.html +++ b/tests/phpunit/data/blocks/fixtures/core__cover.server.html @@ -1,5 +1,5 @@ -
      +

      Guten Berg!

      diff --git a/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.html b/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.html index 2a3530954f..5d3456e7c9 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.html +++ b/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.html @@ -1,5 +1,5 @@ -
      +

      Guten Berg!

      diff --git a/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.json b/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.json index 08f0de4eb4..ac81685188 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.json +++ b/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.json @@ -13,6 +13,6 @@ "backgroundType": "video" }, "innerBlocks": [], - "originalContent": "
      \n\t\n\t

      Guten Berg!

      \n
      " + "originalContent": "
      \n\t\n\t

      Guten Berg!

      \n
      " } ] diff --git a/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.parsed.json b/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.parsed.json index a2a3ccc94a..71700c25a9 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.parsed.json +++ b/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.parsed.json @@ -8,9 +8,9 @@ "backgroundType": "video" }, "innerBlocks": [], - "innerHTML": "\n
      \n\t\n\t

      Guten Berg!

      \n
      \n", + "innerHTML": "\n
      \n\t\n\t

      Guten Berg!

      \n
      \n", "innerContent": [ - "\n
      \n\t\n\t

      Guten Berg!

      \n
      \n" + "\n
      \n\t\n\t

      Guten Berg!

      \n
      \n" ] }, { diff --git a/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.server.html b/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.server.html index d8e1e40cac..aa2f0267ac 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.server.html +++ b/tests/phpunit/data/blocks/fixtures/core__cover__video-overlay.server.html @@ -1,5 +1,5 @@ -
      +

      Guten Berg!

      diff --git a/tests/phpunit/data/blocks/fixtures/core__cover__video.html b/tests/phpunit/data/blocks/fixtures/core__cover__video.html index 0ab2fd73cc..5408bbe933 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover__video.html +++ b/tests/phpunit/data/blocks/fixtures/core__cover__video.html @@ -1,5 +1,5 @@ -
      +

      Guten Berg!

      diff --git a/tests/phpunit/data/blocks/fixtures/core__cover__video.json b/tests/phpunit/data/blocks/fixtures/core__cover__video.json index 1fa4d25d66..673cd3b725 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover__video.json +++ b/tests/phpunit/data/blocks/fixtures/core__cover__video.json @@ -12,6 +12,6 @@ "backgroundType": "video" }, "innerBlocks": [], - "originalContent": "
      \n\t\n\t

      Guten Berg!

      \n
      " + "originalContent": "
      \n\t\n\t

      Guten Berg!

      \n
      " } ] diff --git a/tests/phpunit/data/blocks/fixtures/core__cover__video.parsed.json b/tests/phpunit/data/blocks/fixtures/core__cover__video.parsed.json index a864b5fea3..ad48e4fde4 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover__video.parsed.json +++ b/tests/phpunit/data/blocks/fixtures/core__cover__video.parsed.json @@ -7,9 +7,9 @@ "backgroundType": "video" }, "innerBlocks": [], - "innerHTML": "\n
      \n\t\n\t

      Guten Berg!

      \n
      \n", + "innerHTML": "\n
      \n\t\n\t

      Guten Berg!

      \n
      \n", "innerContent": [ - "\n
      \n\t\n\t

      Guten Berg!

      \n
      \n" + "\n
      \n\t\n\t

      Guten Berg!

      \n
      \n" ] }, { diff --git a/tests/phpunit/data/blocks/fixtures/core__cover__video.server.html b/tests/phpunit/data/blocks/fixtures/core__cover__video.server.html index 50a924c054..20afe15696 100644 --- a/tests/phpunit/data/blocks/fixtures/core__cover__video.server.html +++ b/tests/phpunit/data/blocks/fixtures/core__cover__video.server.html @@ -1,5 +1,5 @@ -
      +

      Guten Berg!

      diff --git a/tests/phpunit/data/blocks/fixtures/core__gallery__deprecated-7.server.html b/tests/phpunit/data/blocks/fixtures/core__gallery__deprecated-7.server.html index 69df4fd1bc..b522543d92 100644 --- a/tests/phpunit/data/blocks/fixtures/core__gallery__deprecated-7.server.html +++ b/tests/phpunit/data/blocks/fixtures/core__gallery__deprecated-7.server.html @@ -1,15 +1,15 @@ diff --git a/tests/phpunit/includes/unregister-blocks-hooks.php b/tests/phpunit/includes/unregister-blocks-hooks.php index 5edeba1445..164c9c98db 100644 --- a/tests/phpunit/includes/unregister-blocks-hooks.php +++ b/tests/phpunit/includes/unregister-blocks-hooks.php @@ -20,6 +20,7 @@ remove_action( 'init', 'register_block_core_comments_pagination_previous' ); remove_action( 'init', 'register_block_core_comments_title' ); remove_action( 'init', 'register_block_core_cover' ); remove_action( 'init', 'register_block_core_file' ); +remove_action( 'init', 'register_block_core_footnotes' ); remove_action( 'init', 'register_block_core_gallery' ); remove_action( 'init', 'register_block_core_heading' ); remove_action( 'init', 'register_block_core_home_link' ); @@ -31,6 +32,7 @@ remove_action( 'init', 'register_block_core_navigation' ); remove_action( 'init', 'register_block_core_navigation_link' ); remove_action( 'init', 'register_block_core_navigation_submenu' ); remove_action( 'init', 'register_block_core_page_list' ); +remove_action( 'init', 'register_block_core_page_list_item' ); remove_action( 'init', 'register_block_core_pattern' ); remove_action( 'init', 'register_block_core_post_author' ); remove_action( 'init', 'register_block_core_post_author_biography' ); diff --git a/tests/phpunit/tests/media.php b/tests/phpunit/tests/media.php index d4ddad3e97..2fcbe2264f 100644 --- a/tests/phpunit/tests/media.php +++ b/tests/phpunit/tests/media.php @@ -4040,6 +4040,7 @@ EOF; 'post-thumbnail', array( 'loading' => false, + 'style' => 'object-fit:cover;', 'fetchpriority' => 'high', ) ) . ''; diff --git a/tests/phpunit/tests/theme/wpThemeJson.php b/tests/phpunit/tests/theme/wpThemeJson.php index 3bda349254..ae6ea02e9c 100644 --- a/tests/phpunit/tests/theme/wpThemeJson.php +++ b/tests/phpunit/tests/theme/wpThemeJson.php @@ -416,7 +416,7 @@ class Tests_Theme_wpThemeJson extends WP_UnitTestCase { ) ); - $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-group{border-radius: 10px;margin: 1em;padding: 24px;}.wp-block-image{margin-bottom: 30px;padding-top: 15px;}.wp-block-image img, .wp-block-image .wp-block-image__crop-area{border-top-left-radius: 10px;border-bottom-right-radius: 1em;}'; + $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-group{border-radius: 10px;margin: 1em;padding: 24px;}.wp-block-image{margin-bottom: 30px;padding-top: 15px;}.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder{border-top-left-radius: 10px;border-bottom-right-radius: 1em;}'; $this->assertSame( $styles, $theme_json->get_stylesheet() ); $this->assertSame( $styles, $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -637,7 +637,7 @@ class Tests_Theme_wpThemeJson extends WP_UnitTestCase { ); $variables = "body{--wp--preset--color--grey: grey;--wp--preset--gradient--custom-gradient: linear-gradient(135deg,rgba(0,0,0) 0%,rgb(0,0,0) 100%);--wp--preset--duotone--custom-duotone: url('#wp-duotone-custom-duotone');--wp--preset--font-family--small: 14px;--wp--preset--font-family--big: 41px;}.wp-block-group{--wp--custom--base-font: 16;--wp--custom--line-height--small: 1.2;--wp--custom--line-height--medium: 1.4;--wp--custom--line-height--large: 1.8;}"; - $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}body{color: var(--wp--preset--color--grey);}a:where(:not(.wp-element-button)){background-color: #333;color: #111;}.wp-element-button, .wp-block-button__link{box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.66);}.wp-block-group{background: var(--wp--preset--gradient--custom-gradient);border-radius: 10px;padding: 24px;}.wp-block-group a:where(:not(.wp-element-button)){color: #111;}.wp-block-heading{color: #123456;}.wp-block-heading a:where(:not(.wp-element-button)){background-color: #333;color: #111;font-size: 60px;}.wp-block-post-date{color: #123456;}.wp-block-post-date a:where(:not(.wp-element-button)){background-color: #777;color: #555;}.wp-block-post-excerpt{column-count: 2;}.wp-block-image{margin-bottom: 30px;}.wp-block-image img, .wp-block-image .components-placeholder{filter: var(--wp--preset--duotone--custom-duotone);}.wp-block-image img, .wp-block-image .wp-block-image__crop-area{border-top-left-radius: 10px;border-bottom-right-radius: 1em;}'; + $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}body{color: var(--wp--preset--color--grey);}a:where(:not(.wp-element-button)){background-color: #333;color: #111;}.wp-element-button, .wp-block-button__link{box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.66);}.wp-block-group{background: var(--wp--preset--gradient--custom-gradient);border-radius: 10px;padding: 24px;}.wp-block-group a:where(:not(.wp-element-button)){color: #111;}.wp-block-heading{color: #123456;}.wp-block-heading a:where(:not(.wp-element-button)){background-color: #333;color: #111;font-size: 60px;}.wp-block-post-date{color: #123456;}.wp-block-post-date a:where(:not(.wp-element-button)){background-color: #777;color: #555;}.wp-block-post-excerpt{column-count: 2;}.wp-block-image{margin-bottom: 30px;}.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder{border-top-left-radius: 10px;border-bottom-right-radius: 1em;}.wp-block-image img, .wp-block-image .components-placeholder{filter: var(--wp--preset--duotone--custom-duotone);}'; $presets = '.has-grey-color{color: var(--wp--preset--color--grey) !important;}.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}.has-custom-gradient-gradient-background{background: var(--wp--preset--gradient--custom-gradient) !important;}.has-small-font-family{font-family: var(--wp--preset--font-family--small) !important;}.has-big-font-family{font-family: var(--wp--preset--font-family--big) !important;}'; $all = $variables . $styles . $presets; $this->assertSame( $all, $theme_json->get_stylesheet() );