diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000000..5034a3299ac90
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,7 @@
+/src/wp-includes/assets/script-loader-packages.php -text binary diff=generated
+/src/wp-includes/assets/script-modules-packages.php -text binary diff=generated
+/src/wp-includes/assets/script-loader-packages.min.php -text binary diff=generated
+/src/wp-includes/assets/script-modules-packages.min.php -text binary diff=generated
+/src/wp-includes/icons/** -text binary diff=generated
+/src/wp-includes/blocks/*/view.asset.php -text binary diff=generated
+/src/wp-includes/blocks/*/view.min.asset.php -text binary diff=generated
diff --git a/.github/workflows/reusable-coding-standards-javascript.yml b/.github/workflows/reusable-coding-standards-javascript.yml
index 5ad9212e7e58d..3fb98c0f64106 100644
--- a/.github/workflows/reusable-coding-standards-javascript.yml
+++ b/.github/workflows/reusable-coding-standards-javascript.yml
@@ -58,4 +58,4 @@ jobs:
run: npm run grunt jshint
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/reusable-coding-standards-php.yml b/.github/workflows/reusable-coding-standards-php.yml
index 59aacd51d1d44..12f77cb44e5b0 100644
--- a/.github/workflows/reusable-coding-standards-php.yml
+++ b/.github/workflows/reusable-coding-standards-php.yml
@@ -105,4 +105,4 @@ jobs:
run: phpcbf
- name: Ensure version-controlled files are not modified during the tests
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/reusable-end-to-end-tests.yml b/.github/workflows/reusable-end-to-end-tests.yml
index 4c8f2214890ec..903ed823e1e4c 100644
--- a/.github/workflows/reusable-end-to-end-tests.yml
+++ b/.github/workflows/reusable-end-to-end-tests.yml
@@ -154,4 +154,4 @@ jobs:
include-hidden-files: true
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/reusable-javascript-tests.yml b/.github/workflows/reusable-javascript-tests.yml
index 0b6d28e44a93b..6b5b498df724a 100644
--- a/.github/workflows/reusable-javascript-tests.yml
+++ b/.github/workflows/reusable-javascript-tests.yml
@@ -68,4 +68,4 @@ jobs:
run: npm run grunt qunit:compiled
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/reusable-performance-test-v2.yml b/.github/workflows/reusable-performance-test-v2.yml
index cd9e27b38e74f..2ac8cff60dd48 100644
--- a/.github/workflows/reusable-performance-test-v2.yml
+++ b/.github/workflows/reusable-performance-test-v2.yml
@@ -264,4 +264,5 @@ jobs:
include-hidden-files: true
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
+
diff --git a/.github/workflows/reusable-performance.yml b/.github/workflows/reusable-performance.yml
index b2c851659ab4c..5f73000560441 100644
--- a/.github/workflows/reusable-performance.yml
+++ b/.github/workflows/reusable-performance.yml
@@ -354,4 +354,4 @@ jobs:
node ./tests/performance/log-results.js "$CODEVITALS_PROJECT_TOKEN" trunk "$GITHUB_SHA" "$BASE_SHA" "$COMMITTED_AT" "$HOST_NAME"
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/reusable-php-compatibility.yml b/.github/workflows/reusable-php-compatibility.yml
index 9bec4260c184a..763695076193c 100644
--- a/.github/workflows/reusable-php-compatibility.yml
+++ b/.github/workflows/reusable-php-compatibility.yml
@@ -87,4 +87,4 @@ jobs:
run: cs2pr ./.cache/phpcs-compat-report.xml
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/reusable-phpstan-static-analysis.yml b/.github/workflows/reusable-phpstan-static-analysis.yml
index 879c3e5657bc4..f1c00cd4db64d 100644
--- a/.github/workflows/reusable-phpstan-static-analysis.yml
+++ b/.github/workflows/reusable-phpstan-static-analysis.yml
@@ -106,4 +106,4 @@ jobs:
key: "phpstan-result-cache-${{ github.run_id }}"
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/reusable-phpunit-tests-v2.yml b/.github/workflows/reusable-phpunit-tests-v2.yml
index 523db98096d1d..43341d22fdb94 100644
--- a/.github/workflows/reusable-phpunit-tests-v2.yml
+++ b/.github/workflows/reusable-phpunit-tests-v2.yml
@@ -209,4 +209,4 @@ jobs:
run: LOCAL_PHP_XDEBUG=true npm run "test:${PHPUNIT_SCRIPT}" -- -v --group xdebug --exclude-group __fakegroup__
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/reusable-phpunit-tests-v3.yml b/.github/workflows/reusable-phpunit-tests-v3.yml
index 45198c20f5e52..7d9a4f650eebe 100644
--- a/.github/workflows/reusable-phpunit-tests-v3.yml
+++ b/.github/workflows/reusable-phpunit-tests-v3.yml
@@ -253,7 +253,7 @@ jobs:
overwrite: true
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
- name: Checkout the WordPress Test Reporter
if: ${{ github.ref == 'refs/heads/trunk' && inputs.report }}
diff --git a/.github/workflows/reusable-test-core-build-process.yml b/.github/workflows/reusable-test-core-build-process.yml
index 4bec59e285c57..6220bd47f53d1 100644
--- a/.github/workflows/reusable-test-core-build-process.yml
+++ b/.github/workflows/reusable-test-core-build-process.yml
@@ -120,7 +120,7 @@ jobs:
run: npm run ${{ inputs.directory == 'src' && 'build:dev' || 'build' }}
- name: Ensure version-controlled files are not modified or deleted during building
- run: git diff --exit-code
+ run: npm run diff:non-generated
- name: Create ZIP of built files
if: ${{ inputs.directory == 'build' && contains( inputs.os, 'ubuntu-' ) }}
@@ -130,7 +130,7 @@ jobs:
run: npm run grunt ${{ inputs.directory == 'src' && 'clean -- --dev' || 'clean' }}
- name: Ensure version-controlled files are not modified or deleted during cleaning
- run: git diff --exit-code
+ run: npm run diff:non-generated
- name: Upload ZIP as a GitHub Actions artifact
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
diff --git a/.github/workflows/reusable-test-gutenberg-build-process.yml b/.github/workflows/reusable-test-gutenberg-build-process.yml
index c0fa87aa3ab20..f30113e18e1ad 100644
--- a/.github/workflows/reusable-test-gutenberg-build-process.yml
+++ b/.github/workflows/reusable-test-gutenberg-build-process.yml
@@ -97,4 +97,4 @@ jobs:
working-directory: ${{ env.GUTENBERG_DIRECTORY }}
- name: Ensure version-controlled files are not modified or deleted during building
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/reusable-test-local-docker-environment-v1.yml b/.github/workflows/reusable-test-local-docker-environment-v1.yml
index 698956ff00346..ffa862d2c3158 100644
--- a/.github/workflows/reusable-test-local-docker-environment-v1.yml
+++ b/.github/workflows/reusable-test-local-docker-environment-v1.yml
@@ -167,4 +167,4 @@ jobs:
run: npm run env:reset
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
diff --git a/.github/workflows/test-and-zip-default-themes.yml b/.github/workflows/test-and-zip-default-themes.yml
index 5af965af0907a..01296274d8702 100644
--- a/.github/workflows/test-and-zip-default-themes.yml
+++ b/.github/workflows/test-and-zip-default-themes.yml
@@ -183,7 +183,7 @@ jobs:
path: src/wp-content/themes/${{ matrix.theme }}/changes.diff
- name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
+ run: npm run diff:non-generated
# Prepares bundled themes for release.
#
diff --git a/.gitignore b/.gitignore
index 1cd9da16b3ed0..0439f304e1b5d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,15 +32,18 @@ wp-tests-config.php
/src/wp-admin/css/colors/*/*.css
/src/wp-admin/js
/src/wp-includes/assets/*
+!/src/wp-includes/assets/script-loader-packages.php
+!/src/wp-includes/assets/script-modules-packages.php
+!/src/wp-includes/assets/script-loader-packages.min.php
+!/src/wp-includes/assets/script-modules-packages.min.php
/src/wp-includes/js
/src/wp-includes/css/dist
/src/wp-includes/css/*.min.css
/src/wp-includes/css/*-rtl.css
-/src/wp-includes/blocks/*
-!/src/wp-includes/blocks/index.php
-/src/wp-includes/icons
+/src/wp-includes/blocks/**/*.css
+/src/wp-includes/blocks/**/*.js
+/src/wp-includes/blocks/**/*.js.map
/src/wp-includes/build
-/src/wp-includes/theme.json
/packagehash.txt
/.gutenberg-hash
/artifacts
diff --git a/package.json b/package.json
index 745ec98ab6b58..03cebaca666cd 100644
--- a/package.json
+++ b/package.json
@@ -110,6 +110,7 @@
"build": "grunt build",
"build:dev": "grunt build --dev",
"dev": "grunt watch --dev",
+ "diff:non-generated": "sh ./tools/diff-non-generated.sh",
"test": "grunt test",
"watch": "grunt watch",
"grunt": "grunt",
@@ -139,4 +140,4 @@
"sync-gutenberg-packages": "grunt sync-gutenberg-packages",
"postsync-gutenberg-packages": "grunt wp-packages:sync-stable-blocks && grunt build --dev && grunt build"
}
-}
\ No newline at end of file
+}
diff --git a/src/wp-includes/assets/script-loader-packages.min.php b/src/wp-includes/assets/script-loader-packages.min.php
new file mode 100644
index 0000000000000..1fac04f534e7a
--- /dev/null
+++ b/src/wp-includes/assets/script-loader-packages.min.php
@@ -0,0 +1,896 @@
+ array(
+ 'dependencies' => array(
+ 'wp-dom-ready',
+ 'wp-i18n'
+ ),
+ 'version' => 'af934e5259bc51b8718e'
+ ),
+ 'annotations.min.js' => array(
+ 'dependencies' => array(
+ 'wp-data',
+ 'wp-hooks',
+ 'wp-i18n',
+ 'wp-rich-text'
+ ),
+ 'version' => '4b07d06c67c3b5ea590c'
+ ),
+ 'api-fetch.min.js' => array(
+ 'dependencies' => array(
+ 'wp-i18n',
+ 'wp-url'
+ ),
+ 'version' => 'd7efe4dc1468d36c39b8'
+ ),
+ 'autop.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '9d0d0901b46f0a9027c9'
+ ),
+ 'base-styles.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '8ebe97b095beb7e9279b'
+ ),
+ 'blob.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '198af75fe06d924090d8'
+ ),
+ 'block-directory.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ '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-primitives',
+ 'wp-url'
+ ),
+ 'version' => '17c7b74296ea735c0361'
+ ),
+ 'block-editor.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-block-serialization-default-parser',
+ 'wp-blocks',
+ 'wp-commands',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-date',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-is-shallow-equal',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-priority-queue',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-style-engine',
+ 'wp-theme',
+ 'wp-token-list',
+ 'wp-upload-media',
+ 'wp-url',
+ 'wp-warning'
+ ),
+ 'version' => 'ac99dc4813ce9ba62863'
+ ),
+ 'block-library.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-jsx-runtime',
+ '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-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-patterns',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-server-side-render',
+ 'wp-upload-media',
+ 'wp-url',
+ 'wp-wordcount'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/latex-to-mathml',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '28f00a6393f97214aa04'
+ ),
+ 'block-serialization-default-parser.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'bff55bd3f1ce9df0c99c'
+ ),
+ 'block-serialization-spec-parser.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '9ebc5e95e1de1cabd1e6'
+ ),
+ 'blocks.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-autop',
+ 'wp-blob',
+ 'wp-block-serialization-default-parser',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-is-shallow-equal',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-shortcode',
+ 'wp-warning'
+ ),
+ 'version' => '043731fad526d26793c6'
+ ),
+ 'commands.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-components',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-primitives',
+ 'wp-private-apis'
+ ),
+ 'version' => 'e3d8bba53f4ffea4fcd2'
+ ),
+ 'components.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ '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-primitives',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-warning'
+ ),
+ 'version' => '498bf90967fccacc8857'
+ ),
+ 'compose.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-jsx-runtime',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-is-shallow-equal',
+ 'wp-keycodes',
+ 'wp-priority-queue',
+ 'wp-undo-manager'
+ ),
+ 'version' => '42e10ac07bc50b2c5314'
+ ),
+ 'core-commands.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-commands',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-router',
+ 'wp-url'
+ ),
+ 'version' => 'b209152e7e51279d7c28'
+ ),
+ 'core-data.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-sync',
+ 'wp-undo-manager',
+ 'wp-url',
+ 'wp-warning'
+ ),
+ 'version' => '553521bc03a0cb8c2fb5'
+ ),
+ 'customize-widgets.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-block-editor',
+ 'wp-block-library',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-i18n',
+ 'wp-is-shallow-equal',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-media-utils',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-widgets'
+ ),
+ 'version' => '524dc7a4326b77064831'
+ ),
+ 'data.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-compose',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-is-shallow-equal',
+ 'wp-priority-queue',
+ 'wp-private-apis',
+ 'wp-redux-routine'
+ ),
+ 'version' => 'dc7feb6ad8da53887680'
+ ),
+ 'data-controls.min.js' => array(
+ 'dependencies' => array(
+ 'wp-api-fetch',
+ 'wp-data',
+ 'wp-deprecated'
+ ),
+ 'version' => '730061ade69d7f341014'
+ ),
+ 'date.min.js' => array(
+ 'dependencies' => array(
+ 'moment',
+ 'wp-deprecated'
+ ),
+ 'version' => 'c9f8e7dd3232716f34e9'
+ ),
+ 'deprecated.min.js' => array(
+ 'dependencies' => array(
+ 'wp-hooks'
+ ),
+ 'version' => '990e85f234fee8f7d446'
+ ),
+ 'dom.min.js' => array(
+ 'dependencies' => array(
+ 'wp-deprecated'
+ ),
+ 'version' => 'aac39fc255d02334a74e'
+ ),
+ 'dom-ready.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'a06281ae5cf5500e9317'
+ ),
+ 'edit-post.min.js' => array(
+ 'dependencies' => array(
+ 'media-models',
+ 'media-views',
+ 'postbox',
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-block-editor',
+ 'wp-block-library',
+ 'wp-blocks',
+ 'wp-commands',
+ '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-notices',
+ 'wp-plugins',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-style-engine',
+ 'wp-url',
+ 'wp-widgets'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '1a6b82c9f517652a242b'
+ ),
+ 'edit-site.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-block-editor',
+ 'wp-block-library',
+ 'wp-blocks',
+ 'wp-commands',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-date',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-dom-ready',
+ 'wp-editor',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-patterns',
+ 'wp-plugins',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-router',
+ 'wp-style-engine',
+ 'wp-theme',
+ 'wp-url',
+ 'wp-warning',
+ 'wp-widgets'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '621fb808445b3c4c8b9e'
+ ),
+ 'edit-widgets.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-block-editor',
+ 'wp-block-library',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-media-utils',
+ 'wp-notices',
+ 'wp-patterns',
+ 'wp-plugins',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-url',
+ 'wp-viewport',
+ 'wp-widgets'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => 'be944f745795910dc41a'
+ ),
+ 'editor.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-block-editor',
+ 'wp-block-serialization-default-parser',
+ 'wp-blocks',
+ 'wp-commands',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-date',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-media-utils',
+ 'wp-notices',
+ 'wp-patterns',
+ 'wp-plugins',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-server-side-render',
+ 'wp-style-engine',
+ 'wp-theme',
+ 'wp-upload-media',
+ 'wp-url',
+ 'wp-viewport',
+ 'wp-warning',
+ 'wp-wordcount'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '9d4db71493e63db7e654'
+ ),
+ 'element.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'wp-escape-html'
+ ),
+ 'version' => '15ba804677f72a8db97b'
+ ),
+ 'escape-html.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '3f093e5cca67aa0f8b56'
+ ),
+ 'format-library.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-block-editor',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-url'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/latex-to-mathml',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => 'f89be9586f2d9ce4545a'
+ ),
+ 'hooks.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '7496969728ca0f95732d'
+ ),
+ 'html-entities.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '8c6fa5b869dfeadc4af2'
+ ),
+ 'i18n.min.js' => array(
+ 'dependencies' => array(
+ 'wp-hooks'
+ ),
+ 'version' => '781d11515ad3d91786ec'
+ ),
+ 'is-shallow-equal.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '5d84b9f3cb50d2ce7d04'
+ ),
+ 'keyboard-shortcuts.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-data',
+ 'wp-element',
+ 'wp-keycodes'
+ ),
+ 'version' => '2ed78d3b4c23f38804e0'
+ ),
+ 'keycodes.min.js' => array(
+ 'dependencies' => array(
+ 'wp-i18n'
+ ),
+ 'version' => 'aa1a141e3468afe7f852'
+ ),
+ 'list-reusable-blocks.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-element',
+ 'wp-i18n'
+ ),
+ 'version' => '2e35ebd5dbaccb5a90c5'
+ ),
+ 'media-utils.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-date',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-theme',
+ 'wp-url',
+ 'wp-warning'
+ ),
+ 'version' => '5275f42a22469e56c419'
+ ),
+ 'notices.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-components',
+ 'wp-data'
+ ),
+ 'version' => '1df43b4122aaf25134bb'
+ ),
+ 'nux.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-primitives'
+ ),
+ 'version' => '14d2335a0007b36b9112'
+ ),
+ 'patterns.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-notices',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-url'
+ ),
+ 'version' => '1fcfba2e7d83ba54735d'
+ ),
+ 'plugins.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-compose',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-is-shallow-equal',
+ 'wp-primitives'
+ ),
+ 'version' => 'b03040c408cd5bcc9f89'
+ ),
+ 'preferences.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-preferences-persistence',
+ 'wp-primitives',
+ 'wp-private-apis'
+ ),
+ 'version' => 'd3f26a2b3620d15a60a3'
+ ),
+ 'preferences-persistence.min.js' => array(
+ 'dependencies' => array(
+ 'wp-api-fetch'
+ ),
+ 'version' => 'e8033be98338d1861bca'
+ ),
+ 'primitives.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-element'
+ ),
+ 'version' => 'a5c905ec27bcd76ef287'
+ ),
+ 'priority-queue.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '1f0e89e247bc0bd3f9b9'
+ ),
+ 'private-apis.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '5f0ec184488dba9baabb'
+ ),
+ 'react-i18n.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-element',
+ 'wp-i18n'
+ ),
+ 'version' => '9b74577dbd7e50f6b77b'
+ ),
+ 'redux-routine.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '64f9f5001aabc046c605'
+ ),
+ 'reusable-blocks.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-notices',
+ 'wp-primitives',
+ 'wp-url'
+ ),
+ 'version' => 'c72d27a8ac4e33cb74d6'
+ ),
+ 'rich-text.min.js' => array(
+ 'dependencies' => array(
+ 'wp-a11y',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-escape-html',
+ 'wp-i18n',
+ 'wp-keycodes',
+ 'wp-private-apis'
+ ),
+ 'version' => '9d9d9b99a28b17452d87'
+ ),
+ 'router.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-compose',
+ 'wp-element',
+ 'wp-private-apis',
+ 'wp-url'
+ ),
+ 'version' => '0249e6724784b1c2583b'
+ ),
+ 'server-side-render.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-url'
+ ),
+ 'version' => '10a51bf05ced35b78092'
+ ),
+ 'shortcode.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '11742fe18cc215d3d5ab'
+ ),
+ 'style-engine.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'faa37ce61b7ec8394b2a'
+ ),
+ 'sync.min.js' => array(
+ 'dependencies' => array(
+ 'wp-api-fetch',
+ 'wp-hooks',
+ 'wp-private-apis'
+ ),
+ 'version' => '345bb2a88a140f25cd55'
+ ),
+ 'theme.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-element',
+ 'wp-private-apis'
+ ),
+ 'version' => '63db44adf5194c9389bf'
+ ),
+ 'token-list.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '16f0aebdd39d87c2a84b'
+ ),
+ 'undo-manager.min.js' => array(
+ 'dependencies' => array(
+ 'wp-is-shallow-equal'
+ ),
+ 'version' => '27bb0ae036a2c9d4a1b5'
+ ),
+ 'upload-media.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-blob',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-private-apis',
+ 'wp-url'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/vips/worker',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '012bdf4e5d634c0e3e01'
+ ),
+ 'url.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'bb0f766c3d2efe497871'
+ ),
+ 'viewport.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-compose',
+ 'wp-data'
+ ),
+ 'version' => '8614025b8075d220d78f'
+ ),
+ 'warning.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '36fdbdc984d93aee8a97'
+ ),
+ 'widgets.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-notices',
+ 'wp-primitives'
+ ),
+ 'version' => '7064da49d4dd3848ba8a'
+ ),
+ 'wordcount.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '3b928d5db8724a8614dd'
+ )
+);
\ No newline at end of file
diff --git a/src/wp-includes/assets/script-loader-packages.php b/src/wp-includes/assets/script-loader-packages.php
new file mode 100644
index 0000000000000..916e24cf98fa8
--- /dev/null
+++ b/src/wp-includes/assets/script-loader-packages.php
@@ -0,0 +1,896 @@
+ array(
+ 'dependencies' => array(
+ 'wp-dom-ready',
+ 'wp-i18n'
+ ),
+ 'version' => 'af934e5259bc51b8718e'
+ ),
+ 'annotations.js' => array(
+ 'dependencies' => array(
+ 'wp-data',
+ 'wp-hooks',
+ 'wp-i18n',
+ 'wp-rich-text'
+ ),
+ 'version' => '4b07d06c67c3b5ea590c'
+ ),
+ 'api-fetch.js' => array(
+ 'dependencies' => array(
+ 'wp-i18n',
+ 'wp-url'
+ ),
+ 'version' => 'd7efe4dc1468d36c39b8'
+ ),
+ 'autop.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '9d0d0901b46f0a9027c9'
+ ),
+ 'base-styles.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '8ebe97b095beb7e9279b'
+ ),
+ 'blob.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '198af75fe06d924090d8'
+ ),
+ 'block-directory.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ '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-primitives',
+ 'wp-url'
+ ),
+ 'version' => '17c7b74296ea735c0361'
+ ),
+ 'block-editor.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-block-serialization-default-parser',
+ 'wp-blocks',
+ 'wp-commands',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-date',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-is-shallow-equal',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-priority-queue',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-style-engine',
+ 'wp-theme',
+ 'wp-token-list',
+ 'wp-upload-media',
+ 'wp-url',
+ 'wp-warning'
+ ),
+ 'version' => 'ac99dc4813ce9ba62863'
+ ),
+ 'block-library.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-jsx-runtime',
+ '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-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-patterns',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-server-side-render',
+ 'wp-upload-media',
+ 'wp-url',
+ 'wp-wordcount'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/latex-to-mathml',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '28f00a6393f97214aa04'
+ ),
+ 'block-serialization-default-parser.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'bff55bd3f1ce9df0c99c'
+ ),
+ 'block-serialization-spec-parser.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '9ebc5e95e1de1cabd1e6'
+ ),
+ 'blocks.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-autop',
+ 'wp-blob',
+ 'wp-block-serialization-default-parser',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-is-shallow-equal',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-shortcode',
+ 'wp-warning'
+ ),
+ 'version' => '043731fad526d26793c6'
+ ),
+ 'commands.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-components',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-primitives',
+ 'wp-private-apis'
+ ),
+ 'version' => 'e3d8bba53f4ffea4fcd2'
+ ),
+ 'components.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ '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-primitives',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-warning'
+ ),
+ 'version' => '498bf90967fccacc8857'
+ ),
+ 'compose.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-jsx-runtime',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-is-shallow-equal',
+ 'wp-keycodes',
+ 'wp-priority-queue',
+ 'wp-undo-manager'
+ ),
+ 'version' => '42e10ac07bc50b2c5314'
+ ),
+ 'core-commands.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-commands',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-router',
+ 'wp-url'
+ ),
+ 'version' => 'b209152e7e51279d7c28'
+ ),
+ 'core-data.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-sync',
+ 'wp-undo-manager',
+ 'wp-url',
+ 'wp-warning'
+ ),
+ 'version' => '553521bc03a0cb8c2fb5'
+ ),
+ 'customize-widgets.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-block-editor',
+ 'wp-block-library',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-i18n',
+ 'wp-is-shallow-equal',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-media-utils',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-widgets'
+ ),
+ 'version' => '524dc7a4326b77064831'
+ ),
+ 'data.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-compose',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-is-shallow-equal',
+ 'wp-priority-queue',
+ 'wp-private-apis',
+ 'wp-redux-routine'
+ ),
+ 'version' => 'dc7feb6ad8da53887680'
+ ),
+ 'data-controls.js' => array(
+ 'dependencies' => array(
+ 'wp-api-fetch',
+ 'wp-data',
+ 'wp-deprecated'
+ ),
+ 'version' => '730061ade69d7f341014'
+ ),
+ 'date.js' => array(
+ 'dependencies' => array(
+ 'moment',
+ 'wp-deprecated'
+ ),
+ 'version' => 'c9f8e7dd3232716f34e9'
+ ),
+ 'deprecated.js' => array(
+ 'dependencies' => array(
+ 'wp-hooks'
+ ),
+ 'version' => '990e85f234fee8f7d446'
+ ),
+ 'dom.js' => array(
+ 'dependencies' => array(
+ 'wp-deprecated'
+ ),
+ 'version' => 'aac39fc255d02334a74e'
+ ),
+ 'dom-ready.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'a06281ae5cf5500e9317'
+ ),
+ 'edit-post.js' => array(
+ 'dependencies' => array(
+ 'media-models',
+ 'media-views',
+ 'postbox',
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-block-editor',
+ 'wp-block-library',
+ 'wp-blocks',
+ 'wp-commands',
+ '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-notices',
+ 'wp-plugins',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-style-engine',
+ 'wp-url',
+ 'wp-widgets'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '1a6b82c9f517652a242b'
+ ),
+ 'edit-site.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-block-editor',
+ 'wp-block-library',
+ 'wp-blocks',
+ 'wp-commands',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-date',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-dom-ready',
+ 'wp-editor',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-patterns',
+ 'wp-plugins',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-router',
+ 'wp-style-engine',
+ 'wp-theme',
+ 'wp-url',
+ 'wp-warning',
+ 'wp-widgets'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '621fb808445b3c4c8b9e'
+ ),
+ 'edit-widgets.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-block-editor',
+ 'wp-block-library',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-media-utils',
+ 'wp-notices',
+ 'wp-patterns',
+ 'wp-plugins',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-url',
+ 'wp-viewport',
+ 'wp-widgets'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => 'be944f745795910dc41a'
+ ),
+ 'editor.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-block-editor',
+ 'wp-block-serialization-default-parser',
+ 'wp-blocks',
+ 'wp-commands',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-date',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-media-utils',
+ 'wp-notices',
+ 'wp-patterns',
+ 'wp-plugins',
+ 'wp-preferences',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-server-side-render',
+ 'wp-style-engine',
+ 'wp-theme',
+ 'wp-upload-media',
+ 'wp-url',
+ 'wp-viewport',
+ 'wp-warning',
+ 'wp-wordcount'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '9d4db71493e63db7e654'
+ ),
+ 'element.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'wp-escape-html'
+ ),
+ 'version' => '15ba804677f72a8db97b'
+ ),
+ 'escape-html.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '3f093e5cca67aa0f8b56'
+ ),
+ 'format-library.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-block-editor',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-rich-text',
+ 'wp-url'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/latex-to-mathml',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => 'f89be9586f2d9ce4545a'
+ ),
+ 'hooks.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '7496969728ca0f95732d'
+ ),
+ 'html-entities.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '8c6fa5b869dfeadc4af2'
+ ),
+ 'i18n.js' => array(
+ 'dependencies' => array(
+ 'wp-hooks'
+ ),
+ 'version' => '781d11515ad3d91786ec'
+ ),
+ 'is-shallow-equal.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '5d84b9f3cb50d2ce7d04'
+ ),
+ 'keyboard-shortcuts.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-data',
+ 'wp-element',
+ 'wp-keycodes'
+ ),
+ 'version' => '2ed78d3b4c23f38804e0'
+ ),
+ 'keycodes.js' => array(
+ 'dependencies' => array(
+ 'wp-i18n'
+ ),
+ 'version' => 'aa1a141e3468afe7f852'
+ ),
+ 'list-reusable-blocks.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-element',
+ 'wp-i18n'
+ ),
+ 'version' => '2e35ebd5dbaccb5a90c5'
+ ),
+ 'media-utils.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-api-fetch',
+ 'wp-blob',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-date',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-theme',
+ 'wp-url',
+ 'wp-warning'
+ ),
+ 'version' => '5275f42a22469e56c419'
+ ),
+ 'notices.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-components',
+ 'wp-data'
+ ),
+ 'version' => '1df43b4122aaf25134bb'
+ ),
+ 'nux.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-primitives'
+ ),
+ 'version' => '14d2335a0007b36b9112'
+ ),
+ 'patterns.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-notices',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-url'
+ ),
+ 'version' => '1fcfba2e7d83ba54735d'
+ ),
+ 'plugins.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-compose',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-hooks',
+ 'wp-is-shallow-equal',
+ 'wp-primitives'
+ ),
+ 'version' => 'b03040c408cd5bcc9f89'
+ ),
+ 'preferences.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-a11y',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-preferences-persistence',
+ 'wp-primitives',
+ 'wp-private-apis'
+ ),
+ 'version' => 'd3f26a2b3620d15a60a3'
+ ),
+ 'preferences-persistence.js' => array(
+ 'dependencies' => array(
+ 'wp-api-fetch'
+ ),
+ 'version' => 'e8033be98338d1861bca'
+ ),
+ 'primitives.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-element'
+ ),
+ 'version' => 'a5c905ec27bcd76ef287'
+ ),
+ 'priority-queue.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '1f0e89e247bc0bd3f9b9'
+ ),
+ 'private-apis.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '5f0ec184488dba9baabb'
+ ),
+ 'react-i18n.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-element',
+ 'wp-i18n'
+ ),
+ 'version' => '9b74577dbd7e50f6b77b'
+ ),
+ 'redux-routine.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '64f9f5001aabc046c605'
+ ),
+ 'reusable-blocks.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-notices',
+ 'wp-primitives',
+ 'wp-url'
+ ),
+ 'version' => 'c72d27a8ac4e33cb74d6'
+ ),
+ 'rich-text.js' => array(
+ 'dependencies' => array(
+ 'wp-a11y',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-deprecated',
+ 'wp-dom',
+ 'wp-element',
+ 'wp-escape-html',
+ 'wp-i18n',
+ 'wp-keycodes',
+ 'wp-private-apis'
+ ),
+ 'version' => '9d9d9b99a28b17452d87'
+ ),
+ 'router.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-compose',
+ 'wp-element',
+ 'wp-private-apis',
+ 'wp-url'
+ ),
+ 'version' => '0249e6724784b1c2583b'
+ ),
+ 'server-side-render.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-url'
+ ),
+ 'version' => '10a51bf05ced35b78092'
+ ),
+ 'shortcode.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '11742fe18cc215d3d5ab'
+ ),
+ 'style-engine.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'faa37ce61b7ec8394b2a'
+ ),
+ 'sync.js' => array(
+ 'dependencies' => array(
+ 'wp-api-fetch',
+ 'wp-hooks',
+ 'wp-private-apis'
+ ),
+ 'version' => '345bb2a88a140f25cd55'
+ ),
+ 'theme.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-element',
+ 'wp-private-apis'
+ ),
+ 'version' => '63db44adf5194c9389bf'
+ ),
+ 'token-list.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '16f0aebdd39d87c2a84b'
+ ),
+ 'undo-manager.js' => array(
+ 'dependencies' => array(
+ 'wp-is-shallow-equal'
+ ),
+ 'version' => '27bb0ae036a2c9d4a1b5'
+ ),
+ 'upload-media.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-blob',
+ 'wp-compose',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-private-apis',
+ 'wp-url'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/vips/worker',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '012bdf4e5d634c0e3e01'
+ ),
+ 'url.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'bb0f766c3d2efe497871'
+ ),
+ 'viewport.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-compose',
+ 'wp-data'
+ ),
+ 'version' => '8614025b8075d220d78f'
+ ),
+ 'warning.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '36fdbdc984d93aee8a97'
+ ),
+ 'widgets.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-api-fetch',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-notices',
+ 'wp-primitives'
+ ),
+ 'version' => '7064da49d4dd3848ba8a'
+ ),
+ 'wordcount.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '3b928d5db8724a8614dd'
+ )
+);
\ No newline at end of file
diff --git a/src/wp-includes/assets/script-modules-packages.min.php b/src/wp-includes/assets/script-modules-packages.min.php
new file mode 100644
index 0000000000000..ee92a8fae5e06
--- /dev/null
+++ b/src/wp-includes/assets/script-modules-packages.min.php
@@ -0,0 +1,313 @@
+ array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '1c371cb517a97cdbcb9f'
+ ),
+ 'abilities/index.min.js' => array(
+ 'dependencies' => array(
+ 'wp-data',
+ 'wp-i18n'
+ ),
+ 'version' => 'f3475bc77a30dcc5b38d'
+ ),
+ 'block-editor/utils/fit-text-frontend.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '383c7a8bd24a1f2fd9b9'
+ ),
+ 'block-library/accordion/view.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '2af01b43d30739c3fb8d'
+ ),
+ 'block-library/file/view.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '7d4d261d10dca47ebecb'
+ ),
+ 'block-library/form/view.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '5542f8ad251fe43ef09e'
+ ),
+ 'block-library/image/view.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '25ee935fd6c67371d0f3'
+ ),
+ 'block-library/navigation/view.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '243a659f91c3dc9841c7'
+ ),
+ 'block-library/playlist/view.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '99f747d731f80246db11'
+ ),
+ 'block-library/query/view.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ ),
+ array(
+ 'id' => '@wordpress/interactivity-router',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '7a4ec5bfb61a7137cf4b'
+ ),
+ 'block-library/search/view.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '38bd0e230eaffa354d2a'
+ ),
+ 'block-library/tabs/view.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '1f60dd5e3fa56c6b2e2e'
+ ),
+ 'boot/index.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-commands',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-editor',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-theme',
+ 'wp-url'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/a11y',
+ 'import' => 'static'
+ ),
+ array(
+ 'id' => '@wordpress/lazy-editor',
+ 'import' => 'dynamic'
+ ),
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => 'ad3a7da37529a4a0086d'
+ ),
+ 'core-abilities/index.min.js' => array(
+ 'dependencies' => array(
+ 'wp-api-fetch',
+ 'wp-url'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/abilities',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '7cd8fe3a80dded97579b'
+ ),
+ 'edit-site-init/index.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-data',
+ 'wp-element',
+ 'wp-primitives'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/boot',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => 'c636e2e534fd52f7c77c'
+ ),
+ 'interactivity/index.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '4d9d9330d767da3813cc'
+ ),
+ 'interactivity-router/full-page.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity-router',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '5c07cd7a12ae073c5241'
+ ),
+ 'interactivity-router/index.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/a11y',
+ 'import' => 'dynamic'
+ ),
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '493dd3de12e3112b3130'
+ ),
+ 'latex-to-mathml/index.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'e5fd3ae6d2c3b6e669da'
+ ),
+ 'latex-to-mathml/loader.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/latex-to-mathml',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '4f37456af539bd3d2351'
+ ),
+ 'lazy-editor/index.min.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-editor',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-private-apis',
+ 'wp-style-engine'
+ ),
+ 'version' => '8796d7f43055e444d936'
+ ),
+ 'route/index.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-private-apis'
+ ),
+ 'version' => 'c5843b6c5e84b352f43b'
+ ),
+ 'vips/loader.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/vips/worker',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '07c9acb45d3e5d81829a'
+ ),
+ 'vips/worker.min.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'b6a4882788678d947b30'
+ ),
+ 'workflow/index.min.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-components',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-primitives',
+ 'wp-private-apis'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/abilities',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => 'e1bfc2380b433037c545'
+ )
+);
\ No newline at end of file
diff --git a/src/wp-includes/assets/script-modules-packages.php b/src/wp-includes/assets/script-modules-packages.php
new file mode 100644
index 0000000000000..792ebcb13b446
--- /dev/null
+++ b/src/wp-includes/assets/script-modules-packages.php
@@ -0,0 +1,313 @@
+ array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '1c371cb517a97cdbcb9f'
+ ),
+ 'abilities/index.js' => array(
+ 'dependencies' => array(
+ 'wp-data',
+ 'wp-i18n'
+ ),
+ 'version' => 'f3475bc77a30dcc5b38d'
+ ),
+ 'block-editor/utils/fit-text-frontend.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '383c7a8bd24a1f2fd9b9'
+ ),
+ 'block-library/accordion/view.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '2af01b43d30739c3fb8d'
+ ),
+ 'block-library/file/view.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '7d4d261d10dca47ebecb'
+ ),
+ 'block-library/form/view.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '5542f8ad251fe43ef09e'
+ ),
+ 'block-library/image/view.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '25ee935fd6c67371d0f3'
+ ),
+ 'block-library/navigation/view.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '243a659f91c3dc9841c7'
+ ),
+ 'block-library/playlist/view.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '99f747d731f80246db11'
+ ),
+ 'block-library/query/view.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ ),
+ array(
+ 'id' => '@wordpress/interactivity-router',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '7a4ec5bfb61a7137cf4b'
+ ),
+ 'block-library/search/view.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '38bd0e230eaffa354d2a'
+ ),
+ 'block-library/tabs/view.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '1f60dd5e3fa56c6b2e2e'
+ ),
+ 'boot/index.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-commands',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-editor',
+ 'wp-element',
+ 'wp-html-entities',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-keycodes',
+ 'wp-notices',
+ 'wp-primitives',
+ 'wp-private-apis',
+ 'wp-theme',
+ 'wp-url'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/a11y',
+ 'import' => 'static'
+ ),
+ array(
+ 'id' => '@wordpress/lazy-editor',
+ 'import' => 'dynamic'
+ ),
+ array(
+ 'id' => '@wordpress/route',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => 'ad3a7da37529a4a0086d'
+ ),
+ 'core-abilities/index.js' => array(
+ 'dependencies' => array(
+ 'wp-api-fetch',
+ 'wp-url'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/abilities',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '7cd8fe3a80dded97579b'
+ ),
+ 'edit-site-init/index.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-data',
+ 'wp-element',
+ 'wp-primitives'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/boot',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => 'c636e2e534fd52f7c77c'
+ ),
+ 'interactivity/index.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => '4d9d9330d767da3813cc'
+ ),
+ 'interactivity-router/full-page.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/interactivity-router',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '5c07cd7a12ae073c5241'
+ ),
+ 'interactivity-router/index.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/a11y',
+ 'import' => 'dynamic'
+ ),
+ array(
+ 'id' => '@wordpress/interactivity',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => '493dd3de12e3112b3130'
+ ),
+ 'latex-to-mathml/index.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'e5fd3ae6d2c3b6e669da'
+ ),
+ 'latex-to-mathml/loader.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/latex-to-mathml',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '4f37456af539bd3d2351'
+ ),
+ 'lazy-editor/index.js' => array(
+ 'dependencies' => array(
+ 'react-jsx-runtime',
+ 'wp-block-editor',
+ 'wp-blocks',
+ 'wp-components',
+ 'wp-core-data',
+ 'wp-data',
+ 'wp-editor',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-private-apis',
+ 'wp-style-engine'
+ ),
+ 'version' => '8796d7f43055e444d936'
+ ),
+ 'route/index.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-private-apis'
+ ),
+ 'version' => 'c5843b6c5e84b352f43b'
+ ),
+ 'vips/loader.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/vips/worker',
+ 'import' => 'dynamic'
+ )
+ ),
+ 'version' => '07c9acb45d3e5d81829a'
+ ),
+ 'vips/worker.js' => array(
+ 'dependencies' => array(
+
+ ),
+ 'version' => 'b6a4882788678d947b30'
+ ),
+ 'workflow/index.js' => array(
+ 'dependencies' => array(
+ 'react',
+ 'react-dom',
+ 'react-jsx-runtime',
+ 'wp-components',
+ 'wp-data',
+ 'wp-element',
+ 'wp-i18n',
+ 'wp-keyboard-shortcuts',
+ 'wp-primitives',
+ 'wp-private-apis'
+ ),
+ 'module_dependencies' => array(
+ array(
+ 'id' => '@wordpress/abilities',
+ 'import' => 'static'
+ )
+ ),
+ 'version' => 'e1bfc2380b433037c545'
+ )
+);
\ No newline at end of file
diff --git a/src/wp-includes/blocks/accordion-heading/block.json b/src/wp-includes/blocks/accordion-heading/block.json
new file mode 100644
index 0000000000000..e1ccf83dd3c1b
--- /dev/null
+++ b/src/wp-includes/blocks/accordion-heading/block.json
@@ -0,0 +1,94 @@
+{
+ "$schema": "https://schemas.wp.org/trunk/block.json",
+ "apiVersion": 3,
+ "name": "core/accordion-heading",
+ "title": "Accordion Heading",
+ "category": "design",
+ "description": "Displays a heading that toggles the accordion panel.",
+ "parent": [ "core/accordion-item" ],
+ "usesContext": [
+ "core/accordion-icon-position",
+ "core/accordion-show-icon",
+ "core/accordion-heading-level"
+ ],
+ "supports": {
+ "anchor": true,
+ "color": {
+ "background": true,
+ "gradients": true
+ },
+ "align": false,
+ "interactivity": true,
+ "spacing": {
+ "padding": true,
+ "__experimentalDefaultControls": {
+ "padding": true
+ },
+ "__experimentalSkipSerialization": true,
+ "__experimentalSelector": ".wp-block-accordion-heading__toggle"
+ },
+ "__experimentalBorder": {
+ "color": true,
+ "radius": true,
+ "style": true,
+ "width": true,
+ "__experimentalDefaultControls": {
+ "color": true,
+ "radius": true,
+ "style": true,
+ "width": true
+ }
+ },
+ "typography": {
+ "__experimentalSkipSerialization": [
+ "textDecoration",
+ "letterSpacing"
+ ],
+ "fontSize": true,
+ "__experimentalFontFamily": true,
+ "__experimentalFontWeight": true,
+ "__experimentalFontStyle": true,
+ "__experimentalTextTransform": true,
+ "__experimentalTextDecoration": true,
+ "__experimentalLetterSpacing": true,
+ "__experimentalDefaultControls": {
+ "fontSize": true,
+ "fontFamily": true
+ }
+ },
+ "shadow": true,
+ "visibility": false,
+ "lock": false
+ },
+ "selectors": {
+ "typography": {
+ "letterSpacing": ".wp-block-accordion-heading .wp-block-accordion-heading__toggle-title",
+ "textDecoration": ".wp-block-accordion-heading .wp-block-accordion-heading__toggle-title"
+ }
+ },
+ "attributes": {
+ "openByDefault": {
+ "type": "boolean",
+ "default": false
+ },
+ "title": {
+ "type": "rich-text",
+ "source": "rich-text",
+ "selector": ".wp-block-accordion-heading__toggle-title",
+ "role": "content"
+ },
+ "level": {
+ "type": "number"
+ },
+ "iconPosition": {
+ "type": "string",
+ "enum": [ "left", "right" ],
+ "default": "right"
+ },
+ "showIcon": {
+ "type": "boolean",
+ "default": true
+ }
+ },
+ "textdomain": "default"
+}
diff --git a/src/wp-includes/blocks/accordion-item.php b/src/wp-includes/blocks/accordion-item.php
new file mode 100644
index 0000000000000..37306c61fcb85
--- /dev/null
+++ b/src/wp-includes/blocks/accordion-item.php
@@ -0,0 +1,75 @@
+ function () {
+ $context = wp_interactivity_get_context();
+ return $context['openByDefault'];
+ },
+ )
+ );
+
+ if ( $p->next_tag( array( 'class_name' => 'wp-block-accordion-item' ) ) ) {
+ $open_by_default = $attributes['openByDefault'] ? 'true' : 'false';
+ $p->set_attribute( 'data-wp-context', '{ "id": "' . $unique_id . '", "openByDefault": ' . $open_by_default . ' }' );
+ $p->set_attribute( 'data-wp-class--is-open', 'state.isOpen' );
+ $p->set_attribute( 'data-wp-init', 'callbacks.initAccordionItems' );
+ $p->set_attribute( 'data-wp-on-window--hashchange', 'callbacks.hashChange' );
+
+ if ( $p->next_tag( array( 'class_name' => 'wp-block-accordion-heading__toggle' ) ) ) {
+ $p->set_attribute( 'data-wp-on--click', 'actions.toggle' );
+ $p->set_attribute( 'data-wp-on--keydown', 'actions.handleKeyDown' );
+ $p->set_attribute( 'id', $unique_id );
+ $p->set_attribute( 'aria-controls', $unique_id . '-panel' );
+ $p->set_attribute( 'data-wp-bind--aria-expanded', 'state.isOpen' );
+
+ if ( $p->next_tag( array( 'class_name' => 'wp-block-accordion-panel' ) ) ) {
+ $p->set_attribute( 'id', $unique_id . '-panel' );
+ $p->set_attribute( 'aria-labelledby', $unique_id );
+ $p->set_attribute( 'data-wp-bind--inert', '!state.isOpen' );
+
+ // Only modify content if all directives have been set.
+ $content = $p->get_updated_html();
+ }
+ }
+ }
+
+ return $content;
+}
+
+/**
+ * Registers the `core/accordion-item` block on server.
+ *
+ * @since 6.9.0
+ */
+function register_block_core_accordion_item() {
+ register_block_type_from_metadata(
+ __DIR__ . '/accordion-item',
+ array(
+ 'render_callback' => 'block_core_accordion_item_render',
+ )
+ );
+}
+add_action( 'init', 'register_block_core_accordion_item' );
diff --git a/src/wp-includes/blocks/accordion-item/block.json b/src/wp-includes/blocks/accordion-item/block.json
new file mode 100644
index 0000000000000..74bfddde0e68b
--- /dev/null
+++ b/src/wp-includes/blocks/accordion-item/block.json
@@ -0,0 +1,63 @@
+{
+ "$schema": "https://schemas.wp.org/trunk/block.json",
+ "apiVersion": 3,
+ "name": "core/accordion-item",
+ "title": "Accordion Item",
+ "category": "design",
+ "description": "Wraps the heading and panel in one unit.",
+ "parent": [ "core/accordion" ],
+ "allowedBlocks": [ "core/accordion-heading", "core/accordion-panel" ],
+ "supports": {
+ "html": false,
+ "color": {
+ "background": true,
+ "gradients": true
+ },
+ "interactivity": true,
+ "spacing": {
+ "margin": [ "top", "bottom" ],
+ "blockGap": true
+ },
+ "__experimentalBorder": {
+ "color": true,
+ "radius": true,
+ "style": true,
+ "width": true,
+ "__experimentalDefaultControls": {
+ "color": true,
+ "radius": true,
+ "style": true,
+ "width": true
+ }
+ },
+ "shadow": true,
+ "layout": {
+ "allowEditing": false
+ },
+ "typography": {
+ "fontSize": true,
+ "lineHeight": true,
+ "__experimentalFontFamily": true,
+ "__experimentalFontWeight": true,
+ "__experimentalFontStyle": true,
+ "__experimentalTextTransform": true,
+ "__experimentalTextDecoration": true,
+ "__experimentalLetterSpacing": true,
+ "__experimentalDefaultControls": {
+ "fontSize": true
+ }
+ },
+ "contentRole": true
+ },
+ "attributes": {
+ "openByDefault": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "providesContext": {
+ "core/accordion-open-by-default": "openByDefault"
+ },
+ "textdomain": "default",
+ "style": "wp-block-accordion-item"
+}
diff --git a/src/wp-includes/blocks/accordion-panel/block.json b/src/wp-includes/blocks/accordion-panel/block.json
new file mode 100644
index 0000000000000..b868ac8019b0d
--- /dev/null
+++ b/src/wp-includes/blocks/accordion-panel/block.json
@@ -0,0 +1,68 @@
+{
+ "$schema": "https://schemas.wp.org/trunk/block.json",
+ "apiVersion": 3,
+ "name": "core/accordion-panel",
+ "title": "Accordion Panel",
+ "category": "design",
+ "description": "Contains the hidden or revealed content beneath the heading.",
+ "parent": [ "core/accordion-item" ],
+ "usesContext": [ "core/accordion-open-by-default" ],
+ "supports": {
+ "html": false,
+ "color": {
+ "background": true,
+ "gradients": true
+ },
+ "interactivity": true,
+ "spacing": {
+ "padding": true,
+ "blockGap": true,
+ "__experimentalDefaultControls": {
+ "padding": true,
+ "blockGap": true
+ }
+ },
+ "__experimentalBorder": {
+ "color": true,
+ "radius": true,
+ "style": true,
+ "width": true,
+ "__experimentalDefaultControls": {
+ "color": true,
+ "radius": true,
+ "style": true,
+ "width": true
+ }
+ },
+ "typography": {
+ "fontSize": true,
+ "lineHeight": true,
+ "__experimentalFontFamily": true,
+ "__experimentalFontWeight": true,
+ "__experimentalFontStyle": true,
+ "__experimentalTextTransform": true,
+ "__experimentalTextDecoration": true,
+ "__experimentalLetterSpacing": true,
+ "__experimentalDefaultControls": {
+ "fontSize": true
+ }
+ },
+ "shadow": true,
+ "layout": {
+ "allowEditing": false
+ },
+ "visibility": false,
+ "contentRole": true,
+ "allowedBlocks": true,
+ "lock": false
+ },
+ "attributes": {
+ "templateLock": {
+ "type": [ "string", "boolean" ],
+ "enum": [ "all", "insert", "contentOnly", false ],
+ "default": false
+ }
+ },
+ "textdomain": "default",
+ "style": "wp-block-accordion-panel"
+}
diff --git a/src/wp-includes/blocks/accordion.php b/src/wp-includes/blocks/accordion.php
new file mode 100644
index 0000000000000..537904a6e402d
--- /dev/null
+++ b/src/wp-includes/blocks/accordion.php
@@ -0,0 +1,45 @@
+next_tag( array( 'class_name' => 'wp-block-accordion' ) ) ) {
+ $p->set_attribute( 'data-wp-interactive', 'core/accordion' );
+ $p->set_attribute( 'data-wp-context', '{ "autoclose": ' . $autoclose . ', "accordionItems": [] }' );
+
+ // Only modify content if directives have been set.
+ $content = $p->get_updated_html();
+ }
+
+ return $content;
+}
+
+/**
+ * Registers the `core/accordion` block on server.
+ *
+ * @since 6.9.0
+ */
+function register_block_core_accordion() {
+ register_block_type_from_metadata(
+ __DIR__ . '/accordion',
+ array(
+ 'render_callback' => 'render_block_core_accordion',
+ )
+ );
+}
+add_action( 'init', 'register_block_core_accordion' );
diff --git a/src/wp-includes/blocks/accordion/block.json b/src/wp-includes/blocks/accordion/block.json
new file mode 100644
index 0000000000000..69923748a553f
--- /dev/null
+++ b/src/wp-includes/blocks/accordion/block.json
@@ -0,0 +1,90 @@
+{
+ "$schema": "https://schemas.wp.org/trunk/block.json",
+ "apiVersion": 3,
+ "name": "core/accordion",
+ "title": "Accordion",
+ "category": "design",
+ "description": "Displays a foldable layout that groups content in collapsible sections.",
+ "example": {},
+ "supports": {
+ "anchor": true,
+ "html": false,
+ "align": [ "wide", "full" ],
+ "background": {
+ "backgroundImage": true,
+ "backgroundSize": true,
+ "__experimentalDefaultControls": {
+ "backgroundImage": true
+ }
+ },
+ "color": {
+ "background": true,
+ "gradients": true
+ },
+ "__experimentalBorder": {
+ "color": true,
+ "radius": true,
+ "style": true,
+ "width": true,
+ "__experimentalDefaultControls": {
+ "color": true,
+ "radius": true,
+ "style": true,
+ "width": true
+ }
+ },
+ "spacing": {
+ "padding": true,
+ "margin": [ "top", "bottom" ],
+ "blockGap": true
+ },
+ "shadow": true,
+ "layout": true,
+ "ariaLabel": true,
+ "interactivity": true,
+ "typography": {
+ "fontSize": true,
+ "lineHeight": true,
+ "__experimentalFontFamily": true,
+ "__experimentalFontWeight": true,
+ "__experimentalFontStyle": true,
+ "__experimentalTextTransform": true,
+ "__experimentalTextDecoration": true,
+ "__experimentalLetterSpacing": true,
+ "__experimentalDefaultControls": {
+ "fontSize": true
+ }
+ },
+ "contentRole": true,
+ "listView": true
+ },
+ "attributes": {
+ "iconPosition": {
+ "type": "string",
+ "default": "right"
+ },
+ "showIcon": {
+ "type": "boolean",
+ "default": true
+ },
+ "autoclose": {
+ "type": "boolean",
+ "default": false
+ },
+ "headingLevel": {
+ "type": "number",
+ "default": 3
+ },
+ "levelOptions": {
+ "type": "array"
+ }
+ },
+ "providesContext": {
+ "core/accordion-icon-position": "iconPosition",
+ "core/accordion-show-icon": "showIcon",
+ "core/accordion-heading-level": "headingLevel"
+ },
+ "allowedBlocks": [ "core/accordion-item" ],
+ "textdomain": "default",
+ "viewScriptModule": "@wordpress/block-library/accordion/view"
+}
diff --git a/src/wp-includes/blocks/archives.php b/src/wp-includes/blocks/archives.php
new file mode 100644
index 0000000000000..cead720f7fb80
--- /dev/null
+++ b/src/wp-includes/blocks/archives.php
@@ -0,0 +1,174 @@
+ $type,
+ 'format' => 'option',
+ 'show_post_count' => $show_post_count,
+ )
+ );
+
+ $dropdown_args['echo'] = 0;
+
+ $archives = wp_get_archives( $dropdown_args );
+
+ $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) );
+
+ switch ( $dropdown_args['type'] ) {
+ case 'yearly':
+ $label = __( 'Select Year' );
+ break;
+ case 'monthly':
+ $label = __( 'Select Month' );
+ break;
+ case 'daily':
+ $label = __( 'Select Day' );
+ break;
+ case 'weekly':
+ $label = __( 'Select Week' );
+ break;
+ default:
+ $label = __( 'Select Post' );
+ break;
+ }
+
+ $show_label = empty( $attributes['showLabel'] ) ? ' screen-reader-text' : '';
+
+ $block_content = '
+ ';
+
+ // Inject the dropdown script immediately after the select dropdown.
+ $block_content .= block_core_archives_build_dropdown_script( $dropdown_id );
+
+ return sprintf(
+ '
%2$s
',
+ $wrapper_attributes,
+ $block_content
+ );
+ }
+
+ /** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
+ $archives_args = apply_filters(
+ 'widget_archives_args',
+ array(
+ 'type' => $type,
+ 'show_post_count' => $show_post_count,
+ )
+ );
+
+ $archives_args['echo'] = 0;
+
+ $archives = wp_get_archives( $archives_args );
+
+ $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) );
+
+ if ( empty( $archives ) ) {
+ return sprintf(
+ '%2$s
',
+ $wrapper_attributes,
+ __( 'No archives to show.' )
+ );
+ }
+
+ return sprintf(
+ '',
+ $wrapper_attributes,
+ $archives
+ );
+}
+
+/**
+ * Generates the inline script for an archives dropdown field.
+ *
+ * @since 6.9.0
+ *
+ * @param string $dropdown_id ID of the dropdown field.
+ *
+ * @return string Returns the dropdown onChange redirection script.
+ */
+function block_core_archives_build_dropdown_script( $dropdown_id ) {
+ ob_start();
+
+ $exports = array( $dropdown_id, home_url() );
+ ?>
+
+ ', '' ), '', ob_get_clean() ) ) .
+ "\n//# sourceURL=" . rawurlencode( __FUNCTION__ )
+ );
+}
+
+/**
+ * Register archives block.
+ *
+ * @since 5.0.0
+ */
+function register_block_core_archives() {
+ register_block_type_from_metadata(
+ __DIR__ . '/archives',
+ array(
+ 'render_callback' => 'render_block_core_archives',
+ )
+ );
+}
+add_action( 'init', 'register_block_core_archives' );
diff --git a/src/wp-includes/blocks/archives/block.json b/src/wp-includes/blocks/archives/block.json
new file mode 100644
index 0000000000000..c689b34ba9d24
--- /dev/null
+++ b/src/wp-includes/blocks/archives/block.json
@@ -0,0 +1,71 @@
+{
+ "$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": {
+ "displayAsDropdown": {
+ "type": "boolean",
+ "default": false
+ },
+ "showLabel": {
+ "type": "boolean",
+ "default": true
+ },
+ "showPostCounts": {
+ "type": "boolean",
+ "default": false
+ },
+ "type": {
+ "type": "string",
+ "default": "monthly"
+ }
+ },
+ "supports": {
+ "anchor": true,
+ "align": true,
+ "__experimentalBorder": {
+ "radius": true,
+ "color": true,
+ "width": true,
+ "style": true
+ },
+ "html": false,
+ "spacing": {
+ "margin": true,
+ "padding": true,
+ "__experimentalDefaultControls": {
+ "margin": false,
+ "padding": false
+ }
+ },
+ "typography": {
+ "fontSize": true,
+ "lineHeight": true,
+ "__experimentalFontFamily": true,
+ "__experimentalFontWeight": true,
+ "__experimentalFontStyle": true,
+ "__experimentalTextTransform": true,
+ "__experimentalTextDecoration": true,
+ "__experimentalLetterSpacing": true,
+ "__experimentalDefaultControls": {
+ "fontSize": true
+ }
+ },
+ "color": {
+ "gradients": true,
+ "link": true,
+ "__experimentalDefaultControls": {
+ "background": true,
+ "text": true,
+ "link": true
+ }
+ },
+ "interactivity": {
+ "clientNavigation": true
+ }
+ }
+}
diff --git a/src/wp-includes/blocks/audio/block.json b/src/wp-includes/blocks/audio/block.json
new file mode 100644
index 0000000000000..9b77efee23cce
--- /dev/null
+++ b/src/wp-includes/blocks/audio/block.json
@@ -0,0 +1,68 @@
+{
+ "$schema": "https://schemas.wp.org/trunk/block.json",
+ "apiVersion": 3,
+ "name": "core/audio",
+ "title": "Audio",
+ "category": "media",
+ "description": "Embed a simple audio player.",
+ "keywords": [ "music", "sound", "podcast", "recording" ],
+ "textdomain": "default",
+ "attributes": {
+ "blob": {
+ "type": "string",
+ "role": "local"
+ },
+ "src": {
+ "type": "string",
+ "source": "attribute",
+ "selector": "audio",
+ "attribute": "src",
+ "role": "content"
+ },
+ "caption": {
+ "type": "rich-text",
+ "source": "rich-text",
+ "selector": "figcaption",
+ "role": "content"
+ },
+ "id": {
+ "type": "number",
+ "role": "content"
+ },
+ "autoplay": {
+ "type": "boolean",
+ "source": "attribute",
+ "selector": "audio",
+ "attribute": "autoplay"
+ },
+ "loop": {
+ "type": "boolean",
+ "source": "attribute",
+ "selector": "audio",
+ "attribute": "loop"
+ },
+ "preload": {
+ "type": "string",
+ "source": "attribute",
+ "selector": "audio",
+ "attribute": "preload"
+ }
+ },
+ "supports": {
+ "anchor": true,
+ "align": true,
+ "spacing": {
+ "margin": true,
+ "padding": true,
+ "__experimentalDefaultControls": {
+ "margin": false,
+ "padding": false
+ }
+ },
+ "interactivity": {
+ "clientNavigation": true
+ }
+ },
+ "editorStyle": "wp-block-audio-editor",
+ "style": "wp-block-audio"
+}
diff --git a/src/wp-includes/blocks/avatar.php b/src/wp-includes/blocks/avatar.php
new file mode 100644
index 0000000000000..7f73370973d42
--- /dev/null
+++ b/src/wp-includes/blocks/avatar.php
@@ -0,0 +1,166 @@
+context['commentId'] ) ) {
+ if ( isset( $attributes['userId'] ) ) {
+ $author_id = $attributes['userId'];
+ } elseif ( isset( $block->context['postId'] ) ) {
+ $author_id = get_post_field( 'post_author', $block->context['postId'] );
+ } else {
+ $author_id = get_query_var( 'author' );
+ }
+
+ if ( empty( $author_id ) ) {
+ return '';
+ }
+
+ $author_name = get_the_author_meta( 'display_name', $author_id );
+ // translators: %s: Author name.
+ $alt = sprintf( __( '%s Avatar' ), $author_name );
+ $avatar_block = get_avatar(
+ $author_id,
+ $size,
+ '',
+ $alt,
+ array(
+ 'extra_attr' => $image_styles,
+ 'class' => $image_classes,
+ )
+ );
+ if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) {
+ $label = '';
+ if ( '_blank' === $attributes['linkTarget'] ) {
+ // translators: %s is the Author name.
+ $label = 'aria-label="' . esc_attr( sprintf( __( '(%s author archive, opens in a new tab)' ), $author_name ) ) . '"';
+ }
+ // translators: 1: Author archive link. 2: Link target. %3$s Aria label. %4$s Avatar image.
+ $avatar_block = sprintf( '%4$s', esc_url( get_author_posts_url( $author_id ) ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block );
+ }
+ return sprintf( '%2s
', $wrapper_attributes, $avatar_block );
+ }
+ $comment = get_comment( $block->context['commentId'] );
+ if ( ! $comment ) {
+ return '';
+ }
+ /* translators: %s: Author name. */
+ $alt = sprintf( __( '%s Avatar' ), $comment->comment_author );
+ $avatar_block = get_avatar(
+ $comment,
+ $size,
+ '',
+ $alt,
+ array(
+ 'extra_attr' => $image_styles,
+ 'class' => $image_classes,
+ )
+ );
+ if ( isset( $attributes['isLink'] ) && $attributes['isLink'] && isset( $comment->comment_author_url ) && '' !== $comment->comment_author_url ) {
+ $label = '';
+ if ( '_blank' === $attributes['linkTarget'] ) {
+ // translators: %s: Comment author name.
+ $label = 'aria-label="' . esc_attr( sprintf( __( '(%s website link, opens in a new tab)' ), $comment->comment_author ) ) . '"';
+ }
+ $avatar_block = sprintf( '%4$s', esc_url( $comment->comment_author_url ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block );
+ }
+ return sprintf( '%2s
', $wrapper_attributes, $avatar_block );
+}
+
+/**
+ * Generates class names and styles to apply the border support styles for
+ * the Avatar block.
+ *
+ * @since 6.3.0
+ *
+ * @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 = $attributes['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 = $attributes['style']['border'][ $side ] ?? null;
+ $border_styles[ $side ] = array(
+ 'color' => $border['color'] ?? null,
+ 'style' => $border['style'] ?? null,
+ '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.
+ *
+ * @since 6.0.0
+ */
+function register_block_core_avatar() {
+ register_block_type_from_metadata(
+ __DIR__ . '/avatar',
+ array(
+ 'render_callback' => 'render_block_core_avatar',
+ )
+ );
+}
+add_action( 'init', 'register_block_core_avatar' );
diff --git a/src/wp-includes/blocks/avatar/block.json b/src/wp-includes/blocks/avatar/block.json
new file mode 100644
index 0000000000000..0cb92d81865c7
--- /dev/null
+++ b/src/wp-includes/blocks/avatar/block.json
@@ -0,0 +1,69 @@
+{
+ "$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": {
+ "userId": {
+ "type": "number"
+ },
+ "size": {
+ "type": "number",
+ "default": 96
+ },
+ "isLink": {
+ "type": "boolean",
+ "default": false
+ },
+ "linkTarget": {
+ "type": "string",
+ "default": "_self"
+ }
+ },
+ "usesContext": [ "postType", "postId", "commentId" ],
+ "supports": {
+ "anchor": true,
+ "html": false,
+ "align": true,
+ "alignWide": false,
+ "spacing": {
+ "margin": true,
+ "padding": true,
+ "__experimentalDefaultControls": {
+ "margin": false,
+ "padding": false
+ }
+ },
+ "__experimentalBorder": {
+ "__experimentalSkipSerialization": true,
+ "radius": true,
+ "width": true,
+ "color": true,
+ "style": true,
+ "__experimentalDefaultControls": {
+ "radius": true
+ }
+ },
+ "color": {
+ "text": false,
+ "background": false
+ },
+ "filter": {
+ "duotone": true
+ },
+ "interactivity": {
+ "clientNavigation": true
+ }
+ },
+ "selectors": {
+ "border": ".wp-block-avatar img",
+ "filter": {
+ "duotone": ".wp-block-avatar img"
+ }
+ },
+ "editorStyle": "wp-block-avatar-editor",
+ "style": "wp-block-avatar"
+}
diff --git a/src/wp-includes/blocks/block.php b/src/wp-includes/blocks/block.php
new file mode 100644
index 0000000000000..f09d5367a9c89
--- /dev/null
+++ b/src/wp-includes/blocks/block.php
@@ -0,0 +1,131 @@
+post_type ) {
+ return '';
+ }
+
+ if ( isset( $seen_refs[ $attributes['ref'] ] ) ) {
+ // WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent
+ // is set in `wp_debug_mode()`.
+ $is_debug = WP_DEBUG && WP_DEBUG_DISPLAY;
+
+ return $is_debug ?
+ // translators: Visible only in the front end, this warning takes the place of a faulty block.
+ __( '[block rendering halted]' ) :
+ '';
+ }
+
+ if ( 'publish' !== $reusable_block->post_status || ! empty( $reusable_block->post_password ) ) {
+ return '';
+ }
+
+ $seen_refs[ $attributes['ref'] ] = true;
+
+ // Handle embeds for reusable blocks.
+ global $wp_embed;
+ $content = $wp_embed->run_shortcode( $reusable_block->post_content );
+ $content = $wp_embed->autoembed( $content );
+
+ // Back compat.
+ // For blocks that have not been migrated in the editor, add some back compat
+ // so that front-end rendering continues to work.
+
+ // This matches the `v2` deprecation. Removes the inner `values` property
+ // from every item.
+ if ( isset( $attributes['content'] ) ) {
+ foreach ( $attributes['content'] as &$content_data ) {
+ if ( isset( $content_data['values'] ) ) {
+ $is_assoc_array = is_array( $content_data['values'] ) && ! wp_is_numeric_array( $content_data['values'] );
+
+ if ( $is_assoc_array ) {
+ $content_data = $content_data['values'];
+ }
+ }
+ }
+ }
+
+ // This matches the `v1` deprecation. Rename `overrides` to `content`.
+ if ( isset( $attributes['overrides'] ) && ! isset( $attributes['content'] ) ) {
+ $attributes['content'] = $attributes['overrides'];
+ }
+
+ // Apply Block Hooks.
+ $content = apply_block_hooks_to_content_from_post_object( $content, $reusable_block );
+
+ /**
+ * We attach the blocks from $content as inner blocks to the Synced Pattern block instance.
+ * This ensures that block context available to the Synced Pattern block instance is provided to
+ * those blocks.
+ */
+ $block_instance->parsed_block['innerBlocks'] = parse_blocks( $content );
+ $block_instance->parsed_block['innerContent'] = array_fill( 0, count( $block_instance->parsed_block['innerBlocks'] ), null );
+ if ( method_exists( $block_instance, 'refresh_context_dependents' ) ) {
+ // WP_Block::refresh_context_dependents() was introduced in WordPress 6.8.
+ $block_instance->refresh_context_dependents();
+ } else {
+ // This branch can be removed once Gutenberg requires WordPress 6.8 or later.
+ if ( ! class_exists( 'WP_Block_Cloner' ) ) {
+ // phpcs:ignore Gutenberg.Commenting.SinceTag.MissingClassSinceTag
+ class WP_Block_Cloner extends WP_Block {
+ /**
+ * Static methods of subclasses have access to protected properties
+ * of instances of the parent class.
+ * In this case, this gives us access to `available_context` and `registry`.
+ */
+ // phpcs:ignore Gutenberg.Commenting.SinceTag.MissingMethodSinceTag
+ public static function clone_instance( $instance ) {
+ return new WP_Block(
+ $instance->parsed_block,
+ $instance->available_context,
+ $instance->registry
+ );
+ }
+ }
+ }
+ $block_instance = WP_Block_Cloner::clone_instance( $block_instance );
+ }
+
+ $content = $block_instance->render( array( 'dynamic' => false ) );
+ unset( $seen_refs[ $attributes['ref'] ] );
+
+ return $content;
+}
+
+/**
+ * Registers the `core/block` block.
+ *
+ * @since 5.3.0
+ */
+function register_block_core_block() {
+ register_block_type_from_metadata(
+ __DIR__ . '/block',
+ array(
+ 'render_callback' => 'render_block_core_block',
+ )
+ );
+}
+add_action( 'init', 'register_block_core_block' );
diff --git a/src/wp-includes/blocks/block/block.json b/src/wp-includes/blocks/block/block.json
new file mode 100644
index 0000000000000..8d2b8f6f3b1bc
--- /dev/null
+++ b/src/wp-includes/blocks/block/block.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "https://schemas.wp.org/trunk/block.json",
+ "apiVersion": 3,
+ "name": "core/block",
+ "title": "Pattern",
+ "category": "reusable",
+ "description": "Reuse this design across your site.",
+ "keywords": [ "reusable" ],
+ "textdomain": "default",
+ "attributes": {
+ "ref": {
+ "type": "number"
+ },
+ "content": {
+ "type": "object",
+ "default": {}
+ }
+ },
+ "providesContext": {
+ "pattern/overrides": "content"
+ },
+ "supports": {
+ "customClassName": false,
+ "html": false,
+ "inserter": false,
+ "renaming": false,
+ "interactivity": {
+ "clientNavigation": true
+ },
+ "customCSS": false
+ }
+}
diff --git a/src/wp-includes/blocks/blocks-json.php b/src/wp-includes/blocks/blocks-json.php
new file mode 100644
index 0000000000000..b486c83dfb2ca
--- /dev/null
+++ b/src/wp-includes/blocks/blocks-json.php
@@ -0,0 +1,8553 @@
+ array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/accordion',
+ 'title' => 'Accordion',
+ 'category' => 'design',
+ 'description' => 'Displays a foldable layout that groups content in collapsible sections.',
+ 'example' => array(
+
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'background' => array(
+ 'backgroundImage' => true,
+ 'backgroundSize' => true,
+ '__experimentalDefaultControls' => array(
+ 'backgroundImage' => true
+ )
+ ),
+ 'color' => array(
+ 'background' => true,
+ 'gradients' => true
+ ),
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ )
+ ),
+ 'spacing' => array(
+ 'padding' => true,
+ 'margin' => array(
+ 'top',
+ 'bottom'
+ ),
+ 'blockGap' => true
+ ),
+ 'shadow' => true,
+ 'layout' => true,
+ 'ariaLabel' => true,
+ 'interactivity' => true,
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'contentRole' => true,
+ 'listView' => true
+ ),
+ 'attributes' => array(
+ 'iconPosition' => array(
+ 'type' => 'string',
+ 'default' => 'right'
+ ),
+ 'showIcon' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'autoclose' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'headingLevel' => array(
+ 'type' => 'number',
+ 'default' => 3
+ ),
+ 'levelOptions' => array(
+ 'type' => 'array'
+ )
+ ),
+ 'providesContext' => array(
+ 'core/accordion-icon-position' => 'iconPosition',
+ 'core/accordion-show-icon' => 'showIcon',
+ 'core/accordion-heading-level' => 'headingLevel'
+ ),
+ 'allowedBlocks' => array(
+ 'core/accordion-item'
+ ),
+ 'textdomain' => 'default',
+ 'viewScriptModule' => '@wordpress/block-library/accordion/view'
+ ),
+ 'accordion-heading' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/accordion-heading',
+ 'title' => 'Accordion Heading',
+ 'category' => 'design',
+ 'description' => 'Displays a heading that toggles the accordion panel.',
+ 'parent' => array(
+ 'core/accordion-item'
+ ),
+ 'usesContext' => array(
+ 'core/accordion-icon-position',
+ 'core/accordion-show-icon',
+ 'core/accordion-heading-level'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'color' => array(
+ 'background' => true,
+ 'gradients' => true
+ ),
+ 'align' => false,
+ 'interactivity' => true,
+ 'spacing' => array(
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'padding' => true
+ ),
+ '__experimentalSkipSerialization' => true,
+ '__experimentalSelector' => '.wp-block-accordion-heading__toggle'
+ ),
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ )
+ ),
+ 'typography' => array(
+ '__experimentalSkipSerialization' => array(
+ 'textDecoration',
+ 'letterSpacing'
+ ),
+ 'fontSize' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true,
+ 'fontFamily' => true
+ )
+ ),
+ 'shadow' => true,
+ 'visibility' => false,
+ 'lock' => false
+ ),
+ 'selectors' => array(
+ 'typography' => array(
+ 'letterSpacing' => '.wp-block-accordion-heading .wp-block-accordion-heading__toggle-title',
+ 'textDecoration' => '.wp-block-accordion-heading .wp-block-accordion-heading__toggle-title'
+ )
+ ),
+ 'attributes' => array(
+ 'openByDefault' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'title' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => '.wp-block-accordion-heading__toggle-title',
+ 'role' => 'content'
+ ),
+ 'level' => array(
+ 'type' => 'number'
+ ),
+ 'iconPosition' => array(
+ 'type' => 'string',
+ 'enum' => array(
+ 'left',
+ 'right'
+ ),
+ 'default' => 'right'
+ ),
+ 'showIcon' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ )
+ ),
+ 'textdomain' => 'default'
+ ),
+ 'accordion-item' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/accordion-item',
+ 'title' => 'Accordion Item',
+ 'category' => 'design',
+ 'description' => 'Wraps the heading and panel in one unit.',
+ 'parent' => array(
+ 'core/accordion'
+ ),
+ 'allowedBlocks' => array(
+ 'core/accordion-heading',
+ 'core/accordion-panel'
+ ),
+ 'supports' => array(
+ 'html' => false,
+ 'color' => array(
+ 'background' => true,
+ 'gradients' => true
+ ),
+ 'interactivity' => true,
+ 'spacing' => array(
+ 'margin' => array(
+ 'top',
+ 'bottom'
+ ),
+ 'blockGap' => true
+ ),
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ )
+ ),
+ 'shadow' => true,
+ 'layout' => array(
+ 'allowEditing' => false
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'contentRole' => true
+ ),
+ 'attributes' => array(
+ 'openByDefault' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ )
+ ),
+ 'providesContext' => array(
+ 'core/accordion-open-by-default' => 'openByDefault'
+ ),
+ 'textdomain' => 'default',
+ 'style' => 'wp-block-accordion-item'
+ ),
+ 'accordion-panel' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/accordion-panel',
+ 'title' => 'Accordion Panel',
+ 'category' => 'design',
+ 'description' => 'Contains the hidden or revealed content beneath the heading.',
+ 'parent' => array(
+ 'core/accordion-item'
+ ),
+ 'usesContext' => array(
+ 'core/accordion-open-by-default'
+ ),
+ 'supports' => array(
+ 'html' => false,
+ 'color' => array(
+ 'background' => true,
+ 'gradients' => true
+ ),
+ 'interactivity' => true,
+ 'spacing' => array(
+ 'padding' => true,
+ '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
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'shadow' => true,
+ 'layout' => array(
+ 'allowEditing' => false
+ ),
+ 'visibility' => false,
+ 'contentRole' => true,
+ 'allowedBlocks' => true,
+ 'lock' => false
+ ),
+ 'attributes' => array(
+ 'templateLock' => array(
+ 'type' => array(
+ 'string',
+ 'boolean'
+ ),
+ 'enum' => array(
+ 'all',
+ 'insert',
+ 'contentOnly',
+ false
+ ),
+ 'default' => false
+ )
+ ),
+ 'textdomain' => 'default',
+ 'style' => 'wp-block-accordion-panel'
+ ),
+ 'archives' => 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(
+ 'anchor' => true,
+ 'align' => true,
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ ),
+ 'html' => false,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => 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,
+ 'link' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ )
+ ),
+ '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(
+ 'blob' => array(
+ 'type' => 'string',
+ 'role' => 'local'
+ ),
+ 'src' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'audio',
+ 'attribute' => 'src',
+ 'role' => 'content'
+ ),
+ 'caption' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'figcaption',
+ 'role' => 'content'
+ ),
+ 'id' => array(
+ 'type' => 'number',
+ 'role' => '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,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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(
+ 'anchor' => true,
+ 'html' => false,
+ 'align' => true,
+ 'alignWide' => false,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ '__experimentalBorder' => array(
+ '__experimentalSkipSerialization' => true,
+ 'radius' => true,
+ 'width' => true,
+ 'color' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true
+ )
+ ),
+ 'color' => array(
+ 'text' => false,
+ 'background' => false
+ ),
+ 'filter' => array(
+ 'duotone' => true
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'selectors' => array(
+ 'border' => '.wp-block-avatar img',
+ 'filter' => array(
+ 'duotone' => '.wp-block-avatar 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' => 'Reuse this design across your site.',
+ 'keywords' => array(
+ 'reusable'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'ref' => array(
+ 'type' => 'number'
+ ),
+ 'content' => array(
+ 'type' => 'object',
+ 'default' => array(
+
+ )
+ )
+ ),
+ 'providesContext' => array(
+ 'pattern/overrides' => 'content'
+ ),
+ 'supports' => array(
+ 'customClassName' => false,
+ 'html' => false,
+ 'inserter' => false,
+ 'renaming' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'customCSS' => false
+ )
+ ),
+ 'breadcrumbs' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/breadcrumbs',
+ 'title' => 'Breadcrumbs',
+ 'category' => 'theme',
+ 'description' => 'Display a breadcrumb trail showing the path to the current page.',
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'prefersTaxonomy' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'separator' => array(
+ 'type' => 'string',
+ 'default' => '/'
+ ),
+ 'showHomeItem' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'showCurrentItem' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'showOnHomePage' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ )
+ ),
+ 'usesContext' => array(
+ 'postId',
+ 'postType',
+ 'templateSlug'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => false,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'style' => 'wp-block-breadcrumbs'
+ ),
+ '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(
+ 'tagName' => array(
+ 'type' => 'string',
+ 'enum' => array(
+ 'a',
+ 'button'
+ ),
+ 'default' => 'a'
+ ),
+ 'type' => array(
+ 'type' => 'string',
+ 'default' => 'button'
+ ),
+ 'url' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'a',
+ 'attribute' => 'href',
+ 'role' => 'content'
+ ),
+ 'title' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'a,button',
+ 'attribute' => 'title',
+ 'role' => 'content'
+ ),
+ 'text' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'a,button',
+ 'role' => 'content'
+ ),
+ 'linkTarget' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'a',
+ 'attribute' => 'target',
+ 'role' => 'content'
+ ),
+ 'rel' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'a',
+ 'attribute' => 'rel',
+ 'role' => '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,
+ 'splitting' => true,
+ 'align' => false,
+ 'alignWide' => false,
+ 'color' => array(
+ '__experimentalSkipSerialization' => true,
+ 'gradients' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'typography' => array(
+ '__experimentalSkipSerialization' => array(
+ 'fontSize',
+ 'lineHeight',
+ 'textAlign',
+ 'fontFamily',
+ 'fontWeight',
+ 'fontStyle',
+ 'textTransform',
+ 'textDecoration',
+ 'letterSpacing'
+ ),
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalWritingMode' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'reusable' => false,
+ 'shadow' => array(
+ '__experimentalSkipSerialization' => 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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'styles' => array(
+ array(
+ 'name' => 'fill',
+ 'label' => 'Fill',
+ 'isDefault' => true
+ ),
+ array(
+ 'name' => 'outline',
+ 'label' => 'Outline'
+ )
+ ),
+ 'editorStyle' => 'wp-block-button-editor',
+ 'style' => 'wp-block-button',
+ 'selectors' => array(
+ 'root' => '.wp-block-button .wp-block-button__link',
+ 'typography' => array(
+ 'writingMode' => '.wp-block-button'
+ )
+ )
+ ),
+ 'buttons' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/buttons',
+ 'title' => 'Buttons',
+ 'category' => 'design',
+ 'allowedBlocks' => array(
+ 'core/button'
+ ),
+ '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,
+ 'color' => array(
+ 'gradients' => true,
+ 'text' => false,
+ '__experimentalDefaultControls' => array(
+ 'background' => true
+ )
+ ),
+ 'spacing' => array(
+ 'blockGap' => array(
+ 'horizontal',
+ 'vertical'
+ ),
+ 'padding' => 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
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ )
+ ),
+ 'layout' => array(
+ 'allowSwitching' => false,
+ 'allowInheriting' => false,
+ 'default' => array(
+ 'type' => 'flex'
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'listView' => true,
+ 'contentRole' => true
+ ),
+ '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(
+ 'anchor' => true,
+ 'align' => true,
+ 'html' => false,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'style' => 'wp-block-calendar'
+ ),
+ 'categories' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/categories',
+ 'title' => 'Terms List',
+ 'category' => 'widgets',
+ 'description' => 'Display a list of all terms of a given taxonomy.',
+ 'keywords' => array(
+ 'categories'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'taxonomy' => array(
+ 'type' => 'string',
+ 'default' => 'category'
+ ),
+ '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
+ ),
+ 'label' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ 'showLabel' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ )
+ ),
+ 'usesContext' => array(
+ 'enhancedPagination'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => true,
+ 'html' => false,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => 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,
+ 'link' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => 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' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'code',
+ '__unstablePreserveWhiteSpace' => true,
+ 'role' => 'content'
+ )
+ ),
+ '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,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ '__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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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'
+ ),
+ 'templateLock' => array(
+ 'type' => array(
+ 'string',
+ 'boolean'
+ ),
+ 'enum' => array(
+ 'all',
+ 'insert',
+ 'contentOnly',
+ false
+ )
+ )
+ ),
+ 'supports' => array(
+ '__experimentalOnEnter' => true,
+ 'anchor' => true,
+ 'reusable' => false,
+ 'html' => false,
+ 'color' => array(
+ 'gradients' => true,
+ 'heading' => true,
+ 'button' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'shadow' => true,
+ 'spacing' => array(
+ 'blockGap' => true,
+ 'padding' => 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
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'layout' => true,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'allowedBlocks' => true
+ )
+ ),
+ 'columns' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/columns',
+ 'title' => 'Columns',
+ 'category' => 'design',
+ 'allowedBlocks' => array(
+ 'core/column'
+ ),
+ '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,
+ 'heading' => true,
+ 'button' => 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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'shadow' => 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'
+ )
+ ),
+ 'usesContext' => array(
+ 'commentId'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-comment-author-name'
+ ),
+ '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'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'color' => array(
+ 'gradients' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'spacing' => array(
+ 'padding' => array(
+ 'horizontal',
+ 'vertical'
+ ),
+ '__experimentalDefaultControls' => array(
+ 'padding' => true
+ )
+ ),
+ 'html' => false
+ ),
+ 'style' => 'wp-block-comment-content'
+ ),
+ '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(
+ 'anchor' => 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,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-comment-date'
+ ),
+ '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'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ 'color' => array(
+ 'link' => true,
+ 'gradients' => true,
+ 'text' => false,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'link' => true
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'style' => 'wp-block-comment-edit-link'
+ ),
+ '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'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'color' => array(
+ 'gradients' => true,
+ 'link' => true,
+ 'text' => false,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'link' => true
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ ),
+ 'html' => false
+ ),
+ 'style' => 'wp-block-comment-reply-link'
+ ),
+ '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(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => 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(
+ 'anchor' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'html' => false,
+ 'color' => array(
+ 'gradients' => true,
+ 'heading' => 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
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => 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'
+ ),
+ 'allowedBlocks' => array(
+ 'core/comments-pagination-previous',
+ 'core/comments-pagination-numbers',
+ 'core/comments-pagination-next'
+ ),
+ 'description' => 'Displays a paginated navigation to next/previous set of comments, when applicable.',
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'paginationArrow' => array(
+ 'type' => 'string',
+ 'default' => 'none'
+ )
+ ),
+ 'example' => array(
+ 'attributes' => array(
+ 'paginationArrow' => 'none'
+ )
+ ),
+ 'providesContext' => array(
+ 'comments/paginationArrow' => 'paginationArrow'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'padding' => 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(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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(
+ 'showPostTitle' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'showCommentsCount' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'level' => array(
+ 'type' => 'number',
+ 'default' => 2
+ ),
+ 'levelOptions' => array(
+ 'type' => 'array'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalFontWeight' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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',
+ 'role' => 'content'
+ ),
+ 'useFeaturedImage' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'id' => array(
+ 'type' => 'number'
+ ),
+ 'alt' => array(
+ 'type' => 'string',
+ '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'
+ ),
+ 'isUserOverlayColor' => array(
+ 'type' => 'boolean'
+ ),
+ '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
+ ),
+ 'templateLock' => array(
+ 'type' => array(
+ 'string',
+ 'boolean'
+ ),
+ 'enum' => array(
+ 'all',
+ 'insert',
+ 'contentOnly',
+ false
+ )
+ ),
+ 'tagName' => array(
+ 'type' => 'string',
+ 'default' => 'div'
+ ),
+ 'sizeSlug' => array(
+ 'type' => 'string'
+ ),
+ 'poster' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'video',
+ 'attribute' => 'poster'
+ )
+ ),
+ 'usesContext' => array(
+ 'postId',
+ 'postType'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => true,
+ 'html' => false,
+ 'shadow' => true,
+ '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(
+ 'heading' => true,
+ 'text' => true,
+ 'background' => false,
+ '__experimentalSkipSerialization' => array(
+ 'gradients'
+ ),
+ 'enableContrastChecker' => false
+ ),
+ 'dimensions' => array(
+ 'aspectRatio' => 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(
+ 'allowJustification' => false
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'filter' => array(
+ 'duotone' => true
+ ),
+ 'allowedBlocks' => true
+ ),
+ 'selectors' => array(
+ 'filter' => array(
+ 'duotone' => '.wp-block-cover > .wp-block-cover__image-background, .wp-block-cover > .wp-block-cover__video-background'
+ )
+ ),
+ '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(
+ 'summary',
+ 'toggle',
+ 'disclosure'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'showContent' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'summary' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'summary',
+ 'role' => 'content'
+ ),
+ 'name' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'attribute' => 'name',
+ 'selector' => '.wp-block-details'
+ ),
+ 'placeholder' => array(
+ 'type' => 'string'
+ )
+ ),
+ 'supports' => array(
+ '__experimentalOnEnter' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'anchor' => true,
+ '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,
+ 'blockGap' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'layout' => array(
+ 'allowEditing' => false
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'allowedBlocks' => 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',
+ 'role' => 'content'
+ ),
+ 'caption' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'figcaption',
+ 'role' => 'content'
+ ),
+ 'type' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ 'providerNameSlug' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ 'allowResponsive' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'responsive' => array(
+ 'type' => 'boolean',
+ 'default' => false,
+ 'role' => 'content'
+ ),
+ 'previewable' => array(
+ 'type' => 'boolean',
+ 'default' => true,
+ 'role' => 'content'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => true,
+ 'spacing' => array(
+ 'margin' => true
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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'
+ ),
+ 'blob' => array(
+ 'type' => 'string',
+ 'role' => 'local'
+ ),
+ 'href' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ 'fileId' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'a:not([download])',
+ 'attribute' => 'id'
+ ),
+ 'fileName' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'a:not([download])',
+ 'role' => 'content'
+ ),
+ 'textLinkHref' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'a:not([download])',
+ 'attribute' => 'href',
+ 'role' => 'content'
+ ),
+ 'textLinkTarget' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'a:not([download])',
+ 'attribute' => 'target'
+ ),
+ 'showDownloadButton' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'downloadButtonText' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'a[download]',
+ 'role' => 'content'
+ ),
+ 'displayPreview' => array(
+ 'type' => 'boolean'
+ ),
+ 'previewHeight' => array(
+ 'type' => 'number',
+ 'default' => 600
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => true,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'link' => true,
+ 'text' => false,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'link' => true
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'interactivity' => true
+ ),
+ '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' => 'Display footnotes added to the page.',
+ 'keywords' => array(
+ 'references'
+ ),
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'postId',
+ 'postType'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => false,
+ 'color' => false,
+ 'width' => false,
+ 'style' => false
+ )
+ ),
+ 'color' => array(
+ 'background' => true,
+ 'link' => true,
+ 'text' => true,
+ '__experimentalDefaultControls' => array(
+ 'link' => true,
+ 'text' => true
+ )
+ ),
+ 'html' => false,
+ 'multiple' => false,
+ 'reusable' => false,
+ 'inserter' => false,
+ '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,
+ '__experimentalWritingMode' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ '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,
+ 'lock' => false,
+ 'reusable' => false,
+ 'renaming' => false,
+ 'visibility' => false,
+ 'customCSS' => 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',
+ 'usesContext' => array(
+ 'galleryId'
+ ),
+ 'allowedBlocks' => array(
+ 'core/image'
+ ),
+ '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' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => '.blocks-gallery-item__caption'
+ )
+ )
+ ),
+ 'ids' => array(
+ 'type' => 'array',
+ 'items' => array(
+ 'type' => 'number'
+ ),
+ 'default' => array(
+
+ )
+ ),
+ 'navigationButtonType' => array(
+ 'type' => 'string',
+ 'default' => 'icon',
+ 'enum' => array(
+ 'icon',
+ 'text',
+ 'both'
+ )
+ ),
+ 'shortCodeTransforms' => array(
+ 'type' => 'array',
+ 'items' => array(
+ 'type' => 'object'
+ ),
+ 'default' => array(
+
+ )
+ ),
+ 'columns' => array(
+ 'type' => 'number',
+ 'minimum' => 1,
+ 'maximum' => 8
+ ),
+ 'caption' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => '.blocks-gallery-caption',
+ 'role' => 'content'
+ ),
+ 'imageCrop' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'randomOrder' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ '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
+ ),
+ 'aspectRatio' => array(
+ 'type' => 'string',
+ 'default' => 'auto'
+ )
+ ),
+ 'providesContext' => array(
+ 'allowResize' => 'allowResize',
+ 'imageCrop' => 'imageCrop',
+ 'fixedHeight' => 'fixedHeight',
+ 'navigationButtonType' => 'navigationButtonType'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => true,
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'radius' => 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,
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'color' => array(
+ 'text' => false,
+ 'background' => true,
+ 'gradients' => true
+ ),
+ 'layout' => array(
+ 'allowSwitching' => false,
+ 'allowInheriting' => false,
+ 'allowEditing' => false,
+ 'default' => array(
+ 'type' => 'flex'
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'listView' => true
+ ),
+ '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
+ )
+ )
+ ),
+ 'supports' => array(
+ '__experimentalOnEnter' => true,
+ '__experimentalOnMerge' => true,
+ '__experimentalSettings' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'anchor' => true,
+ 'ariaLabel' => true,
+ 'html' => false,
+ 'background' => array(
+ 'backgroundImage' => true,
+ 'backgroundSize' => true,
+ '__experimentalDefaultControls' => array(
+ 'backgroundImage' => true
+ )
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'heading' => true,
+ 'button' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'shadow' => 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
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'allowedBlocks' => 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(
+ 'content' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'h1,h2,h3,h4,h5,h6',
+ 'role' => 'content'
+ ),
+ 'level' => array(
+ 'type' => 'number',
+ 'default' => 2
+ ),
+ 'levelOptions' => array(
+ 'type' => 'array'
+ ),
+ 'placeholder' => array(
+ 'type' => 'string'
+ )
+ ),
+ 'supports' => array(
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'anchor' => true,
+ 'className' => true,
+ 'splitting' => true,
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ ),
+ '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,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalWritingMode' => true,
+ 'fitText' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ '__unstablePasteTextInline' => true,
+ '__experimentalSlashInserter' => true,
+ 'interactivity' => array(
+ 'clientNavigation' => 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',
+ 'role' => 'content'
+ )
+ ),
+ 'usesContext' => array(
+ 'textColor',
+ 'customTextColor',
+ 'backgroundColor',
+ 'customBackgroundColor',
+ 'fontSize',
+ 'customFontSize',
+ 'style'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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',
+ 'role' => 'content'
+ )
+ ),
+ 'supports' => array(
+ 'customClassName' => false,
+ 'className' => false,
+ 'html' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'customCSS' => false
+ ),
+ 'editorStyle' => 'wp-block-html-editor'
+ ),
+ 'icon' => array(
+ 'apiVersion' => 3,
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'name' => 'core/icon',
+ 'title' => 'Icon',
+ 'category' => 'media',
+ 'description' => 'Insert an SVG icon.',
+ 'keywords' => array(
+ 'icon',
+ 'svg'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'icon' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'ariaLabel' => array(
+ '__experimentalSkipSerialization' => true
+ ),
+ 'align' => array(
+ 'left',
+ 'center',
+ 'right'
+ ),
+ 'html' => false,
+ 'color' => array(
+ 'background' => true,
+ 'text' => true,
+ '__experimentalSkipSerialization' => true
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true,
+ '__experimentalSkipSerialization' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => false,
+ 'radius' => false,
+ 'style' => false,
+ 'width' => false
+ )
+ ),
+ 'spacing' => array(
+ 'padding' => true,
+ 'margin' => true,
+ '__experimentalSkipSerialization' => array(
+ 'padding'
+ ),
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'dimensions' => array(
+ 'width' => true,
+ '__experimentalSkipSerialization' => array(
+ 'width'
+ ),
+ '__experimentalDefaultControls' => array(
+ 'width' => true
+ )
+ )
+ ),
+ 'selectors' => array(
+ 'root' => '.wp-block-icon',
+ 'color' => array(
+ 'root' => '.wp-block-icon svg'
+ ),
+ 'border' => array(
+ 'root' => '.wp-block-icon svg'
+ ),
+ 'spacing' => array(
+ 'padding' => '.wp-block-icon svg'
+ ),
+ 'dimensions' => array(
+ 'root' => '.wp-block-icon svg',
+ 'width' => '.wp-block-icon svg'
+ )
+ ),
+ 'style' => 'wp-block-icon',
+ 'editorStyle' => 'wp-block-icon-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',
+ 'navigationButtonType',
+ 'postId',
+ 'postType',
+ 'queryId',
+ 'galleryId'
+ ),
+ 'description' => 'Insert an image to make a visual statement.',
+ 'keywords' => array(
+ 'img',
+ 'photo',
+ 'picture'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'blob' => array(
+ 'type' => 'string',
+ 'role' => 'local'
+ ),
+ 'url' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'img',
+ 'attribute' => 'src',
+ 'role' => 'content'
+ ),
+ 'alt' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'img',
+ 'attribute' => 'alt',
+ 'default' => '',
+ 'role' => 'content'
+ ),
+ 'caption' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'figcaption',
+ 'role' => 'content'
+ ),
+ 'lightbox' => array(
+ 'type' => 'object',
+ 'enabled' => array(
+ 'type' => 'boolean'
+ )
+ ),
+ 'title' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'img',
+ 'attribute' => 'title',
+ 'role' => 'content'
+ ),
+ 'href' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'figure > a',
+ 'attribute' => 'href',
+ 'role' => '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',
+ 'role' => 'content'
+ ),
+ 'width' => array(
+ 'type' => 'string'
+ ),
+ 'height' => array(
+ 'type' => 'string'
+ ),
+ 'aspectRatio' => array(
+ 'type' => 'string'
+ ),
+ 'scale' => array(
+ 'type' => 'string'
+ ),
+ 'focalPoint' => array(
+ 'type' => 'object'
+ ),
+ 'sizeSlug' => array(
+ 'type' => 'string'
+ ),
+ 'linkDestination' => array(
+ 'type' => 'string'
+ ),
+ 'linkTarget' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'figure > a',
+ 'attribute' => 'target'
+ )
+ ),
+ 'supports' => array(
+ 'interactivity' => true,
+ 'align' => array(
+ 'left',
+ 'center',
+ 'right',
+ 'wide',
+ 'full'
+ ),
+ 'anchor' => true,
+ 'color' => array(
+ 'text' => false,
+ 'background' => false
+ ),
+ 'filter' => array(
+ 'duotone' => true
+ ),
+ 'spacing' => array(
+ 'margin' => true
+ ),
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'width' => true,
+ '__experimentalSkipSerialization' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'width' => true
+ )
+ ),
+ 'shadow' => array(
+ '__experimentalSkipSerialization' => true
+ )
+ ),
+ 'selectors' => array(
+ 'border' => '.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder',
+ 'shadow' => '.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
+ ),
+ 'displayContent' => array(
+ 'type' => 'string',
+ 'default' => 'excerpt',
+ 'enum' => array(
+ 'none',
+ 'excerpt',
+ 'full'
+ )
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ '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(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'editorStyle' => 'wp-block-latest-posts-editor',
+ 'style' => 'wp-block-latest-posts'
+ ),
+ 'legacy-widget' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/legacy-widget',
+ 'title' => 'Legacy Widget',
+ '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',
+ 'allowedBlocks' => array(
+ 'core/list-item'
+ ),
+ 'description' => 'An organized collection of items displayed in a specific order.',
+ 'keywords' => array(
+ 'bullet list',
+ 'ordered list',
+ 'numbered list'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'ordered' => array(
+ 'type' => 'boolean',
+ 'default' => false,
+ 'role' => 'content'
+ ),
+ 'values' => array(
+ 'type' => 'string',
+ 'source' => 'html',
+ 'selector' => 'ol,ul',
+ 'multiline' => 'li',
+ 'default' => '',
+ 'role' => 'content'
+ ),
+ 'type' => array(
+ 'type' => 'string'
+ ),
+ 'start' => array(
+ 'type' => 'number'
+ ),
+ 'reversed' => array(
+ 'type' => 'boolean'
+ ),
+ 'placeholder' => array(
+ 'type' => 'string'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ '__experimentalBorder' => 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
+ )
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ '__unstablePasteTextInline' => true,
+ '__experimentalOnMerge' => true,
+ '__experimentalSlashInserter' => true,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'listView' => true
+ ),
+ 'selectors' => array(
+ 'border' => '.wp-block-list:not(.wp-block-list .wp-block-list)'
+ ),
+ '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'
+ ),
+ 'allowedBlocks' => array(
+ 'core/list'
+ ),
+ 'description' => 'An individual item within a list.',
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'placeholder' => array(
+ 'type' => 'string'
+ ),
+ 'content' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'li',
+ 'role' => 'content'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'className' => false,
+ 'splitting' => true,
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'link' => true,
+ 'background' => true,
+ '__experimentalDefaultControls' => array(
+ 'text' => true
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'selectors' => array(
+ 'root' => '.wp-block-list > li',
+ 'border' => '.wp-block-list:not(.wp-block-list .wp-block-list) > li'
+ )
+ ),
+ '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
+ )
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'className' => true,
+ 'color' => array(
+ 'background' => true,
+ 'text' => false,
+ 'gradients' => true,
+ 'link' => true
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'style' => 'wp-block-loginout'
+ ),
+ 'math' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/math',
+ 'title' => 'Math',
+ 'category' => 'text',
+ 'description' => 'Display mathematical notation using LaTeX.',
+ 'keywords' => array(
+ 'equation',
+ 'formula',
+ 'latex',
+ 'mathematics'
+ ),
+ 'textdomain' => 'default',
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ )
+ ),
+ 'attributes' => array(
+ 'latex' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ 'mathML' => array(
+ 'type' => 'string',
+ 'source' => 'html',
+ 'selector' => 'math'
+ )
+ )
+ ),
+ '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' => '',
+ 'role' => 'content'
+ ),
+ 'mediaPosition' => array(
+ 'type' => 'string',
+ 'default' => 'left'
+ ),
+ 'mediaId' => array(
+ 'type' => 'number',
+ 'role' => 'content'
+ ),
+ 'mediaUrl' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'figure video,figure img',
+ 'attribute' => 'src',
+ 'role' => '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',
+ 'role' => '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',
+ 'role' => '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'
+ ),
+ 'useFeaturedImage' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ )
+ ),
+ 'usesContext' => array(
+ 'postId',
+ 'postType'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'html' => false,
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ )
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'heading' => 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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'allowedBlocks' => 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' => 'raw'
+ )
+ ),
+ 'supports' => array(
+ 'className' => false,
+ 'customClassName' => false,
+ 'inserter' => false,
+ 'html' => false,
+ 'lock' => false,
+ 'reusable' => false,
+ 'renaming' => false,
+ 'visibility' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'customCSS' => 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',
+ 'default' => '',
+ 'role' => 'content'
+ ),
+ 'noTeaser' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ )
+ ),
+ 'supports' => array(
+ 'customClassName' => false,
+ 'className' => false,
+ 'html' => false,
+ 'multiple' => false,
+ 'visibility' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'customCSS' => 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',
+ 'allowedBlocks' => array(
+ 'core/navigation-link',
+ 'core/search',
+ 'core/social-links',
+ 'core/page-list',
+ 'core/spacer',
+ 'core/home-link',
+ 'core/icon',
+ 'core/site-title',
+ 'core/site-logo',
+ 'core/navigation-submenu',
+ 'core/loginout',
+ 'core/buttons'
+ ),
+ '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
+ ),
+ 'submenuVisibility' => array(
+ 'type' => 'string',
+ 'enum' => array(
+ 'hover',
+ 'click',
+ 'always'
+ ),
+ 'default' => 'hover'
+ ),
+ 'overlayMenu' => array(
+ 'type' => 'string',
+ 'default' => 'mobile'
+ ),
+ 'overlay' => array(
+ 'type' => 'string'
+ ),
+ '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',
+ 'submenuVisibility' => 'submenuVisibility',
+ 'openSubmenusOnClick' => 'openSubmenusOnClick',
+ 'style' => 'style',
+ 'maxNestingLevel' => 'maxNestingLevel'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'ariaLabel' => true,
+ 'contentRole' => true,
+ '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'
+ )
+ ),
+ 'interactivity' => true,
+ 'renaming' => false
+ ),
+ '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'
+ ),
+ 'allowedBlocks' => array(
+ 'core/navigation-link',
+ 'core/navigation-submenu',
+ 'core/page-list'
+ ),
+ 'description' => 'Add a page, link, or another item to your navigation.',
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'label' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ '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',
+ 'role' => 'content'
+ ),
+ '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(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'renaming' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'editorStyle' => 'wp-block-navigation-link-editor',
+ 'style' => 'wp-block-navigation-link'
+ ),
+ 'navigation-overlay-close' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/navigation-overlay-close',
+ 'title' => 'Navigation Overlay Close',
+ 'category' => 'design',
+ 'description' => 'A customizable button to close overlays.',
+ 'keywords' => array(
+ 'close',
+ 'overlay',
+ 'navigation',
+ 'menu'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'displayMode' => array(
+ 'type' => 'string',
+ 'enum' => array(
+ 'icon',
+ 'text',
+ 'both'
+ ),
+ 'default' => 'icon'
+ ),
+ 'text' => array(
+ 'type' => 'string'
+ )
+ ),
+ 'supports' => array(
+ 'color' => array(
+ 'gradients' => false,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'spacing' => array(
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ '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-navigation-overlay-close'
+ ),
+ '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',
+ 'role' => 'content'
+ ),
+ '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',
+ 'role' => 'content'
+ ),
+ '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',
+ 'submenuVisibility',
+ 'style'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ '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(
+ 'anchor' => true,
+ 'customClassName' => false,
+ 'className' => false,
+ 'html' => false,
+ 'visibility' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'customCSS' => 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',
+ 'allowedBlocks' => array(
+ 'core/page-list-item'
+ ),
+ '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',
+ 'submenuVisibility'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'color' => array(
+ 'text' => true,
+ 'background' => true,
+ 'link' => true,
+ 'gradients' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true,
+ 'link' => true
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ ),
+ 'spacing' => array(
+ 'padding' => true,
+ 'margin' => true,
+ '__experimentalDefaultControls' => array(
+ 'padding' => false,
+ 'margin' => false
+ )
+ ),
+ 'contentRole' => 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',
+ 'submenuVisibility'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'reusable' => false,
+ 'html' => false,
+ 'lock' => false,
+ 'inserter' => false,
+ '__experimentalToolbar' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ '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(
+ 'content' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'p',
+ 'role' => 'content'
+ ),
+ 'dropCap' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'placeholder' => array(
+ 'type' => 'string'
+ ),
+ 'direction' => array(
+ 'type' => 'string',
+ 'enum' => array(
+ 'ltr',
+ 'rtl'
+ )
+ )
+ ),
+ 'supports' => array(
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'splitting' => true,
+ 'anchor' => true,
+ 'className' => false,
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ ),
+ '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,
+ 'textAlign' => true,
+ 'textColumns' => true,
+ 'textIndent' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalWritingMode' => true,
+ 'fitText' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ '__experimentalSelector' => 'p',
+ '__unstablePasteTextInline' => true,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'selectors' => array(
+ 'root' => 'p',
+ 'typography' => array(
+ 'textIndent' => '.wp-block-paragraph + .wp-block-paragraph'
+ )
+ ),
+ '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,
+ 'renaming' => false,
+ 'visibility' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ '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' => 'Author (deprecated)',
+ 'category' => 'theme',
+ 'description' => 'This block is deprecated. Please use the Avatar block, the Author Name block, and the Author Biography block instead.',
+ '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,
+ 'role' => 'content'
+ ),
+ 'linkTarget' => array(
+ 'type' => 'string',
+ 'default' => '_self',
+ 'role' => 'content'
+ )
+ ),
+ 'usesContext' => array(
+ 'postType',
+ 'postId',
+ 'queryId'
+ ),
+ 'supports' => array(
+ 'inserter' => false,
+ 'anchor' => 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
+ )
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'filter' => array(
+ 'duotone' => true
+ )
+ ),
+ 'selectors' => array(
+ 'filter' => array(
+ 'duotone' => '.wp-block-post-author .wp-block-post-author__avatar img'
+ )
+ ),
+ 'editorStyle' => 'wp-block-post-author-editor',
+ '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' => 'Author Biography',
+ 'category' => 'theme',
+ 'description' => 'The author biography.',
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'postType',
+ 'postId'
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-post-author-biography'
+ ),
+ 'post-author-name' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/post-author-name',
+ 'title' => 'Author Name',
+ 'category' => 'theme',
+ 'description' => 'The author name.',
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'isLink' => array(
+ 'type' => 'boolean',
+ 'default' => false,
+ 'role' => 'content'
+ ),
+ 'linkTarget' => array(
+ 'type' => 'string',
+ 'default' => '_self',
+ 'role' => 'content'
+ )
+ ),
+ 'usesContext' => array(
+ 'postType',
+ 'postId'
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-post-author-name'
+ ),
+ 'post-comments-count' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/post-comments-count',
+ 'title' => 'Comments Count',
+ 'category' => 'theme',
+ 'description' => 'Display a post\'s comments count.',
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'postId'
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ 'color' => array(
+ 'gradients' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'style' => 'wp-block-post-comments-count'
+ ),
+ 'post-comments-form' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/post-comments-form',
+ 'title' => 'Comments Form',
+ 'category' => 'theme',
+ 'description' => 'Display a post\'s comments form.',
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'postId',
+ 'postType'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ 'color' => array(
+ 'gradients' => true,
+ 'heading' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'editorStyle' => 'wp-block-post-comments-form-editor',
+ 'style' => array(
+ 'wp-block-post-comments-form',
+ 'wp-block-buttons',
+ 'wp-block-button'
+ ),
+ 'example' => array(
+ 'attributes' => array(
+ 'style' => array(
+ 'typography' => array(
+ 'textAlign' => 'center'
+ )
+ )
+ )
+ )
+ ),
+ 'post-comments-link' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/post-comments-link',
+ 'title' => 'Comments Link',
+ 'category' => 'theme',
+ 'description' => 'Displays the link to the current post comments.',
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'postType',
+ 'postId'
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ 'color' => array(
+ 'link' => true,
+ 'text' => false,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'link' => true
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-post-comments-link'
+ ),
+ 'post-content' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/post-content',
+ 'title' => 'Content',
+ 'category' => 'theme',
+ 'description' => 'Displays the contents of a post or page.',
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'postId',
+ 'postType',
+ 'queryId'
+ ),
+ 'attributes' => array(
+ 'tagName' => array(
+ 'type' => 'string',
+ 'default' => 'div'
+ )
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'html' => false,
+ 'layout' => true,
+ 'background' => array(
+ 'backgroundImage' => true,
+ 'backgroundSize' => true,
+ '__experimentalDefaultControls' => array(
+ 'backgroundImage' => true
+ )
+ ),
+ 'dimensions' => array(
+ 'minHeight' => true
+ ),
+ 'spacing' => array(
+ 'blockGap' => true,
+ 'padding' => true,
+ 'margin' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'heading' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => false,
+ 'text' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-post-content',
+ 'editorStyle' => 'wp-block-post-content-editor'
+ ),
+ 'post-date' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/post-date',
+ 'title' => 'Date',
+ 'category' => 'theme',
+ 'description' => 'Display a custom date.',
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'datetime' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ 'textAlign' => array(
+ 'type' => 'string'
+ ),
+ 'format' => array(
+ 'type' => 'string'
+ ),
+ 'isLink' => array(
+ 'type' => 'boolean',
+ 'default' => false,
+ 'role' => 'content'
+ )
+ ),
+ 'usesContext' => array(
+ 'postId',
+ 'postType',
+ 'queryId'
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => 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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => 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',
+ 'role' => 'content'
+ ),
+ 'showMoreOnNewLine' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'excerptLength' => array(
+ 'type' => 'number',
+ 'default' => 55
+ )
+ ),
+ 'usesContext' => array(
+ 'postId',
+ 'postType',
+ 'queryId'
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => 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,
+ 'textColumns' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => 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' => 'Featured Image',
+ 'category' => 'theme',
+ 'description' => 'Display a post\'s featured image.',
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'isLink' => array(
+ 'type' => 'boolean',
+ 'default' => false,
+ 'role' => 'content'
+ ),
+ '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' => '',
+ 'role' => 'content'
+ ),
+ 'linkTarget' => array(
+ 'type' => 'string',
+ 'default' => '_self',
+ 'role' => 'content'
+ ),
+ 'overlayColor' => array(
+ 'type' => 'string'
+ ),
+ 'customOverlayColor' => array(
+ 'type' => 'string'
+ ),
+ 'dimRatio' => array(
+ 'type' => 'number',
+ 'default' => 0
+ ),
+ 'gradient' => array(
+ 'type' => 'string'
+ ),
+ 'customGradient' => array(
+ 'type' => 'string'
+ ),
+ 'useFirstImageFromPost' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ )
+ ),
+ 'usesContext' => array(
+ 'postId',
+ 'postType',
+ 'queryId'
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'left',
+ 'right',
+ 'center',
+ 'wide',
+ 'full'
+ ),
+ 'color' => array(
+ 'text' => false,
+ 'background' => false
+ ),
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'width' => true,
+ '__experimentalSkipSerialization' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'width' => true
+ )
+ ),
+ 'filter' => array(
+ 'duotone' => true
+ ),
+ 'shadow' => array(
+ '__experimentalSkipSerialization' => true
+ ),
+ 'html' => false,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'selectors' => array(
+ 'border' => '.wp-block-post-featured-image img, .wp-block-post-featured-image .block-editor-media-placeholder, .wp-block-post-featured-image .wp-block-post-featured-image__overlay',
+ 'shadow' => '.wp-block-post-featured-image img, .wp-block-post-featured-image .components-placeholder',
+ 'filter' => array(
+ 'duotone' => '.wp-block-post-featured-image img, .wp-block-post-featured-image .wp-block-post-featured-image__placeholder, .wp-block-post-featured-image .components-placeholder__illustration, .wp-block-post-featured-image .components-placeholder::before'
+ )
+ ),
+ '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',
+ 'role' => 'content'
+ ),
+ 'showTitle' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'linkLabel' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'arrow' => array(
+ 'type' => 'string',
+ 'default' => 'none'
+ ),
+ 'taxonomy' => array(
+ 'type' => 'string',
+ 'default' => ''
+ )
+ ),
+ 'usesContext' => array(
+ 'postType'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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,
+ '__experimentalWritingMode' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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',
+ 'ancestor' => 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',
+ 'displayLayout',
+ 'templateSlug',
+ 'previewPostType',
+ 'enhancedPagination',
+ 'postType'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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(
+ 'margin' => true,
+ 'padding' => true,
+ 'blockGap' => array(
+ '__experimentalDefault' => '1.25em'
+ ),
+ '__experimentalDefaultControls' => array(
+ 'blockGap' => true,
+ 'padding' => false,
+ 'margin' => false
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => 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'
+ ),
+ 'separator' => array(
+ 'type' => 'string',
+ 'default' => ', '
+ ),
+ 'prefix' => array(
+ 'type' => 'string',
+ 'default' => '',
+ 'role' => 'content'
+ ),
+ 'suffix' => array(
+ 'type' => 'string',
+ 'default' => '',
+ 'role' => 'content'
+ )
+ ),
+ 'usesContext' => array(
+ 'postId',
+ 'postType'
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => 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,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-post-terms'
+ ),
+ 'post-time-to-read' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/post-time-to-read',
+ 'title' => 'Time to Read',
+ 'category' => 'theme',
+ 'description' => 'Show minutes required to finish reading the post. Can also show a word count.',
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'postId',
+ 'postType'
+ ),
+ 'attributes' => array(
+ 'displayAsRange' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'displayMode' => array(
+ 'type' => 'string',
+ 'default' => 'time'
+ ),
+ 'averageReadingSpeed' => array(
+ 'type' => 'number',
+ 'default' => 189
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'color' => array(
+ 'gradients' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'html' => false,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ '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
+ ),
+ 'levelOptions' => array(
+ 'type' => 'array'
+ ),
+ 'isLink' => array(
+ 'type' => 'boolean',
+ 'default' => false,
+ 'role' => 'content'
+ ),
+ 'rel' => array(
+ 'type' => 'string',
+ 'attribute' => 'rel',
+ 'default' => '',
+ 'role' => 'content'
+ ),
+ 'linkTarget' => array(
+ 'type' => 'string',
+ 'default' => '_self',
+ 'role' => 'content'
+ )
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => 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' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'pre',
+ '__unstablePreserveWhiteSpace' => true,
+ 'role' => 'content'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'color' => array(
+ 'gradients' => 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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => 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' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'p',
+ 'role' => 'content'
+ ),
+ 'citation' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'cite',
+ 'role' => 'content'
+ ),
+ 'textAlign' => array(
+ 'type' => 'string'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'left',
+ 'right',
+ 'wide',
+ 'full'
+ ),
+ 'background' => array(
+ 'backgroundImage' => true,
+ 'backgroundSize' => true,
+ '__experimentalDefaultControls' => array(
+ 'backgroundImage' => true
+ )
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'background' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'dimensions' => array(
+ 'minHeight' => true,
+ '__experimentalDefaultControls' => array(
+ 'minHeight' => 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
+ )
+ ),
+ '__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'
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ '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.',
+ 'keywords' => array(
+ 'posts',
+ 'list',
+ 'blog',
+ 'blogs',
+ 'custom post types'
+ ),
+ '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(
+
+ ),
+ 'format' => array(
+
+ )
+ )
+ ),
+ 'tagName' => array(
+ 'type' => 'string',
+ 'default' => 'div'
+ ),
+ 'namespace' => array(
+ 'type' => 'string'
+ ),
+ 'enhancedPagination' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ )
+ ),
+ 'usesContext' => array(
+ 'templateSlug'
+ ),
+ 'providesContext' => array(
+ 'queryId' => 'queryId',
+ 'query' => 'query',
+ 'displayLayout' => 'displayLayout',
+ 'enhancedPagination' => 'enhancedPagination'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'html' => false,
+ 'layout' => true,
+ 'interactivity' => 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.',
+ 'ancestor' => array(
+ 'core/query'
+ ),
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'queryId',
+ 'query'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ )
+ ),
+ 'query-pagination' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/query-pagination',
+ 'title' => 'Pagination',
+ 'category' => 'theme',
+ 'ancestor' => array(
+ 'core/query'
+ ),
+ 'allowedBlocks' => array(
+ 'core/query-pagination-previous',
+ 'core/query-pagination-numbers',
+ 'core/query-pagination-next'
+ ),
+ '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(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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',
+ 'enhancedPagination'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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',
+ 'attributes' => array(
+ 'midSize' => array(
+ 'type' => 'number',
+ 'default' => 2
+ )
+ ),
+ 'usesContext' => array(
+ 'queryId',
+ 'query',
+ 'enhancedPagination'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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',
+ 'enhancedPagination'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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
+ ),
+ 'levelOptions' => array(
+ 'type' => 'array'
+ ),
+ 'showPrefix' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'showSearchTerm' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ )
+ ),
+ 'example' => array(
+ 'attributes' => array(
+ 'type' => 'search'
+ )
+ ),
+ 'usesContext' => array(
+ 'query'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-query-title'
+ ),
+ 'query-total' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/query-total',
+ 'title' => 'Query Total',
+ 'category' => 'theme',
+ 'ancestor' => array(
+ 'core/query'
+ ),
+ 'description' => 'Display the total number of results in a query.',
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'displayType' => array(
+ 'type' => 'string',
+ 'default' => 'total-results'
+ )
+ ),
+ 'usesContext' => array(
+ 'queryId',
+ 'query'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'html' => false,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => 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
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'style' => 'wp-block-query-total'
+ ),
+ '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' => '',
+ 'role' => 'content'
+ ),
+ 'citation' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'cite',
+ 'role' => 'content'
+ ),
+ 'textAlign' => array(
+ 'type' => 'string'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'left',
+ 'right',
+ 'wide',
+ 'full'
+ ),
+ 'html' => false,
+ 'background' => array(
+ 'backgroundImage' => true,
+ 'backgroundSize' => true,
+ '__experimentalDefaultControls' => array(
+ 'backgroundImage' => true
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'radius' => true,
+ 'style' => true,
+ 'width' => true
+ )
+ ),
+ 'dimensions' => array(
+ 'minHeight' => true,
+ '__experimentalDefaultControls' => array(
+ 'minHeight' => false
+ )
+ ),
+ '__experimentalOnEnter' => true,
+ '__experimentalOnMerge' => 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,
+ 'heading' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'layout' => array(
+ 'allowEditing' => false
+ ),
+ 'spacing' => array(
+ 'blockGap' => true,
+ 'padding' => true,
+ 'margin' => true
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'allowedBlocks' => 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',
+ 'role' => 'content'
+ ),
+ 'linkTarget' => array(
+ 'type' => 'string',
+ 'default' => '_self'
+ )
+ ),
+ 'usesContext' => array(
+ 'postId'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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' => '',
+ 'role' => 'content'
+ ),
+ '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
+ ),
+ 'openInNewTab' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'rel' => array(
+ 'type' => 'string'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => true,
+ 'html' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'padding' => false,
+ 'margin' => false
+ )
+ ),
+ 'color' => array(
+ 'background' => true,
+ 'text' => true,
+ 'gradients' => true,
+ 'link' => true
+ )
+ ),
+ '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',
+ 'role' => 'content'
+ ),
+ 'showLabel' => array(
+ 'type' => 'boolean',
+ 'default' => true
+ ),
+ 'placeholder' => array(
+ 'type' => 'string',
+ 'default' => '',
+ 'role' => 'content'
+ ),
+ 'width' => array(
+ 'type' => 'number'
+ ),
+ 'widthUnit' => array(
+ 'type' => 'string'
+ ),
+ 'buttonText' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ 'buttonPosition' => array(
+ 'type' => 'string',
+ 'default' => 'button-outside'
+ ),
+ 'buttonUseIcon' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'query' => array(
+ 'type' => 'object',
+ 'default' => array(
+
+ )
+ ),
+ 'isSearchFieldHidden' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'left',
+ 'center',
+ 'right'
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ '__experimentalSkipSerialization' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'interactivity' => 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
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => 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'
+ ),
+ 'tagName' => array(
+ 'type' => 'string',
+ 'enum' => array(
+ 'hr',
+ 'div'
+ ),
+ 'default' => 'hr'
+ )
+ ),
+ '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'
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ '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',
+ 'role' => 'content'
+ )
+ ),
+ 'supports' => array(
+ 'className' => false,
+ 'customClassName' => false,
+ 'html' => false,
+ 'customCSS' => 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,
+ 'role' => 'content'
+ ),
+ 'linkTarget' => array(
+ 'type' => 'string',
+ 'default' => '_self',
+ 'role' => 'content'
+ ),
+ 'shouldSyncIcon' => array(
+ 'type' => 'boolean'
+ )
+ ),
+ 'example' => array(
+ 'viewportWidth' => 500,
+ 'attributes' => array(
+ 'width' => 350,
+ 'className' => 'block-editor-block-types-list__site-logo-example'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ 'align' => true,
+ 'alignWide' => false,
+ 'color' => array(
+ 'text' => false,
+ 'background' => false
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ 'filter' => array(
+ 'duotone' => true
+ )
+ ),
+ 'styles' => array(
+ array(
+ 'name' => 'default',
+ 'label' => 'Default',
+ 'isDefault' => true
+ ),
+ array(
+ 'name' => 'rounded',
+ 'label' => 'Rounded'
+ )
+ ),
+ 'selectors' => array(
+ 'filter' => array(
+ 'duotone' => '.wp-block-site-logo img, .wp-block-site-logo .components-placeholder__illustration, .wp-block-site-logo .components-placeholder::before'
+ )
+ ),
+ '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 this site is about. This is important for search results, sharing on social media, and gives overall clarity to visitors.',
+ 'keywords' => array(
+ 'description'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'textAlign' => array(
+ 'type' => 'string'
+ ),
+ 'level' => array(
+ 'type' => 'number',
+ 'default' => 0
+ ),
+ 'levelOptions' => array(
+ 'type' => 'array',
+ 'default' => array(
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6
+ )
+ )
+ ),
+ 'example' => array(
+ 'viewportWidth' => 350,
+ 'attributes' => array(
+ 'textAlign' => 'center'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'html' => false,
+ 'color' => array(
+ 'gradients' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'contentRole' => true,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalWritingMode' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'editorStyle' => 'wp-block-site-tagline-editor',
+ 'style' => 'wp-block-site-tagline'
+ ),
+ '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
+ ),
+ 'levelOptions' => array(
+ 'type' => 'array',
+ 'default' => array(
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6
+ )
+ ),
+ 'textAlign' => array(
+ 'type' => 'string'
+ ),
+ 'isLink' => array(
+ 'type' => 'boolean',
+ 'default' => true,
+ 'role' => 'content'
+ ),
+ 'linkTarget' => array(
+ 'type' => 'string',
+ 'default' => '_self',
+ 'role' => 'content'
+ )
+ ),
+ 'example' => array(
+ 'viewportWidth' => 500
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalWritingMode' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => 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 profile or site.',
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'url' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ 'service' => array(
+ 'type' => 'string'
+ ),
+ 'label' => array(
+ 'type' => 'string',
+ 'role' => 'content'
+ ),
+ 'rel' => array(
+ 'type' => 'string'
+ )
+ ),
+ 'usesContext' => array(
+ 'openInNewTab',
+ 'showLabels',
+ 'iconColor',
+ 'iconColorValue',
+ 'iconBackgroundColor',
+ 'iconBackgroundColorValue'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'reusable' => false,
+ 'html' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ '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',
+ 'allowedBlocks' => array(
+ 'core/social-link'
+ ),
+ 'description' => 'Display icons linking to your social 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,
+ 'html' => false,
+ '__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,
+ 'margin' => true,
+ 'padding' => false
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'contentRole' => true,
+ 'listView' => 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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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' => true
+ ),
+ 'caption' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'figcaption',
+ 'role' => 'content'
+ ),
+ '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' => 'rich-text',
+ 'source' => 'rich-text',
+ 'role' => 'content'
+ ),
+ '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' => 'rich-text',
+ 'source' => 'rich-text',
+ 'role' => 'content'
+ ),
+ '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' => 'rich-text',
+ 'source' => 'rich-text',
+ 'role' => 'content'
+ ),
+ '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,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ '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
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'selectors' => array(
+ 'root' => '.wp-block-table > table',
+ 'spacing' => '.wp-block-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 popular keywords, each sized by how often it appears.',
+ '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(
+ 'anchor' => true,
+ 'html' => false,
+ 'align' => true,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true
+ ),
+ 'typography' => array(
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalLetterSpacing' => true
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ )
+ ),
+ '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,
+ 'renaming' => false,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'editorStyle' => 'wp-block-template-part-editor'
+ ),
+ 'term-count' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/term-count',
+ 'title' => 'Term Count',
+ 'category' => 'theme',
+ 'description' => 'Displays the post count of a taxonomy term.',
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'termId',
+ 'taxonomy'
+ ),
+ 'attributes' => array(
+ 'bracketType' => array(
+ 'type' => 'string',
+ 'enum' => array(
+ 'none',
+ 'round',
+ 'square',
+ 'curly',
+ 'angle'
+ ),
+ 'default' => 'round'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'html' => false,
+ 'color' => array(
+ 'gradients' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'spacing' => array(
+ 'padding' => true
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-term-count'
+ ),
+ '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',
+ 'usesContext' => array(
+ 'termId',
+ 'taxonomy'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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,
+ 'textAlign' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ )
+ ),
+ 'term-name' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/term-name',
+ 'title' => 'Term Name',
+ 'category' => 'theme',
+ 'description' => 'Displays the name of a taxonomy term.',
+ 'keywords' => array(
+ 'term title'
+ ),
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'termId',
+ 'taxonomy'
+ ),
+ 'attributes' => array(
+ 'textAlign' => array(
+ 'type' => 'string'
+ ),
+ 'level' => array(
+ 'type' => 'number',
+ 'default' => 0
+ ),
+ 'isLink' => array(
+ 'type' => 'boolean',
+ 'default' => false
+ ),
+ 'levelOptions' => 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,
+ 'link' => true
+ )
+ ),
+ 'spacing' => array(
+ 'padding' => true
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ 'lineHeight' => true,
+ '__experimentalFontFamily' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true,
+ '__experimentalDefaultControls' => array(
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ )
+ ),
+ 'style' => 'wp-block-term-name'
+ ),
+ 'term-template' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/term-template',
+ 'title' => 'Term Template',
+ 'category' => 'theme',
+ 'ancestor' => array(
+ 'core/terms-query'
+ ),
+ 'description' => 'Contains the block elements used to render a taxonomy term, like the name, description, and more.',
+ 'textdomain' => 'default',
+ 'usesContext' => array(
+ 'termQuery'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ '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(
+ 'margin' => true,
+ 'padding' => true,
+ 'blockGap' => array(
+ '__experimentalDefault' => '1.25em'
+ ),
+ '__experimentalDefaultControls' => array(
+ 'blockGap' => true,
+ 'padding' => false,
+ 'margin' => false
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'color' => true,
+ 'width' => true,
+ 'style' => true
+ )
+ ),
+ 'style' => 'wp-block-term-template',
+ 'editorStyle' => 'wp-block-term-template-editor'
+ ),
+ 'terms-query' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/terms-query',
+ 'title' => 'Terms Query',
+ 'category' => 'theme',
+ 'description' => 'An advanced block that allows displaying taxonomy terms based on different query parameters and visual configurations.',
+ 'keywords' => array(
+ 'terms',
+ 'taxonomy',
+ 'categories',
+ 'tags',
+ 'list'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'termQuery' => array(
+ 'type' => 'object',
+ 'default' => array(
+ 'perPage' => 10,
+ 'taxonomy' => 'category',
+ 'order' => 'asc',
+ 'orderBy' => 'name',
+ 'include' => array(
+
+ ),
+ 'hideEmpty' => true,
+ 'showNested' => false,
+ 'inherit' => false
+ )
+ ),
+ 'tagName' => array(
+ 'type' => 'string',
+ 'default' => 'div'
+ )
+ ),
+ 'usesContext' => array(
+ 'templateSlug'
+ ),
+ 'providesContext' => array(
+ 'termQuery' => 'termQuery'
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => array(
+ 'wide',
+ 'full'
+ ),
+ 'html' => false,
+ 'layout' => true,
+ 'interactivity' => 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,
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ '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' => 'Poetry',
+ 'category' => 'text',
+ 'description' => 'Insert poetry. Use special spacing formats. Or quote song lyrics.',
+ 'keywords' => array(
+ 'poetry',
+ 'poem',
+ 'verse',
+ 'stanza',
+ 'song',
+ 'lyrics'
+ ),
+ 'textdomain' => 'default',
+ 'attributes' => array(
+ 'content' => array(
+ 'type' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'pre',
+ '__unstablePreserveWhiteSpace' => true,
+ 'role' => 'content'
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'background' => array(
+ 'backgroundImage' => true,
+ 'backgroundSize' => true,
+ '__experimentalDefaultControls' => array(
+ 'backgroundImage' => true
+ )
+ ),
+ 'color' => array(
+ 'gradients' => true,
+ 'link' => true,
+ '__experimentalDefaultControls' => array(
+ 'background' => true,
+ 'text' => true
+ )
+ ),
+ 'dimensions' => array(
+ 'minHeight' => true,
+ '__experimentalDefaultControls' => array(
+ 'minHeight' => false
+ )
+ ),
+ 'typography' => array(
+ 'fontSize' => true,
+ '__experimentalFontFamily' => true,
+ 'lineHeight' => true,
+ 'textAlign' => true,
+ '__experimentalFontStyle' => true,
+ '__experimentalFontWeight' => true,
+ '__experimentalLetterSpacing' => true,
+ '__experimentalTextTransform' => true,
+ '__experimentalTextDecoration' => true,
+ '__experimentalWritingMode' => true,
+ '__experimentalDefaultControls' => array(
+ 'fontSize' => true
+ )
+ ),
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ '__experimentalBorder' => array(
+ 'radius' => true,
+ 'width' => true,
+ 'color' => true,
+ 'style' => true
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => 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' => 'rich-text',
+ 'source' => 'rich-text',
+ 'selector' => 'figcaption',
+ 'role' => 'content'
+ ),
+ 'controls' => array(
+ 'type' => 'boolean',
+ 'source' => 'attribute',
+ 'selector' => 'video',
+ 'attribute' => 'controls',
+ 'default' => true
+ ),
+ 'id' => array(
+ 'type' => 'number',
+ 'role' => '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'
+ ),
+ 'blob' => array(
+ 'type' => 'string',
+ 'role' => 'local'
+ ),
+ 'src' => array(
+ 'type' => 'string',
+ 'source' => 'attribute',
+ 'selector' => 'video',
+ 'attribute' => 'src',
+ 'role' => 'content'
+ ),
+ 'playsInline' => array(
+ 'type' => 'boolean',
+ 'source' => 'attribute',
+ 'selector' => 'video',
+ 'attribute' => 'playsinline'
+ ),
+ 'tracks' => array(
+ 'role' => 'content',
+ 'type' => 'array',
+ 'items' => array(
+ 'type' => 'object'
+ ),
+ 'default' => array(
+
+ )
+ )
+ ),
+ 'supports' => array(
+ 'anchor' => true,
+ 'align' => true,
+ 'spacing' => array(
+ 'margin' => true,
+ 'padding' => true,
+ '__experimentalDefaultControls' => array(
+ 'margin' => false,
+ 'padding' => false
+ )
+ ),
+ 'interactivity' => array(
+ 'clientNavigation' => true
+ )
+ ),
+ 'editorStyle' => 'wp-block-video-editor',
+ 'style' => 'wp-block-video'
+ ),
+ 'widget-group' => array(
+ '$schema' => 'https://schemas.wp.org/trunk/block.json',
+ 'apiVersion' => 3,
+ 'name' => 'core/widget-group',
+ 'title' => '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/breadcrumbs.php b/src/wp-includes/blocks/breadcrumbs.php
new file mode 100644
index 0000000000000..c2e5a7f9513e3
--- /dev/null
+++ b/src/wp-includes/blocks/breadcrumbs.php
@@ -0,0 +1,611 @@
+ 1 ) ) {
+ $breadcrumb_items[] = array(
+ 'label' => __( 'Home' ),
+ 'url' => home_url( '/' ),
+ );
+ } else {
+ $breadcrumb_items[] = block_core_breadcrumbs_create_item( __( 'Home' ), block_core_breadcrumbs_is_paged() );
+ }
+ }
+
+ // Handle home.
+ if ( $is_home ) {
+ // These checks are explicitly nested in order not to execute the `else` branch.
+ if ( $page_for_posts ) {
+ $breadcrumb_items[] = block_core_breadcrumbs_create_item( block_core_breadcrumbs_get_post_title( $page_for_posts ), block_core_breadcrumbs_is_paged() );
+ }
+ if ( block_core_breadcrumbs_is_paged() ) {
+ $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item();
+ }
+ } elseif ( $is_front_page ) {
+ // Handle front page.
+ // This check is explicitly nested in order not to execute the `else` branch.
+ // If front page is set to custom page and is paged, add the page number.
+ if ( (int) get_query_var( 'page' ) > 1 ) {
+ $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item( 'page' );
+ }
+ } elseif ( is_search() ) {
+ // Handle search results.
+ $is_paged = block_core_breadcrumbs_is_paged();
+ /* translators: %s: search query */
+ $text = sprintf( __( 'Search results for: "%s"' ), wp_trim_words( get_search_query(), 10 ) );
+ $breadcrumb_items[] = block_core_breadcrumbs_create_item( $text, $is_paged );
+ // Add the "Page X" as the current page if paginated.
+ if ( $is_paged ) {
+ $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item();
+ }
+ } elseif ( is_404() ) {
+ // Handle 404 pages.
+ $breadcrumb_items[] = array(
+ 'label' => __( 'Page not found' ),
+ );
+ } elseif ( is_archive() ) {
+ // Handle archive pages (taxonomy, post type, date, author archives).
+ $archive_breadcrumbs = block_core_breadcrumbs_get_archive_breadcrumbs();
+ if ( ! empty( $archive_breadcrumbs ) ) {
+ $breadcrumb_items = array_merge( $breadcrumb_items, $archive_breadcrumbs );
+ }
+ } else {
+ // Handle single post/page breadcrumbs.
+ if ( ! isset( $block->context['postId'] ) || ! isset( $block->context['postType'] ) ) {
+ return '';
+ }
+
+ $post_id = $block->context['postId'];
+ $post_type = $block->context['postType'];
+
+ $post = get_post( $post_id );
+ if ( ! $post ) {
+ return '';
+ }
+
+ // For non-hierarchical post types with parents (e.g., attachments), build trail for the parent.
+ $post_parent = $post->post_parent;
+ $parent_post = null;
+ if ( ! is_post_type_hierarchical( $post_type ) && $post_parent ) {
+ $parent_post = get_post( $post_parent );
+ if ( $parent_post ) {
+ $post_id = $parent_post->ID;
+ $post_type = $parent_post->post_type;
+ $post_parent = $parent_post->post_parent;
+ }
+ }
+
+ // Determine breadcrumb type.
+ // Some non-hierarchical post types (e.g., attachments) can have parents.
+ // Use hierarchical breadcrumbs if a parent exists, otherwise use taxonomy breadcrumbs.
+ $show_terms = false;
+ if ( ! is_post_type_hierarchical( $post_type ) && ! $post_parent ) {
+ $show_terms = true;
+ } elseif ( empty( get_object_taxonomies( $post_type, 'objects' ) ) ) {
+ $show_terms = false;
+ } else {
+ $show_terms = $attributes['prefersTaxonomy'];
+ }
+
+ // Add post type archive link if applicable.
+ $post_type_object = get_post_type_object( $post_type );
+ $archive_link = get_post_type_archive_link( $post_type );
+ if ( $archive_link && untrailingslashit( home_url() ) !== untrailingslashit( $archive_link ) ) {
+ $label = $post_type_object->labels->archives;
+ if ( 'post' === $post_type && $page_for_posts ) {
+ $label = block_core_breadcrumbs_get_post_title( $page_for_posts );
+ }
+ $breadcrumb_items[] = array(
+ 'label' => $label,
+ 'url' => $archive_link,
+ );
+ }
+ // Build breadcrumb trail based on hierarchical structure or taxonomy terms.
+ if ( ! $show_terms ) {
+ $breadcrumb_items = array_merge( $breadcrumb_items, block_core_breadcrumbs_get_hierarchical_post_type_breadcrumbs( $post_id ) );
+ } else {
+ $breadcrumb_items = array_merge( $breadcrumb_items, block_core_breadcrumbs_get_terms_breadcrumbs( $post_id, $post_type ) );
+ }
+
+ // Add post title: linked when viewing a paginated page, plain text otherwise.
+ $is_paged = (int) get_query_var( 'page' ) > 1 || (int) get_query_var( 'cpage' ) > 1;
+ $title = block_core_breadcrumbs_get_post_title( $post );
+
+ if ( $is_paged ) {
+ $breadcrumb_items[] = array(
+ 'label' => $title,
+ 'url' => get_permalink( $post ),
+ 'allow_html' => true,
+ );
+ $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item( (int) get_query_var( 'cpage' ) > 1 ? 'cpage' : 'page' );
+ } else {
+ $breadcrumb_items[] = array(
+ 'label' => $title,
+ 'allow_html' => true,
+ );
+ }
+ }
+
+ // Remove current item if disabled.
+ if ( ! $attributes['showCurrentItem'] && ! empty( $breadcrumb_items ) ) {
+ array_pop( $breadcrumb_items );
+ }
+
+ /**
+ * Filters the breadcrumb items array before rendering.
+ *
+ * Allows developers to modify, add, or remove breadcrumb items.
+ *
+ * @since 7.0.0
+ *
+ * @param array[] $breadcrumb_items {
+ * Array of breadcrumb item data.
+ *
+ * @type string $label The breadcrumb text.
+ * @type string $url Optional. The breadcrumb link URL.
+ * @type bool $allow_html Optional. Whether to allow HTML in the label.
+ * When true, the label will be sanitized with wp_kses_post(),
+ * allowing only safe HTML tags. When false or omitted, all HTML
+ * will be escaped with esc_html(). Default false.
+ * }
+ */
+ $breadcrumb_items = apply_filters( 'block_core_breadcrumbs_items', $breadcrumb_items );
+
+ if ( empty( $breadcrumb_items ) ) {
+ return '';
+ }
+
+ $wrapper_attributes = get_block_wrapper_attributes(
+ array(
+ 'style' => '--separator: "' . addcslashes( $attributes['separator'], '\\"' ) . '";',
+ 'aria-label' => __( 'Breadcrumbs' ),
+ )
+ );
+
+ $breadcrumb_html = sprintf(
+ '',
+ $wrapper_attributes,
+ implode(
+ '',
+ array_map(
+ static function ( $item ) {
+ $label = ! empty( $item['allow_html'] ) ? wp_kses_post( $item['label'] ) : esc_html( $item['label'] );
+ if ( ! empty( $item['url'] ) ) {
+ return '' . $label . '';
+ }
+ return '' . $label . '';
+ },
+ $breadcrumb_items
+ )
+ )
+ );
+
+ return $breadcrumb_html;
+}
+
+/**
+ * Checks if we're on a paginated view (page 2 or higher).
+ *
+ * @since 7.0.0
+ *
+ * @return bool True if paged > 1, false otherwise.
+ */
+function block_core_breadcrumbs_is_paged() {
+ $paged = (int) get_query_var( 'paged' );
+ return $paged > 1;
+}
+
+/**
+ * Creates a "Page X" breadcrumb item for paginated views.
+ *
+ * @since 7.0.0
+ * @param string $query_var Optional. Query variable to get current page number. Default 'paged'.
+ * @return array The "Page X" breadcrumb item data.
+ */
+function block_core_breadcrumbs_create_page_number_item( $query_var = 'paged' ) {
+ $paged = (int) get_query_var( $query_var );
+
+ if ( 'cpage' === $query_var ) {
+ return array(
+ 'label' => sprintf(
+ /* translators: %s: comment page number */
+ __( 'Comments Page %s' ),
+ number_format_i18n( $paged )
+ ),
+ );
+ }
+
+ return array(
+ 'label' => sprintf(
+ /* translators: %s: page number */
+ __( 'Page %s' ),
+ number_format_i18n( $paged )
+ ),
+ );
+}
+
+
+/**
+ * Creates a breadcrumb item that's either a link or current page item.
+ *
+ * When paginated (is_paged is true), creates a link to page 1.
+ * Otherwise, creates a span marked as the current page.
+ *
+ * @since 7.0.0
+ *
+ * @param string $text The text content.
+ * @param bool $is_paged Whether we're on a paginated view.
+ *
+ * @return array The breadcrumb item data.
+ */
+function block_core_breadcrumbs_create_item( $text, $is_paged = false ) {
+ $item = array( 'label' => $text );
+ if ( $is_paged ) {
+ $item['url'] = get_pagenum_link( 1 );
+ }
+ return $item;
+}
+
+/**
+ * Gets a post title with fallback for empty titles.
+ *
+ * @since 7.0.0
+ *
+ * @param int|WP_Post $post_id_or_object The post ID or post object.
+ *
+ * @return string The post title or fallback text.
+ */
+function block_core_breadcrumbs_get_post_title( $post_id_or_object ) {
+ $title = get_the_title( $post_id_or_object );
+ if ( strlen( $title ) === 0 ) {
+ $title = __( '(no title)' );
+ }
+ return $title;
+}
+
+/**
+ * Generates breadcrumb items from hierarchical post type ancestors.
+ *
+ * @since 7.0.0
+ *
+ * @param int $post_id The post ID.
+ *
+ * @return array Array of breadcrumb item data.
+ */
+function block_core_breadcrumbs_get_hierarchical_post_type_breadcrumbs( $post_id ) {
+ $breadcrumb_items = array();
+ $ancestors = get_post_ancestors( $post_id );
+ $ancestors = array_reverse( $ancestors );
+
+ foreach ( $ancestors as $ancestor_id ) {
+ $breadcrumb_items[] = array(
+ 'label' => block_core_breadcrumbs_get_post_title( $ancestor_id ),
+ 'url' => get_permalink( $ancestor_id ),
+ 'allow_html' => true,
+ );
+ }
+ return $breadcrumb_items;
+}
+
+/**
+ * Generates breadcrumb items for hierarchical term ancestors.
+ *
+ * For hierarchical taxonomies, retrieves and formats ancestor terms as breadcrumb links.
+ *
+ * @since 7.0.0
+ *
+ * @param int $term_id The term ID.
+ * @param string $taxonomy The taxonomy name.
+ *
+ * @return array Array of breadcrumb item data for ancestors.
+ */
+function block_core_breadcrumbs_get_term_ancestors_items( $term_id, $taxonomy ) {
+ $breadcrumb_items = array();
+
+ // Check if taxonomy is hierarchical and add ancestor term links.
+ if ( is_taxonomy_hierarchical( $taxonomy ) ) {
+ $term_ancestors = get_ancestors( $term_id, $taxonomy, 'taxonomy' );
+ $term_ancestors = array_reverse( $term_ancestors );
+ foreach ( $term_ancestors as $ancestor_id ) {
+ $ancestor_term = get_term( $ancestor_id, $taxonomy );
+ if ( $ancestor_term && ! is_wp_error( $ancestor_term ) ) {
+ $breadcrumb_items[] = array(
+ 'label' => $ancestor_term->name,
+ 'url' => get_term_link( $ancestor_term ),
+ );
+ }
+ }
+ }
+
+ return $breadcrumb_items;
+}
+
+/**
+ * Generates breadcrumb items for archive pages.
+ *
+ * Handles taxonomy archives, post type archives, date archives, and author archives.
+ * For hierarchical taxonomies, includes ancestor terms in the breadcrumb trail.
+ *
+ * @since 7.0.0
+ *
+ * @return array Array of breadcrumb item data.
+ */
+function block_core_breadcrumbs_get_archive_breadcrumbs() {
+ $breadcrumb_items = array();
+
+ // Date archive (check first since it doesn't have a queried object).
+ if ( is_date() ) {
+ $year = get_query_var( 'year' );
+ $month = get_query_var( 'monthnum' );
+ $day = get_query_var( 'day' );
+
+ // Fallback to 'm' query var for plain permalinks.
+ // Plain permalinks use ?m=YYYYMMDD format instead of separate query vars.
+ if ( ! $year ) {
+ $m = get_query_var( 'm' );
+ if ( $m ) {
+ $year = substr( $m, 0, 4 );
+ $month = substr( $m, 4, 2 );
+ $day = (int) substr( $m, 6, 2 );
+ }
+ }
+
+ $is_paged = block_core_breadcrumbs_is_paged();
+
+ if ( $year ) {
+ if ( $month ) {
+ // Year is linked if we have month.
+ $breadcrumb_items[] = array(
+ 'label' => $year,
+ 'url' => get_year_link( $year ),
+ );
+
+ if ( $day ) {
+ // Month is linked if we have day.
+ $breadcrumb_items[] = array(
+ 'label' => date_i18n( 'F', mktime( 0, 0, 0, $month, 1, $year ) ),
+ 'url' => get_month_link( $year, $month ),
+ );
+ // Add day (current if not paginated, link if paginated).
+ $breadcrumb_items[] = block_core_breadcrumbs_create_item(
+ $day,
+ $is_paged
+ );
+ } else {
+ // Add month (current if not paginated, link if paginated).
+ $breadcrumb_items[] = block_core_breadcrumbs_create_item(
+ date_i18n( 'F', mktime( 0, 0, 0, $month, 1, $year ) ),
+ $is_paged
+ );
+ }
+ } else {
+ // Add year (current if not paginated, link if paginated).
+ $breadcrumb_items[] = block_core_breadcrumbs_create_item(
+ $year,
+ $is_paged
+ );
+ }
+ }
+
+ // Add pagination breadcrumb if on a paged date archive.
+ if ( $is_paged ) {
+ $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item();
+ }
+
+ return $breadcrumb_items;
+ }
+
+ // For other archive types, we need a queried object.
+ $queried_object = get_queried_object();
+
+ if ( ! $queried_object ) {
+ return array();
+ }
+
+ $is_paged = block_core_breadcrumbs_is_paged();
+
+ // Taxonomy archive (category, tag, custom taxonomy).
+ if ( $queried_object instanceof WP_Term ) {
+ $term = $queried_object;
+ $taxonomy = $term->taxonomy;
+
+ // Add hierarchical term ancestors if applicable.
+ $breadcrumb_items = array_merge(
+ $breadcrumb_items,
+ block_core_breadcrumbs_get_term_ancestors_items( $term->term_id, $taxonomy )
+ );
+
+ // Add current term (current if not paginated, link if paginated).
+ $breadcrumb_items[] = block_core_breadcrumbs_create_item(
+ $term->name,
+ $is_paged
+ );
+ } elseif ( is_post_type_archive() ) {
+ // Post type archive.
+ $post_type = get_query_var( 'post_type' );
+ if ( is_array( $post_type ) ) {
+ $post_type = reset( $post_type );
+ }
+ $post_type_object = get_post_type_object( $post_type );
+
+ /** This filter is documented in wp-includes/general-template.php */
+ $title = apply_filters( 'post_type_archive_title', $post_type_object->labels->archives, $post_type ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
+
+ if ( $post_type_object ) {
+ // Add post type (current if not paginated, link if paginated).
+ $breadcrumb_items[] = block_core_breadcrumbs_create_item(
+ $title ? $title : $post_type_object->labels->archives,
+ $is_paged
+ );
+ }
+ } elseif ( is_author() ) {
+ // Author archive.
+ $author = $queried_object;
+ // Add author (current if not paginated, link if paginated).
+ $breadcrumb_items[] = block_core_breadcrumbs_create_item(
+ $author->display_name,
+ $is_paged
+ );
+ }
+
+ // Add pagination breadcrumb if on a paged archive.
+ if ( $is_paged ) {
+ $breadcrumb_items[] = block_core_breadcrumbs_create_page_number_item();
+ }
+
+ return $breadcrumb_items;
+}
+
+/**
+ * Generates breadcrumb items from taxonomy terms.
+ *
+ * Finds the first publicly queryable taxonomy with terms assigned to the post
+ * and generates breadcrumb links, including hierarchical term ancestors if applicable.
+ *
+ * @since 7.0.0
+ *
+ * @param int $post_id The post ID.
+ * @param string $post_type The post type name.
+ *
+ * @return array Array of breadcrumb item data.
+ */
+function block_core_breadcrumbs_get_terms_breadcrumbs( $post_id, $post_type ) {
+ $breadcrumb_items = array();
+
+ // Get public taxonomies for this post type.
+ $taxonomies = wp_filter_object_list(
+ get_object_taxonomies( $post_type, 'objects' ),
+ array(
+ 'publicly_queryable' => true,
+ 'show_in_rest' => true,
+ )
+ );
+
+ if ( empty( $taxonomies ) ) {
+ return $breadcrumb_items;
+ }
+
+ /**
+ * Filters breadcrumb settings (taxonomy and term selection) for a post or post type.
+ *
+ * Allows developers to specify which taxonomy and term should be used in the
+ * breadcrumb trail when a post type has multiple taxonomies or when a post is
+ * assigned to multiple terms within a taxonomy.
+ *
+ * @since 7.0.0
+ *
+ * @param array $settings {
+ * Array of breadcrumb settings. Default empty array.
+ *
+ * @type string $taxonomy Optional. Taxonomy slug to use for breadcrumbs.
+ * The taxonomy must be registered for the post type and have
+ * terms assigned to the post. If not found or has no terms,
+ * fall back to the first available taxonomy with terms.
+ * @type string $term Optional. Term slug to use when the post has multiple terms
+ * in the selected taxonomy. If the term is not found or not
+ * assigned to the post, fall back to the first term. If the
+ * post has only one term, that term is used regardless.
+ * }
+ * @param string $post_type The post type slug.
+ * @param int $post_id The post ID.
+ */
+ $settings = apply_filters( 'block_core_breadcrumbs_post_type_settings', array(), $post_type, $post_id );
+
+ $taxonomy_name = null;
+ $terms = array();
+
+ // Try preferred taxonomy first if specified.
+ if ( ! empty( $settings['taxonomy'] ) ) {
+ foreach ( $taxonomies as $taxonomy ) {
+ if ( $taxonomy->name === $settings['taxonomy'] ) {
+ $post_terms = get_the_terms( $post_id, $taxonomy->name );
+ if ( ! empty( $post_terms ) && ! is_wp_error( $post_terms ) ) {
+ $taxonomy_name = $taxonomy->name;
+ $terms = $post_terms;
+ }
+ break;
+ }
+ }
+ }
+
+ // If no preferred taxonomy or it didn't have terms, find the first taxonomy with terms.
+ if ( empty( $terms ) ) {
+ foreach ( $taxonomies as $taxonomy ) {
+ $post_terms = get_the_terms( $post_id, $taxonomy->name );
+ if ( ! empty( $post_terms ) && ! is_wp_error( $post_terms ) ) {
+ $taxonomy_name = $taxonomy->name;
+ $terms = $post_terms;
+ break;
+ }
+ }
+ }
+
+ if ( ! empty( $terms ) ) {
+ // Select which term to use.
+ $term = reset( $terms );
+
+ // Try preferred term if specified and post has multiple terms.
+ if ( ! empty( $settings['term'] ) && count( $terms ) > 1 ) {
+ foreach ( $terms as $candidate_term ) {
+ if ( $candidate_term->slug === $settings['term'] ) {
+ $term = $candidate_term;
+ break;
+ }
+ }
+ }
+
+ // Add hierarchical term ancestors if applicable.
+ $breadcrumb_items = array_merge(
+ $breadcrumb_items,
+ block_core_breadcrumbs_get_term_ancestors_items( $term->term_id, $taxonomy_name )
+ );
+ $breadcrumb_items[] = array(
+ 'label' => $term->name,
+ 'url' => get_term_link( $term ),
+ );
+ }
+ return $breadcrumb_items;
+}
+
+/**
+ * Registers the `core/breadcrumbs` block on the server.
+ *
+ * @since 7.0.0
+ */
+function register_block_core_breadcrumbs() {
+ register_block_type_from_metadata(
+ __DIR__ . '/breadcrumbs',
+ array(
+ 'render_callback' => 'render_block_core_breadcrumbs',
+ )
+ );
+}
+add_action( 'init', 'register_block_core_breadcrumbs' );
diff --git a/src/wp-includes/blocks/breadcrumbs/block.json b/src/wp-includes/blocks/breadcrumbs/block.json
new file mode 100644
index 0000000000000..597e36c41ae50
--- /dev/null
+++ b/src/wp-includes/blocks/breadcrumbs/block.json
@@ -0,0 +1,78 @@
+{
+ "$schema": "https://schemas.wp.org/trunk/block.json",
+ "apiVersion": 3,
+ "name": "core/breadcrumbs",
+ "title": "Breadcrumbs",
+ "category": "theme",
+ "description": "Display a breadcrumb trail showing the path to the current page.",
+ "textdomain": "default",
+ "attributes": {
+ "prefersTaxonomy": {
+ "type": "boolean",
+ "default": false
+ },
+ "separator": {
+ "type": "string",
+ "default": "/"
+ },
+ "showHomeItem": {
+ "type": "boolean",
+ "default": true
+ },
+ "showCurrentItem": {
+ "type": "boolean",
+ "default": true
+ },
+ "showOnHomePage": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "usesContext": [ "postId", "postType", "templateSlug" ],
+ "supports": {
+ "anchor": true,
+ "html": false,
+ "align": [ "wide", "full" ],
+ "spacing": {
+ "margin": true,
+ "padding": true
+ },
+ "color": {
+ "gradients": true,
+ "link": true,
+ "__experimentalDefaultControls": {
+ "background": true,
+ "text": true
+ }
+ },
+ "__experimentalBorder": {
+ "radius": true,
+ "color": true,
+ "width": true,
+ "style": true,
+ "__experimentalDefaultControls": {
+ "radius": false,
+ "color": true,
+ "width": true,
+ "style": true
+ }
+ },
+ "typography": {
+ "fontSize": true,
+ "lineHeight": true,
+ "__experimentalFontFamily": true,
+ "__experimentalFontWeight": true,
+ "__experimentalFontStyle": true,
+ "__experimentalTextTransform": true,
+ "__experimentalTextDecoration": true,
+ "__experimentalLetterSpacing": true,
+ "__experimentalDefaultControls": {
+ "fontSize": true
+ }
+ },
+ "interactivity": {
+ "clientNavigation": true
+ }
+ },
+ "style": "wp-block-breadcrumbs"
+}
diff --git a/src/wp-includes/blocks/button.php b/src/wp-includes/blocks/button.php
new file mode 100644
index 0000000000000..0d03440b1cb0f
--- /dev/null
+++ b/src/wp-includes/blocks/button.php
@@ -0,0 +1,79 @@
+` or `