From 0555e8d00ac8cb7eb50f165ddefbf51ad5e4fbc9 Mon Sep 17 00:00:00 2001
From: Gutenberg Repository Automation
Date: Wed, 11 Dec 2024 07:49:44 +0000
Subject: [PATCH 001/163] Update changelog files
---
packages/a11y/CHANGELOG.md | 2 ++
packages/a11y/package.json | 2 +-
packages/annotations/CHANGELOG.md | 2 ++
packages/annotations/package.json | 2 +-
packages/api-fetch/CHANGELOG.md | 2 ++
packages/api-fetch/package.json | 2 +-
packages/autop/CHANGELOG.md | 2 ++
packages/autop/package.json | 2 +-
packages/babel-plugin-import-jsx-pragma/CHANGELOG.md | 2 ++
packages/babel-plugin-import-jsx-pragma/package.json | 2 +-
packages/babel-plugin-makepot/CHANGELOG.md | 2 ++
packages/babel-plugin-makepot/package.json | 2 +-
packages/babel-preset-default/CHANGELOG.md | 2 ++
packages/babel-preset-default/package.json | 2 +-
packages/base-styles/CHANGELOG.md | 2 ++
packages/base-styles/package.json | 2 +-
packages/blob/CHANGELOG.md | 2 ++
packages/blob/package.json | 2 +-
packages/block-directory/CHANGELOG.md | 2 ++
packages/block-directory/package.json | 2 +-
packages/block-editor/CHANGELOG.md | 2 ++
packages/block-editor/package.json | 2 +-
packages/block-library/CHANGELOG.md | 2 ++
packages/block-library/package.json | 2 +-
packages/block-serialization-default-parser/CHANGELOG.md | 2 ++
packages/block-serialization-default-parser/package.json | 2 +-
packages/block-serialization-spec-parser/CHANGELOG.md | 2 ++
packages/block-serialization-spec-parser/package.json | 2 +-
packages/blocks/CHANGELOG.md | 2 ++
packages/blocks/package.json | 2 +-
packages/browserslist-config/CHANGELOG.md | 2 ++
packages/browserslist-config/package.json | 2 +-
packages/commands/CHANGELOG.md | 2 ++
packages/commands/package.json | 2 +-
packages/components/CHANGELOG.md | 2 ++
packages/components/package.json | 2 +-
packages/compose/CHANGELOG.md | 2 ++
packages/compose/package.json | 2 +-
packages/core-commands/CHANGELOG.md | 2 ++
packages/core-commands/package.json | 2 +-
packages/core-data/CHANGELOG.md | 2 ++
packages/core-data/package.json | 2 +-
packages/create-block-interactive-template/package.json | 2 +-
packages/create-block-tutorial-template/CHANGELOG.md | 2 ++
packages/create-block-tutorial-template/package.json | 2 +-
packages/create-block/CHANGELOG.md | 2 ++
packages/create-block/package.json | 2 +-
packages/customize-widgets/CHANGELOG.md | 2 ++
packages/customize-widgets/package.json | 2 +-
packages/data-controls/CHANGELOG.md | 2 ++
packages/data-controls/package.json | 2 +-
packages/data/CHANGELOG.md | 2 ++
packages/data/package.json | 2 +-
packages/dataviews/CHANGELOG.md | 2 ++
packages/dataviews/package.json | 2 +-
packages/date/CHANGELOG.md | 2 ++
packages/date/package.json | 2 +-
packages/dependency-extraction-webpack-plugin/CHANGELOG.md | 2 ++
packages/dependency-extraction-webpack-plugin/package.json | 2 +-
packages/deprecated/CHANGELOG.md | 2 ++
packages/deprecated/package.json | 2 +-
packages/docgen/CHANGELOG.md | 2 ++
packages/docgen/package.json | 2 +-
packages/dom-ready/CHANGELOG.md | 2 ++
packages/dom-ready/package.json | 2 +-
packages/dom/CHANGELOG.md | 2 ++
packages/dom/package.json | 2 +-
packages/e2e-test-utils-playwright/CHANGELOG.md | 2 ++
packages/e2e-test-utils-playwright/package.json | 2 +-
packages/e2e-test-utils/CHANGELOG.md | 2 ++
packages/e2e-test-utils/package.json | 2 +-
packages/e2e-tests/CHANGELOG.md | 2 ++
packages/e2e-tests/package.json | 2 +-
packages/edit-post/CHANGELOG.md | 2 ++
packages/edit-post/package.json | 2 +-
packages/edit-site/CHANGELOG.md | 2 ++
packages/edit-site/package.json | 2 +-
packages/edit-widgets/CHANGELOG.md | 2 ++
packages/edit-widgets/package.json | 2 +-
packages/editor/CHANGELOG.md | 2 ++
packages/editor/package.json | 2 +-
packages/element/CHANGELOG.md | 2 ++
packages/element/package.json | 2 +-
packages/env/CHANGELOG.md | 2 ++
packages/env/package.json | 2 +-
packages/escape-html/CHANGELOG.md | 2 ++
packages/escape-html/package.json | 2 +-
packages/eslint-plugin/CHANGELOG.md | 2 ++
packages/eslint-plugin/package.json | 2 +-
packages/fields/CHANGELOG.md | 2 ++
packages/fields/package.json | 2 +-
packages/format-library/CHANGELOG.md | 2 ++
packages/format-library/package.json | 2 +-
packages/hooks/CHANGELOG.md | 2 ++
packages/hooks/package.json | 2 +-
packages/html-entities/CHANGELOG.md | 2 ++
packages/html-entities/package.json | 2 +-
packages/i18n/CHANGELOG.md | 2 ++
packages/i18n/package.json | 2 +-
packages/icons/CHANGELOG.md | 2 ++
packages/icons/package.json | 2 +-
packages/interactivity-router/CHANGELOG.md | 2 ++
packages/interactivity-router/package.json | 2 +-
packages/interactivity/CHANGELOG.md | 2 ++
packages/interactivity/package.json | 2 +-
packages/interface/CHANGELOG.md | 2 ++
packages/interface/package.json | 2 +-
packages/is-shallow-equal/CHANGELOG.md | 2 ++
packages/is-shallow-equal/package.json | 2 +-
packages/jest-console/CHANGELOG.md | 2 ++
packages/jest-console/package.json | 2 +-
packages/jest-preset-default/CHANGELOG.md | 2 ++
packages/jest-preset-default/package.json | 2 +-
packages/jest-puppeteer-axe/CHANGELOG.md | 2 ++
packages/jest-puppeteer-axe/package.json | 2 +-
packages/keyboard-shortcuts/CHANGELOG.md | 2 ++
packages/keyboard-shortcuts/package.json | 2 +-
packages/keycodes/CHANGELOG.md | 2 ++
packages/keycodes/package.json | 2 +-
packages/lazy-import/CHANGELOG.md | 2 ++
packages/lazy-import/package.json | 2 +-
packages/list-reusable-blocks/CHANGELOG.md | 2 ++
packages/list-reusable-blocks/package.json | 2 +-
packages/media-utils/CHANGELOG.md | 2 ++
packages/media-utils/package.json | 2 +-
packages/notices/CHANGELOG.md | 2 ++
packages/notices/package.json | 2 +-
packages/npm-package-json-lint-config/CHANGELOG.md | 2 ++
packages/npm-package-json-lint-config/package.json | 2 +-
packages/nux/CHANGELOG.md | 2 ++
packages/nux/package.json | 2 +-
packages/patterns/CHANGELOG.md | 2 ++
packages/patterns/package.json | 2 +-
packages/plugins/CHANGELOG.md | 2 ++
packages/plugins/package.json | 2 +-
packages/postcss-plugins-preset/CHANGELOG.md | 2 ++
packages/postcss-plugins-preset/package.json | 2 +-
packages/postcss-themes/CHANGELOG.md | 2 ++
packages/postcss-themes/package.json | 2 +-
packages/preferences-persistence/CHANGELOG.md | 2 ++
packages/preferences-persistence/package.json | 2 +-
packages/preferences/CHANGELOG.md | 2 ++
packages/preferences/package.json | 2 +-
packages/prettier-config/CHANGELOG.md | 2 ++
packages/prettier-config/package.json | 2 +-
packages/primitives/CHANGELOG.md | 2 ++
packages/primitives/package.json | 2 +-
packages/priority-queue/CHANGELOG.md | 2 ++
packages/priority-queue/package.json | 2 +-
packages/private-apis/CHANGELOG.md | 2 ++
packages/private-apis/package.json | 2 +-
packages/project-management-automation/CHANGELOG.md | 2 ++
packages/project-management-automation/package.json | 2 +-
packages/react-i18n/CHANGELOG.md | 2 ++
packages/react-i18n/package.json | 2 +-
packages/readable-js-assets-webpack-plugin/CHANGELOG.md | 2 ++
packages/readable-js-assets-webpack-plugin/package.json | 2 +-
packages/redux-routine/CHANGELOG.md | 2 ++
packages/redux-routine/package.json | 2 +-
packages/reusable-blocks/CHANGELOG.md | 2 ++
packages/reusable-blocks/package.json | 2 +-
packages/rich-text/CHANGELOG.md | 2 ++
packages/rich-text/package.json | 2 +-
packages/router/CHANGELOG.md | 2 ++
packages/router/package.json | 2 +-
packages/scripts/CHANGELOG.md | 2 ++
packages/scripts/package.json | 2 +-
packages/server-side-render/CHANGELOG.md | 2 ++
packages/server-side-render/package.json | 2 +-
packages/shortcode/CHANGELOG.md | 2 ++
packages/shortcode/package.json | 2 +-
packages/style-engine/CHANGELOG.md | 2 ++
packages/style-engine/package.json | 2 +-
packages/stylelint-config/CHANGELOG.md | 2 ++
packages/stylelint-config/package.json | 2 +-
packages/sync/CHANGELOG.md | 2 ++
packages/sync/package.json | 2 +-
packages/token-list/CHANGELOG.md | 2 ++
packages/token-list/package.json | 2 +-
packages/undo-manager/CHANGELOG.md | 2 ++
packages/undo-manager/package.json | 2 +-
packages/url/CHANGELOG.md | 2 ++
packages/url/package.json | 2 +-
packages/viewport/CHANGELOG.md | 2 ++
packages/viewport/package.json | 2 +-
packages/warning/CHANGELOG.md | 2 ++
packages/warning/package.json | 2 +-
packages/widgets/CHANGELOG.md | 2 ++
packages/widgets/package.json | 2 +-
packages/wordcount/CHANGELOG.md | 2 ++
packages/wordcount/package.json | 2 +-
191 files changed, 286 insertions(+), 96 deletions(-)
diff --git a/packages/a11y/CHANGELOG.md b/packages/a11y/CHANGELOG.md
index 57b52651acc787..d61f28833d3f66 100644
--- a/packages/a11y/CHANGELOG.md
+++ b/packages/a11y/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/a11y/package.json b/packages/a11y/package.json
index 5eefe05954c797..67f4ed61a412dc 100644
--- a/packages/a11y/package.json
+++ b/packages/a11y/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/a11y",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "Accessibility (a11y) utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/annotations/CHANGELOG.md b/packages/annotations/CHANGELOG.md
index 64bf565f8dd52b..66433930b63753 100644
--- a/packages/annotations/CHANGELOG.md
+++ b/packages/annotations/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.14.0 (2024-12-11)
+
## 3.13.0 (2024-11-27)
## 3.12.0 (2024-11-16)
diff --git a/packages/annotations/package.json b/packages/annotations/package.json
index 47d39c978fccd1..68c65241bbe382 100644
--- a/packages/annotations/package.json
+++ b/packages/annotations/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/annotations",
- "version": "3.13.0",
+ "version": "3.14.0-prerelease",
"description": "Annotate content in the Gutenberg editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/api-fetch/CHANGELOG.md b/packages/api-fetch/CHANGELOG.md
index da4df186a8cd2f..d1d481d6ff9fc3 100644
--- a/packages/api-fetch/CHANGELOG.md
+++ b/packages/api-fetch/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.14.0 (2024-12-11)
+
## 7.13.0 (2024-11-27)
## 7.12.0 (2024-11-16)
diff --git a/packages/api-fetch/package.json b/packages/api-fetch/package.json
index 432eabf6ec5a12..d91e9378c6b2c5 100644
--- a/packages/api-fetch/package.json
+++ b/packages/api-fetch/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/api-fetch",
- "version": "7.13.0",
+ "version": "7.14.0-prerelease",
"description": "Utility to make WordPress REST API requests.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/autop/CHANGELOG.md b/packages/autop/CHANGELOG.md
index caec56341262a1..fc054bb8c14e08 100644
--- a/packages/autop/CHANGELOG.md
+++ b/packages/autop/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/autop/package.json b/packages/autop/package.json
index bd48c84775d9ef..5003ce2045b4f3 100644
--- a/packages/autop/package.json
+++ b/packages/autop/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/autop",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "WordPress's automatic paragraph functions `autop` and `removep`.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md b/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md
index b7030c3e4140a7..d372ad314b1b6f 100644
--- a/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md
+++ b/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/babel-plugin-import-jsx-pragma/package.json b/packages/babel-plugin-import-jsx-pragma/package.json
index 33244b4e7efb30..fd85a3003fd541 100644
--- a/packages/babel-plugin-import-jsx-pragma/package.json
+++ b/packages/babel-plugin-import-jsx-pragma/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-plugin-import-jsx-pragma",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Babel transform plugin for automatically injecting an import to be used as the pragma for the React JSX Transform plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-plugin-makepot/CHANGELOG.md b/packages/babel-plugin-makepot/CHANGELOG.md
index 00efceb28c075d..7f608c6704635f 100644
--- a/packages/babel-plugin-makepot/CHANGELOG.md
+++ b/packages/babel-plugin-makepot/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.14.0 (2024-12-11)
+
## 6.13.0 (2024-11-27)
## 6.12.0 (2024-11-16)
diff --git a/packages/babel-plugin-makepot/package.json b/packages/babel-plugin-makepot/package.json
index 33d301545c4685..7ddac8d63293c7 100644
--- a/packages/babel-plugin-makepot/package.json
+++ b/packages/babel-plugin-makepot/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-plugin-makepot",
- "version": "6.13.0",
+ "version": "6.14.0-prerelease",
"description": "WordPress Babel internationalization (i18n) plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-preset-default/CHANGELOG.md b/packages/babel-preset-default/CHANGELOG.md
index 4f5ef33b51298b..1401fc5d1452bd 100644
--- a/packages/babel-preset-default/CHANGELOG.md
+++ b/packages/babel-preset-default/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 8.14.0 (2024-12-11)
+
## 8.13.0 (2024-11-27)
## 8.12.0 (2024-11-16)
diff --git a/packages/babel-preset-default/package.json b/packages/babel-preset-default/package.json
index afe1025d604a86..cf8ea53df3f80a 100644
--- a/packages/babel-preset-default/package.json
+++ b/packages/babel-preset-default/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-preset-default",
- "version": "8.13.0",
+ "version": "8.14.0-prerelease",
"description": "Default Babel preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/base-styles/CHANGELOG.md b/packages/base-styles/CHANGELOG.md
index 196c6573d7b872..ccdb7976cd0c20 100644
--- a/packages/base-styles/CHANGELOG.md
+++ b/packages/base-styles/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/base-styles/package.json b/packages/base-styles/package.json
index 2fc026a9ee72ab..24e1ddeace24da 100644
--- a/packages/base-styles/package.json
+++ b/packages/base-styles/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/base-styles",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Base SCSS utilities and variables for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/blob/CHANGELOG.md b/packages/blob/CHANGELOG.md
index 2d518db27bb40a..03c4724426eb6e 100644
--- a/packages/blob/CHANGELOG.md
+++ b/packages/blob/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/blob/package.json b/packages/blob/package.json
index 4ecf6602400496..74fc971128c6a0 100644
--- a/packages/blob/package.json
+++ b/packages/blob/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/blob",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "Blob utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-directory/CHANGELOG.md b/packages/block-directory/CHANGELOG.md
index ff4fac035eaa06..eb6b832b407e12 100644
--- a/packages/block-directory/CHANGELOG.md
+++ b/packages/block-directory/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/block-directory/package.json b/packages/block-directory/package.json
index 2fa0bf52ea126f..ca1d6502420caf 100644
--- a/packages/block-directory/package.json
+++ b/packages/block-directory/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-directory",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Extend editor with block directory features to search, download and install blocks.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-editor/CHANGELOG.md b/packages/block-editor/CHANGELOG.md
index 87dc0459bfb715..06e1c9a4a746ec 100644
--- a/packages/block-editor/CHANGELOG.md
+++ b/packages/block-editor/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 14.9.0 (2024-12-11)
+
## 14.8.0 (2024-11-27)
## 14.7.0 (2024-11-16)
diff --git a/packages/block-editor/package.json b/packages/block-editor/package.json
index 008e02355ac703..5a1fe1410b6e85 100644
--- a/packages/block-editor/package.json
+++ b/packages/block-editor/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-editor",
- "version": "14.8.0",
+ "version": "14.9.0-prerelease",
"description": "Generic block editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-library/CHANGELOG.md b/packages/block-library/CHANGELOG.md
index 47986f12e0fb54..823d89ecd854f3 100644
--- a/packages/block-library/CHANGELOG.md
+++ b/packages/block-library/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 9.14.0 (2024-12-11)
+
## 9.13.0 (2024-11-27)
## 9.12.0 (2024-11-16)
diff --git a/packages/block-library/package.json b/packages/block-library/package.json
index ab95896035c9f0..844e34b0f5cf8d 100644
--- a/packages/block-library/package.json
+++ b/packages/block-library/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-library",
- "version": "9.13.0",
+ "version": "9.14.0-prerelease",
"description": "Block library for the WordPress editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-serialization-default-parser/CHANGELOG.md b/packages/block-serialization-default-parser/CHANGELOG.md
index c7b27f7760d14d..a0e82f4d19b251 100644
--- a/packages/block-serialization-default-parser/CHANGELOG.md
+++ b/packages/block-serialization-default-parser/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/block-serialization-default-parser/package.json b/packages/block-serialization-default-parser/package.json
index 2ea349e5f94d23..1867416ebe9570 100644
--- a/packages/block-serialization-default-parser/package.json
+++ b/packages/block-serialization-default-parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-serialization-default-parser",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Block serialization specification parser for WordPress posts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-serialization-spec-parser/CHANGELOG.md b/packages/block-serialization-spec-parser/CHANGELOG.md
index b23ec04a39a21e..52719d1172dd72 100644
--- a/packages/block-serialization-spec-parser/CHANGELOG.md
+++ b/packages/block-serialization-spec-parser/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/block-serialization-spec-parser/package.json b/packages/block-serialization-spec-parser/package.json
index 0e4c251a8e5f18..c002fda5abcc65 100644
--- a/packages/block-serialization-spec-parser/package.json
+++ b/packages/block-serialization-spec-parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-serialization-spec-parser",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Block serialization specification parser for WordPress posts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/blocks/CHANGELOG.md b/packages/blocks/CHANGELOG.md
index 0fd1b8af928abd..2e5aac914e5784 100644
--- a/packages/blocks/CHANGELOG.md
+++ b/packages/blocks/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 14.3.0 (2024-12-11)
+
## 14.2.0 (2024-11-27)
## 14.1.0 (2024-11-16)
diff --git a/packages/blocks/package.json b/packages/blocks/package.json
index 02f7784ac15aa6..04b9df950c2de2 100644
--- a/packages/blocks/package.json
+++ b/packages/blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/blocks",
- "version": "14.2.0",
+ "version": "14.3.0-prerelease",
"description": "Block API for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/browserslist-config/CHANGELOG.md b/packages/browserslist-config/CHANGELOG.md
index aa13654936f3dc..770dd74df0fcca 100644
--- a/packages/browserslist-config/CHANGELOG.md
+++ b/packages/browserslist-config/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.14.0 (2024-12-11)
+
## 6.13.0 (2024-11-27)
## 6.12.0 (2024-11-16)
diff --git a/packages/browserslist-config/package.json b/packages/browserslist-config/package.json
index 1c3a527226dfaf..4133b51c1097f1 100644
--- a/packages/browserslist-config/package.json
+++ b/packages/browserslist-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/browserslist-config",
- "version": "6.13.0",
+ "version": "6.14.0-prerelease",
"description": "WordPress Browserslist shared configuration.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/commands/CHANGELOG.md b/packages/commands/CHANGELOG.md
index 40ce6d4fc65cfa..4bc86b8f433f2e 100644
--- a/packages/commands/CHANGELOG.md
+++ b/packages/commands/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.14.0 (2024-12-11)
+
## 1.13.0 (2024-11-27)
## 1.12.0 (2024-11-16)
diff --git a/packages/commands/package.json b/packages/commands/package.json
index b28a7f89e6c3d2..03fad24dadbd98 100644
--- a/packages/commands/package.json
+++ b/packages/commands/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/commands",
- "version": "1.13.0",
+ "version": "1.14.0-prerelease",
"description": "Handles the commands menu.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index 2dc35bd54b3eeb..c4c47f43024007 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 29.0.0 (2024-12-11)
+
### Breaking Changes
- Removed the unused `__unstableMotionContext` export ([#67623](https://github.com/WordPress/gutenberg/pull/67623)).
diff --git a/packages/components/package.json b/packages/components/package.json
index a2acf8e2c203d4..c9b37bce93f535 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/components",
- "version": "28.13.0",
+ "version": "29.0.0-prerelease",
"description": "UI components for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/compose/CHANGELOG.md b/packages/compose/CHANGELOG.md
index 739a5f8831cb35..452eacbe289ff3 100644
--- a/packages/compose/CHANGELOG.md
+++ b/packages/compose/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.14.0 (2024-12-11)
+
## 7.13.0 (2024-11-27)
## 7.12.0 (2024-11-16)
diff --git a/packages/compose/package.json b/packages/compose/package.json
index 72c31dc744057e..f649e29481c030 100644
--- a/packages/compose/package.json
+++ b/packages/compose/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/compose",
- "version": "7.13.0",
+ "version": "7.14.0-prerelease",
"description": "WordPress higher-order components (HOCs).",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/core-commands/CHANGELOG.md b/packages/core-commands/CHANGELOG.md
index af0a385fa6275c..fe5f12707b0863 100644
--- a/packages/core-commands/CHANGELOG.md
+++ b/packages/core-commands/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.14.0 (2024-12-11)
+
## 1.13.0 (2024-11-27)
## 1.12.0 (2024-11-16)
diff --git a/packages/core-commands/package.json b/packages/core-commands/package.json
index 2f2f4b0ffeb7fb..9401f68437c0c8 100644
--- a/packages/core-commands/package.json
+++ b/packages/core-commands/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/core-commands",
- "version": "1.13.0",
+ "version": "1.14.0-prerelease",
"description": "WordPress core reusable commands.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/core-data/CHANGELOG.md b/packages/core-data/CHANGELOG.md
index 35b1ab8e2957ed..90395f58fc8023 100644
--- a/packages/core-data/CHANGELOG.md
+++ b/packages/core-data/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.14.0 (2024-12-11)
+
## 7.13.0 (2024-11-27)
## 7.12.0 (2024-11-16)
diff --git a/packages/core-data/package.json b/packages/core-data/package.json
index fe428aeb87288f..97d89f58b9707c 100644
--- a/packages/core-data/package.json
+++ b/packages/core-data/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/core-data",
- "version": "7.13.0",
+ "version": "7.14.0-prerelease",
"description": "Access to and manipulation of core WordPress entities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/create-block-interactive-template/package.json b/packages/create-block-interactive-template/package.json
index 8f59d685df91dd..d71d307951b7fa 100644
--- a/packages/create-block-interactive-template/package.json
+++ b/packages/create-block-interactive-template/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/create-block-interactive-template",
- "version": "2.13.0",
+ "version": "2.14.0-prerelease",
"description": "Template for @wordpress/create-block to create interactive blocks with the Interactivity API.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/create-block-tutorial-template/CHANGELOG.md b/packages/create-block-tutorial-template/CHANGELOG.md
index f219c74dceca6b..c1831445137084 100644
--- a/packages/create-block-tutorial-template/CHANGELOG.md
+++ b/packages/create-block-tutorial-template/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/create-block-tutorial-template/package.json b/packages/create-block-tutorial-template/package.json
index b9f6991c2c153c..cb352c3432c20e 100644
--- a/packages/create-block-tutorial-template/package.json
+++ b/packages/create-block-tutorial-template/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/create-block-tutorial-template",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "This is a template for @wordpress/create-block that creates an example 'Copyright Date' block. This block is used in the official WordPress block development Quick Start Guide.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/create-block/CHANGELOG.md b/packages/create-block/CHANGELOG.md
index ef091827f01497..73522a9be0726d 100644
--- a/packages/create-block/CHANGELOG.md
+++ b/packages/create-block/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.57.0 (2024-12-11)
+
### Internal
- The bundled `rimraf` dependency has been updated from `^3.0.2` to `^5.0.10` ([#67708](https://github.com/WordPress/gutenberg/pull/67708)).
diff --git a/packages/create-block/package.json b/packages/create-block/package.json
index 80cae246804c26..f61d805dcea26a 100644
--- a/packages/create-block/package.json
+++ b/packages/create-block/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/create-block",
- "version": "4.56.0",
+ "version": "4.57.0-prerelease",
"description": "Generates PHP, JS and CSS code for registering a block for a WordPress plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/customize-widgets/CHANGELOG.md b/packages/customize-widgets/CHANGELOG.md
index 6b6735c6fadd9c..95ec034125a5a3 100644
--- a/packages/customize-widgets/CHANGELOG.md
+++ b/packages/customize-widgets/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/customize-widgets/package.json b/packages/customize-widgets/package.json
index 10c3b2dfb510d9..300684cab6f374 100644
--- a/packages/customize-widgets/package.json
+++ b/packages/customize-widgets/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/customize-widgets",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Widgets blocks in Customizer Module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/data-controls/CHANGELOG.md b/packages/data-controls/CHANGELOG.md
index 92eb6f83394213..639bd22ba15da2 100644
--- a/packages/data-controls/CHANGELOG.md
+++ b/packages/data-controls/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/data-controls/package.json b/packages/data-controls/package.json
index 6c4703321c6020..d684c3dc032a87 100644
--- a/packages/data-controls/package.json
+++ b/packages/data-controls/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/data-controls",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "A set of common controls for the @wordpress/data api.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/data/CHANGELOG.md b/packages/data/CHANGELOG.md
index 89bee010837e26..b134a93aa77f6f 100644
--- a/packages/data/CHANGELOG.md
+++ b/packages/data/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 10.14.0 (2024-12-11)
+
## 10.13.0 (2024-11-27)
### Enhancements
diff --git a/packages/data/package.json b/packages/data/package.json
index ccb8f8591c0179..01e93276eb599c 100644
--- a/packages/data/package.json
+++ b/packages/data/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/data",
- "version": "10.13.0",
+ "version": "10.14.0-prerelease",
"description": "Data module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dataviews/CHANGELOG.md b/packages/dataviews/CHANGELOG.md
index 6b6f8ef6b54e11..0468a277ba292e 100644
--- a/packages/dataviews/CHANGELOG.md
+++ b/packages/dataviews/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.10.0 (2024-12-11)
+
## Breaking Changes
- Support showing or hiding title, media and description fields ([#67477](https://github.com/WordPress/gutenberg/pull/67477)).
diff --git a/packages/dataviews/package.json b/packages/dataviews/package.json
index c2d16b664c9040..41cd298e6c076f 100644
--- a/packages/dataviews/package.json
+++ b/packages/dataviews/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/dataviews",
- "version": "4.9.0",
+ "version": "4.10.0-prerelease",
"description": "DataViews is a component that provides an API to render datasets using different types of layouts (table, grid, list, etc.).",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/date/CHANGELOG.md b/packages/date/CHANGELOG.md
index 21ddf975064034..684c189d6b73a8 100644
--- a/packages/date/CHANGELOG.md
+++ b/packages/date/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/date/package.json b/packages/date/package.json
index 0a1052f13d95fc..1c6394aa66f500 100644
--- a/packages/date/package.json
+++ b/packages/date/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/date",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Date module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dependency-extraction-webpack-plugin/CHANGELOG.md b/packages/dependency-extraction-webpack-plugin/CHANGELOG.md
index 4784e2105f6fb1..ace84ad1fedb0c 100644
--- a/packages/dependency-extraction-webpack-plugin/CHANGELOG.md
+++ b/packages/dependency-extraction-webpack-plugin/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.14.0 (2024-12-11)
+
## 6.13.0 (2024-11-27)
## 6.12.0 (2024-11-16)
diff --git a/packages/dependency-extraction-webpack-plugin/package.json b/packages/dependency-extraction-webpack-plugin/package.json
index 5738c18f55fff5..b25031fefb4570 100644
--- a/packages/dependency-extraction-webpack-plugin/package.json
+++ b/packages/dependency-extraction-webpack-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/dependency-extraction-webpack-plugin",
- "version": "6.13.0",
+ "version": "6.14.0-prerelease",
"description": "Extract WordPress script dependencies from webpack bundles.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/deprecated/CHANGELOG.md b/packages/deprecated/CHANGELOG.md
index 3ec1c350bc2d0d..cfbeeca4eddfba 100644
--- a/packages/deprecated/CHANGELOG.md
+++ b/packages/deprecated/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/deprecated/package.json b/packages/deprecated/package.json
index 0da22c081e83d4..3283e332faa0a3 100644
--- a/packages/deprecated/package.json
+++ b/packages/deprecated/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/deprecated",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "Deprecation utility for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/docgen/CHANGELOG.md b/packages/docgen/CHANGELOG.md
index ea879d77247ac2..911bce7b685096 100644
--- a/packages/docgen/CHANGELOG.md
+++ b/packages/docgen/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.14.0 (2024-12-11)
+
## 2.13.0 (2024-11-27)
## 2.12.0 (2024-11-16)
diff --git a/packages/docgen/package.json b/packages/docgen/package.json
index 4b7c5e25efe15c..7c5d1ea3105b52 100644
--- a/packages/docgen/package.json
+++ b/packages/docgen/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/docgen",
- "version": "2.13.0",
+ "version": "2.14.0-prerelease",
"description": "Autogenerate public API documentation from exports and JSDoc comments.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dom-ready/CHANGELOG.md b/packages/dom-ready/CHANGELOG.md
index 27499bdb048a1c..582bb51f7c0a71 100644
--- a/packages/dom-ready/CHANGELOG.md
+++ b/packages/dom-ready/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/dom-ready/package.json b/packages/dom-ready/package.json
index d3aa36e6c6efe5..16ca4b03c2578e 100644
--- a/packages/dom-ready/package.json
+++ b/packages/dom-ready/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/dom-ready",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "Execute callback after the DOM is loaded.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dom/CHANGELOG.md b/packages/dom/CHANGELOG.md
index 0ce2a24565d0d5..9b90dc200d2cfa 100644
--- a/packages/dom/CHANGELOG.md
+++ b/packages/dom/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/dom/package.json b/packages/dom/package.json
index f2b96de10b5b61..5babbf730ba11a 100644
--- a/packages/dom/package.json
+++ b/packages/dom/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/dom",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "DOM utilities module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/e2e-test-utils-playwright/CHANGELOG.md b/packages/e2e-test-utils-playwright/CHANGELOG.md
index b1a35757f7496a..0b834cbfeb4033 100644
--- a/packages/e2e-test-utils-playwright/CHANGELOG.md
+++ b/packages/e2e-test-utils-playwright/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.14.0 (2024-12-11)
+
## 1.13.0 (2024-11-27)
## 1.12.0 (2024-11-16)
diff --git a/packages/e2e-test-utils-playwright/package.json b/packages/e2e-test-utils-playwright/package.json
index 085cc12728928a..84db682b2077f3 100644
--- a/packages/e2e-test-utils-playwright/package.json
+++ b/packages/e2e-test-utils-playwright/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/e2e-test-utils-playwright",
- "version": "1.13.0",
+ "version": "1.14.0-prerelease",
"description": "End-To-End (E2E) test utils for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/e2e-test-utils/CHANGELOG.md b/packages/e2e-test-utils/CHANGELOG.md
index 24f73664bd7dcc..c7f28da583333b 100644
--- a/packages/e2e-test-utils/CHANGELOG.md
+++ b/packages/e2e-test-utils/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 11.14.0 (2024-12-11)
+
## 11.13.0 (2024-11-27)
## 11.12.0 (2024-11-16)
diff --git a/packages/e2e-test-utils/package.json b/packages/e2e-test-utils/package.json
index db983454f0798c..21f40de5c5ad4d 100644
--- a/packages/e2e-test-utils/package.json
+++ b/packages/e2e-test-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/e2e-test-utils",
- "version": "11.13.0",
+ "version": "11.14.0-prerelease",
"description": "End-To-End (E2E) test utils for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/e2e-tests/CHANGELOG.md b/packages/e2e-tests/CHANGELOG.md
index 0148f8b0a51ddb..d4a17ef2a10f7b 100644
--- a/packages/e2e-tests/CHANGELOG.md
+++ b/packages/e2e-tests/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 8.14.0 (2024-12-11)
+
## 8.13.0 (2024-11-27)
## 8.12.0 (2024-11-16)
diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json
index 4e1f817c97714a..3595d86c3b894b 100644
--- a/packages/e2e-tests/package.json
+++ b/packages/e2e-tests/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/e2e-tests",
- "version": "8.13.0",
+ "version": "8.14.0-prerelease",
"description": "End-To-End (E2E) tests for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/edit-post/CHANGELOG.md b/packages/edit-post/CHANGELOG.md
index 47933552311d10..0a6099be916b38 100644
--- a/packages/edit-post/CHANGELOG.md
+++ b/packages/edit-post/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 8.14.0 (2024-12-11)
+
## 8.13.0 (2024-11-27)
## 8.12.0 (2024-11-16)
diff --git a/packages/edit-post/package.json b/packages/edit-post/package.json
index aea81f0568fbe2..f3ea45227e0881 100644
--- a/packages/edit-post/package.json
+++ b/packages/edit-post/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/edit-post",
- "version": "8.13.0",
+ "version": "8.14.0-prerelease",
"description": "Edit Post module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/edit-site/CHANGELOG.md b/packages/edit-site/CHANGELOG.md
index 7143b40a59a1b4..1016783cc8b616 100644
--- a/packages/edit-site/CHANGELOG.md
+++ b/packages/edit-site/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.14.0 (2024-12-11)
+
## 6.13.0 (2024-11-27)
## 6.12.0 (2024-11-16)
diff --git a/packages/edit-site/package.json b/packages/edit-site/package.json
index 81a8164b1e1721..24a9a876639eaa 100644
--- a/packages/edit-site/package.json
+++ b/packages/edit-site/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/edit-site",
- "version": "6.13.0",
+ "version": "6.14.0-prerelease",
"description": "Edit Site Page module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/edit-widgets/CHANGELOG.md b/packages/edit-widgets/CHANGELOG.md
index f4b11636858dcd..cadbb1442cbbb5 100644
--- a/packages/edit-widgets/CHANGELOG.md
+++ b/packages/edit-widgets/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.14.0 (2024-12-11)
+
## 6.13.0 (2024-11-27)
## 6.12.0 (2024-11-16)
diff --git a/packages/edit-widgets/package.json b/packages/edit-widgets/package.json
index 0528348291481a..89950f5594537c 100644
--- a/packages/edit-widgets/package.json
+++ b/packages/edit-widgets/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/edit-widgets",
- "version": "6.13.0",
+ "version": "6.14.0-prerelease",
"description": "Widgets Page module for WordPress..",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/editor/CHANGELOG.md b/packages/editor/CHANGELOG.md
index 5c00b30fbe96d3..570ef8dc81501b 100644
--- a/packages/editor/CHANGELOG.md
+++ b/packages/editor/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 14.14.0 (2024-12-11)
+
## 14.13.0 (2024-11-27)
## 14.12.0 (2024-11-16)
diff --git a/packages/editor/package.json b/packages/editor/package.json
index 59d3caded3d322..7aadb123e6acc0 100644
--- a/packages/editor/package.json
+++ b/packages/editor/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/editor",
- "version": "14.13.0",
+ "version": "14.14.0-prerelease",
"description": "Enhanced block editor for WordPress posts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/element/CHANGELOG.md b/packages/element/CHANGELOG.md
index 50fc6e21756b92..3bd53cb55978e8 100644
--- a/packages/element/CHANGELOG.md
+++ b/packages/element/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.14.0 (2024-12-11)
+
## 6.13.0 (2024-11-27)
## 6.12.0 (2024-11-16)
diff --git a/packages/element/package.json b/packages/element/package.json
index 770d87ef021748..c1ed918d6c61cd 100644
--- a/packages/element/package.json
+++ b/packages/element/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/element",
- "version": "6.13.0",
+ "version": "6.14.0-prerelease",
"description": "Element React module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/env/CHANGELOG.md b/packages/env/CHANGELOG.md
index 71be91523ed153..0298e21c810009 100644
--- a/packages/env/CHANGELOG.md
+++ b/packages/env/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 10.14.0 (2024-12-11)
+
### Enhancements
- Add phpMyAdmin as an optional service. Enabled via the new `phpmyadminPort` environment config, as well as env vars `WP_ENV_PHPMYADMIN_PORT` and `WP_ENV_TESTS_PHPMYADMIN_PORT`.
diff --git a/packages/env/package.json b/packages/env/package.json
index 118a81a30cc196..71144a94a64ead 100644
--- a/packages/env/package.json
+++ b/packages/env/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/env",
- "version": "10.13.0",
+ "version": "10.14.0-prerelease",
"description": "A zero-config, self contained local WordPress environment for development and testing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/escape-html/CHANGELOG.md b/packages/escape-html/CHANGELOG.md
index d1eff0c72fed56..ddad2e437b0abf 100644
--- a/packages/escape-html/CHANGELOG.md
+++ b/packages/escape-html/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.14.0 (2024-12-11)
+
## 3.13.0 (2024-11-27)
## 3.12.0 (2024-11-16)
diff --git a/packages/escape-html/package.json b/packages/escape-html/package.json
index 12e9ae354defa3..84c7a480af1414 100644
--- a/packages/escape-html/package.json
+++ b/packages/escape-html/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/escape-html",
- "version": "3.13.0",
+ "version": "3.14.0-prerelease",
"description": "Escape HTML utils.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md
index a53fe75dee448f..8dcb02746344f0 100644
--- a/packages/eslint-plugin/CHANGELOG.md
+++ b/packages/eslint-plugin/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 22.0.0 (2024-12-11)
+
### Breaking Changes
- The minimum required TypeScript version changed to 5 ([#67461](https://github.com/WordPress/gutenberg/pull/67461))
diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json
index 1e75a2c131f229..8f7c195a56ab4d 100644
--- a/packages/eslint-plugin/package.json
+++ b/packages/eslint-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/eslint-plugin",
- "version": "21.6.0",
+ "version": "22.0.0-prerelease",
"description": "ESLint plugin for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/fields/CHANGELOG.md b/packages/fields/CHANGELOG.md
index c567ae42058bf5..a94e566bca3943 100644
--- a/packages/fields/CHANGELOG.md
+++ b/packages/fields/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 0.6.0 (2024-12-11)
+
## 0.5.0 (2024-11-27)
## 0.4.0 (2024-11-16)
diff --git a/packages/fields/package.json b/packages/fields/package.json
index beaaf4f9813013..1dcb2acef13f6d 100644
--- a/packages/fields/package.json
+++ b/packages/fields/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/fields",
- "version": "0.5.0",
+ "version": "0.6.0-prerelease",
"description": "DataViews is a component that provides an API to render datasets using different types of layouts (table, grid, list, etc.).",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/format-library/CHANGELOG.md b/packages/format-library/CHANGELOG.md
index 99c174ca029c62..4ba16131ee9835 100644
--- a/packages/format-library/CHANGELOG.md
+++ b/packages/format-library/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/format-library/package.json b/packages/format-library/package.json
index 94efb550519ddc..1f7e88127cef23 100644
--- a/packages/format-library/package.json
+++ b/packages/format-library/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/format-library",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Format library for the WordPress editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/hooks/CHANGELOG.md b/packages/hooks/CHANGELOG.md
index be18dab3225a2b..18e4445c8b3169 100644
--- a/packages/hooks/CHANGELOG.md
+++ b/packages/hooks/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/hooks/package.json b/packages/hooks/package.json
index c9e652d30d83e1..c2d724d44bab7e 100644
--- a/packages/hooks/package.json
+++ b/packages/hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/hooks",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "WordPress hooks library.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/html-entities/CHANGELOG.md b/packages/html-entities/CHANGELOG.md
index 98b3b3c483325e..2b5fbf25e11b3e 100644
--- a/packages/html-entities/CHANGELOG.md
+++ b/packages/html-entities/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/html-entities/package.json b/packages/html-entities/package.json
index f99b2ca99e5fbe..ce6b60ac0599d8 100644
--- a/packages/html-entities/package.json
+++ b/packages/html-entities/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/html-entities",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "HTML entity utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/i18n/CHANGELOG.md b/packages/i18n/CHANGELOG.md
index b1d94cde634c0d..0d9c832ddf9d1e 100644
--- a/packages/i18n/CHANGELOG.md
+++ b/packages/i18n/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index 71f6ea646a93af..d5ba99c00d4c0f 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/i18n",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "WordPress internationalization (i18n) library.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/icons/CHANGELOG.md b/packages/icons/CHANGELOG.md
index 84263e1135ac4d..d622019f1ee783 100644
--- a/packages/icons/CHANGELOG.md
+++ b/packages/icons/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 10.14.0 (2024-12-11)
+
## 10.13.0 (2024-11-27)
## 10.12.0 (2024-11-16)
diff --git a/packages/icons/package.json b/packages/icons/package.json
index fb00a4b8d27e8b..672b6537c1a4fc 100644
--- a/packages/icons/package.json
+++ b/packages/icons/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/icons",
- "version": "10.13.0",
+ "version": "10.14.0-prerelease",
"description": "WordPress Icons package, based on dashicon.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/interactivity-router/CHANGELOG.md b/packages/interactivity-router/CHANGELOG.md
index b79850dc7fe545..c42da0fc72602a 100644
--- a/packages/interactivity-router/CHANGELOG.md
+++ b/packages/interactivity-router/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.14.0 (2024-12-11)
+
## 2.13.0 (2024-11-27)
## 2.12.0 (2024-11-16)
diff --git a/packages/interactivity-router/package.json b/packages/interactivity-router/package.json
index 30881e554e93f0..e74bbe138ac42f 100644
--- a/packages/interactivity-router/package.json
+++ b/packages/interactivity-router/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/interactivity-router",
- "version": "2.13.0",
+ "version": "2.14.0-prerelease",
"description": "Package that exposes state and actions from the `core/router` store, part of the Interactivity API.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/interactivity/CHANGELOG.md b/packages/interactivity/CHANGELOG.md
index 587d14440d8116..6b32e4ec35a978 100644
--- a/packages/interactivity/CHANGELOG.md
+++ b/packages/interactivity/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.14.0 (2024-12-11)
+
## 6.13.0 (2024-11-27)
## 6.12.0 (2024-11-16)
diff --git a/packages/interactivity/package.json b/packages/interactivity/package.json
index 90356de25b646a..d7b673f3b1d23f 100644
--- a/packages/interactivity/package.json
+++ b/packages/interactivity/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/interactivity",
- "version": "6.13.0",
+ "version": "6.14.0-prerelease",
"description": "Package that provides a standard and simple way to handle the frontend interactivity of Gutenberg blocks.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/interface/CHANGELOG.md b/packages/interface/CHANGELOG.md
index 56b01075257331..a0ed9cd83525cc 100644
--- a/packages/interface/CHANGELOG.md
+++ b/packages/interface/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 8.3.0 (2024-12-11)
+
## 8.2.0 (2024-11-27)
## 8.1.0 (2024-11-16)
diff --git a/packages/interface/package.json b/packages/interface/package.json
index 2f3ada022dabe4..ce09071aba14f9 100644
--- a/packages/interface/package.json
+++ b/packages/interface/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/interface",
- "version": "8.2.0",
+ "version": "8.3.0-prerelease",
"description": "Interface module for WordPress. The package contains shared functionality across the modern JavaScript-based WordPress screens.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/is-shallow-equal/CHANGELOG.md b/packages/is-shallow-equal/CHANGELOG.md
index 6308dd484c728a..3c6e84b8184eb8 100644
--- a/packages/is-shallow-equal/CHANGELOG.md
+++ b/packages/is-shallow-equal/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/is-shallow-equal/package.json b/packages/is-shallow-equal/package.json
index bc987f67aca88e..5a945ea65ae1e6 100644
--- a/packages/is-shallow-equal/package.json
+++ b/packages/is-shallow-equal/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/is-shallow-equal",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Test for shallow equality between two objects or arrays.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/jest-console/CHANGELOG.md b/packages/jest-console/CHANGELOG.md
index 67f41af5c7e3f2..d0e4df6942eb50 100644
--- a/packages/jest-console/CHANGELOG.md
+++ b/packages/jest-console/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 8.14.0 (2024-12-11)
+
## 8.13.0 (2024-11-27)
## 8.12.0 (2024-11-16)
diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json
index 638ce7fa523238..5dbb81e5f4c547 100644
--- a/packages/jest-console/package.json
+++ b/packages/jest-console/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/jest-console",
- "version": "8.13.0",
+ "version": "8.14.0-prerelease",
"description": "Custom Jest matchers for the Console object.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/jest-preset-default/CHANGELOG.md b/packages/jest-preset-default/CHANGELOG.md
index d98552ff45f716..6e5bbdd5555bcd 100644
--- a/packages/jest-preset-default/CHANGELOG.md
+++ b/packages/jest-preset-default/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 12.14.0 (2024-12-11)
+
## 12.13.0 (2024-11-27)
## 12.12.0 (2024-11-16)
diff --git a/packages/jest-preset-default/package.json b/packages/jest-preset-default/package.json
index 659c0b78221519..c131b38e7201e7 100644
--- a/packages/jest-preset-default/package.json
+++ b/packages/jest-preset-default/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/jest-preset-default",
- "version": "12.13.0",
+ "version": "12.14.0-prerelease",
"description": "Default Jest preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/jest-puppeteer-axe/CHANGELOG.md b/packages/jest-puppeteer-axe/CHANGELOG.md
index d54c3a57804f08..3c8ba71b6e3e5d 100644
--- a/packages/jest-puppeteer-axe/CHANGELOG.md
+++ b/packages/jest-puppeteer-axe/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.14.0 (2024-12-11)
+
## 7.13.0 (2024-11-27)
## 7.12.0 (2024-11-16)
diff --git a/packages/jest-puppeteer-axe/package.json b/packages/jest-puppeteer-axe/package.json
index c94e1ba4defbde..3bc406a9fd24d7 100644
--- a/packages/jest-puppeteer-axe/package.json
+++ b/packages/jest-puppeteer-axe/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/jest-puppeteer-axe",
- "version": "7.13.0",
+ "version": "7.14.0-prerelease",
"description": "Axe API integration with Jest and Puppeteer.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/keyboard-shortcuts/CHANGELOG.md b/packages/keyboard-shortcuts/CHANGELOG.md
index 67daf5426b3272..55554040ece4ff 100644
--- a/packages/keyboard-shortcuts/CHANGELOG.md
+++ b/packages/keyboard-shortcuts/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/keyboard-shortcuts/package.json b/packages/keyboard-shortcuts/package.json
index 8510d99a6f8d14..64d9303766c7b6 100644
--- a/packages/keyboard-shortcuts/package.json
+++ b/packages/keyboard-shortcuts/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/keyboard-shortcuts",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Handling keyboard shortcuts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/keycodes/CHANGELOG.md b/packages/keycodes/CHANGELOG.md
index 46ce387d6d058b..14542f4aa4da68 100644
--- a/packages/keycodes/CHANGELOG.md
+++ b/packages/keycodes/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/keycodes/package.json b/packages/keycodes/package.json
index cc261f4eecf668..39dd24ad3372f2 100644
--- a/packages/keycodes/package.json
+++ b/packages/keycodes/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/keycodes",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "Keycodes utilities for WordPress. Used to check for keyboard events across browsers/operating systems.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/lazy-import/CHANGELOG.md b/packages/lazy-import/CHANGELOG.md
index d5cff8b39af07f..dacbba1f0060bf 100644
--- a/packages/lazy-import/CHANGELOG.md
+++ b/packages/lazy-import/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.14.0 (2024-12-11)
+
## 2.13.0 (2024-11-27)
## 2.12.0 (2024-11-16)
diff --git a/packages/lazy-import/package.json b/packages/lazy-import/package.json
index f7bf8c7b0d3f3d..ac6e0a2dd91417 100644
--- a/packages/lazy-import/package.json
+++ b/packages/lazy-import/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/lazy-import",
- "version": "2.13.0",
+ "version": "2.14.0-prerelease",
"description": "Lazily import a module, installing it automatically if missing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/list-reusable-blocks/CHANGELOG.md b/packages/list-reusable-blocks/CHANGELOG.md
index 59b8fa9500fde7..b1db0286dbfeb8 100644
--- a/packages/list-reusable-blocks/CHANGELOG.md
+++ b/packages/list-reusable-blocks/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/list-reusable-blocks/package.json b/packages/list-reusable-blocks/package.json
index 31fd970e2d8da3..4756308a4cdc57 100644
--- a/packages/list-reusable-blocks/package.json
+++ b/packages/list-reusable-blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/list-reusable-blocks",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Adding Export/Import support to the reusable blocks listing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/media-utils/CHANGELOG.md b/packages/media-utils/CHANGELOG.md
index 2cfcbaa4b2e8ba..06d5211b103323 100644
--- a/packages/media-utils/CHANGELOG.md
+++ b/packages/media-utils/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/media-utils/package.json b/packages/media-utils/package.json
index 3a2713eed4dacb..2541113e786ebf 100644
--- a/packages/media-utils/package.json
+++ b/packages/media-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/media-utils",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "WordPress Media Upload Utils.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/notices/CHANGELOG.md b/packages/notices/CHANGELOG.md
index 68c4ef7f85ab5d..a75201cfdd4f02 100644
--- a/packages/notices/CHANGELOG.md
+++ b/packages/notices/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/notices/package.json b/packages/notices/package.json
index 7f0e0dc71532c1..99592b5800ec11 100644
--- a/packages/notices/package.json
+++ b/packages/notices/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/notices",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "State management for notices.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/npm-package-json-lint-config/CHANGELOG.md b/packages/npm-package-json-lint-config/CHANGELOG.md
index 132f6ffccdd23c..8c1b85aff77c72 100644
--- a/packages/npm-package-json-lint-config/CHANGELOG.md
+++ b/packages/npm-package-json-lint-config/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/npm-package-json-lint-config/package.json b/packages/npm-package-json-lint-config/package.json
index 4dda73b91d2ed2..371329b229ea3f 100644
--- a/packages/npm-package-json-lint-config/package.json
+++ b/packages/npm-package-json-lint-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/npm-package-json-lint-config",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "WordPress npm-package-json-lint shareable configuration.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/nux/CHANGELOG.md b/packages/nux/CHANGELOG.md
index ddf1f9091471d0..f237636fc665e0 100644
--- a/packages/nux/CHANGELOG.md
+++ b/packages/nux/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 9.14.0 (2024-12-11)
+
## 9.13.0 (2024-11-27)
## 9.12.0 (2024-11-16)
diff --git a/packages/nux/package.json b/packages/nux/package.json
index 13a803af1ad447..ab581d81f82dd4 100644
--- a/packages/nux/package.json
+++ b/packages/nux/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/nux",
- "version": "9.13.0",
+ "version": "9.14.0-prerelease",
"description": "NUX (New User eXperience) module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/patterns/CHANGELOG.md b/packages/patterns/CHANGELOG.md
index 975065d0f2b423..be2d674bf65ae0 100644
--- a/packages/patterns/CHANGELOG.md
+++ b/packages/patterns/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.14.0 (2024-12-11)
+
## 2.13.0 (2024-11-27)
## 2.12.0 (2024-11-16)
diff --git a/packages/patterns/package.json b/packages/patterns/package.json
index b0c6e81f1e2498..1a18a541fef60e 100644
--- a/packages/patterns/package.json
+++ b/packages/patterns/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/patterns",
- "version": "2.13.0",
+ "version": "2.14.0-prerelease",
"description": "Management of user pattern editing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/plugins/CHANGELOG.md b/packages/plugins/CHANGELOG.md
index fc9199892ade1d..7310b5e0c7e766 100644
--- a/packages/plugins/CHANGELOG.md
+++ b/packages/plugins/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.14.0 (2024-12-11)
+
## 7.13.0 (2024-11-27)
## 7.12.0 (2024-11-16)
diff --git a/packages/plugins/package.json b/packages/plugins/package.json
index 97c0ac64259905..4ae47a3a0df717 100644
--- a/packages/plugins/package.json
+++ b/packages/plugins/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/plugins",
- "version": "7.13.0",
+ "version": "7.14.0-prerelease",
"description": "Plugins module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/postcss-plugins-preset/CHANGELOG.md b/packages/postcss-plugins-preset/CHANGELOG.md
index e271d53cdc73f9..b1425332402f50 100644
--- a/packages/postcss-plugins-preset/CHANGELOG.md
+++ b/packages/postcss-plugins-preset/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/postcss-plugins-preset/package.json b/packages/postcss-plugins-preset/package.json
index 98c2de79108d66..d5559911533c8c 100644
--- a/packages/postcss-plugins-preset/package.json
+++ b/packages/postcss-plugins-preset/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/postcss-plugins-preset",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "PostCSS sharable plugins preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/postcss-themes/CHANGELOG.md b/packages/postcss-themes/CHANGELOG.md
index efdb8fb1aa808d..32ebd24aa94e1c 100644
--- a/packages/postcss-themes/CHANGELOG.md
+++ b/packages/postcss-themes/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.14.0 (2024-12-11)
+
## 6.13.0 (2024-11-27)
## 6.12.0 (2024-11-16)
diff --git a/packages/postcss-themes/package.json b/packages/postcss-themes/package.json
index c03da4d1f06a72..254ba06f4fb00d 100644
--- a/packages/postcss-themes/package.json
+++ b/packages/postcss-themes/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/postcss-themes",
- "version": "6.13.0",
+ "version": "6.14.0-prerelease",
"description": "PostCSS plugin to generate theme colors.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/preferences-persistence/CHANGELOG.md b/packages/preferences-persistence/CHANGELOG.md
index 3f75a6bbf49c77..5be962a36256a2 100644
--- a/packages/preferences-persistence/CHANGELOG.md
+++ b/packages/preferences-persistence/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.14.0 (2024-12-11)
+
## 2.13.0 (2024-11-27)
## 2.12.0 (2024-11-16)
diff --git a/packages/preferences-persistence/package.json b/packages/preferences-persistence/package.json
index c9343b28b3e439..b0274f304ca858 100644
--- a/packages/preferences-persistence/package.json
+++ b/packages/preferences-persistence/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/preferences-persistence",
- "version": "2.13.0",
+ "version": "2.14.0-prerelease",
"description": "Persistence utilities for `wordpress/preferences`.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/preferences/CHANGELOG.md b/packages/preferences/CHANGELOG.md
index 8453a061cfdfa7..d82d770bd70e23 100644
--- a/packages/preferences/CHANGELOG.md
+++ b/packages/preferences/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/preferences/package.json b/packages/preferences/package.json
index 9c262dff51fbff..ee3b7bc21cbbb6 100644
--- a/packages/preferences/package.json
+++ b/packages/preferences/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/preferences",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "Utilities for managing WordPress preferences.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/prettier-config/CHANGELOG.md b/packages/prettier-config/CHANGELOG.md
index e15c0e2aad79fc..981dc020749944 100644
--- a/packages/prettier-config/CHANGELOG.md
+++ b/packages/prettier-config/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json
index 45f7374e06fbf7..8686fa8331a9d3 100644
--- a/packages/prettier-config/package.json
+++ b/packages/prettier-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/prettier-config",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "WordPress Prettier shared configuration.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/primitives/CHANGELOG.md b/packages/primitives/CHANGELOG.md
index 29211c9586ede4..73b568eca5ffad 100644
--- a/packages/primitives/CHANGELOG.md
+++ b/packages/primitives/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/primitives/package.json b/packages/primitives/package.json
index 1f024a64bce463..d9c41745b72358 100644
--- a/packages/primitives/package.json
+++ b/packages/primitives/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/primitives",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "WordPress cross-platform primitives.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/priority-queue/CHANGELOG.md b/packages/priority-queue/CHANGELOG.md
index 5427d3d5ff7616..8b76778cacb2c9 100644
--- a/packages/priority-queue/CHANGELOG.md
+++ b/packages/priority-queue/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.14.0 (2024-12-11)
+
## 3.13.0 (2024-11-27)
## 3.12.0 (2024-11-16)
diff --git a/packages/priority-queue/package.json b/packages/priority-queue/package.json
index eb213ffe2d031a..96903a6c8595ab 100644
--- a/packages/priority-queue/package.json
+++ b/packages/priority-queue/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/priority-queue",
- "version": "3.13.0",
+ "version": "3.14.0-prerelease",
"description": "Generic browser priority queue.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/private-apis/CHANGELOG.md b/packages/private-apis/CHANGELOG.md
index 8792e587a83f16..497e0b1bd7e9c8 100644
--- a/packages/private-apis/CHANGELOG.md
+++ b/packages/private-apis/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.14.0 (2024-12-11)
+
## 1.13.0 (2024-11-27)
## 1.12.0 (2024-11-16)
diff --git a/packages/private-apis/package.json b/packages/private-apis/package.json
index 1436270e2c7f49..c5efac2c2727f2 100644
--- a/packages/private-apis/package.json
+++ b/packages/private-apis/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/private-apis",
- "version": "1.13.0",
+ "version": "1.14.0-prerelease",
"description": "Internal experimental APIs for WordPress core.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/project-management-automation/CHANGELOG.md b/packages/project-management-automation/CHANGELOG.md
index b6376be2fd6e0c..fdcb72a1312db4 100644
--- a/packages/project-management-automation/CHANGELOG.md
+++ b/packages/project-management-automation/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.14.0 (2024-12-11)
+
## 2.13.0 (2024-11-27)
## 2.12.0 (2024-11-16)
diff --git a/packages/project-management-automation/package.json b/packages/project-management-automation/package.json
index 95c475c5689c24..6a0d648c68c6ae 100644
--- a/packages/project-management-automation/package.json
+++ b/packages/project-management-automation/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/project-management-automation",
- "version": "2.13.0",
+ "version": "2.14.0-prerelease",
"description": "GitHub Action that implements various automation to assist with managing the Gutenberg GitHub repository.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/react-i18n/CHANGELOG.md b/packages/react-i18n/CHANGELOG.md
index ed872fe9cd145c..0c750681dd32a4 100644
--- a/packages/react-i18n/CHANGELOG.md
+++ b/packages/react-i18n/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/react-i18n/package.json b/packages/react-i18n/package.json
index 439596ec2b5d50..29f82a420d237b 100644
--- a/packages/react-i18n/package.json
+++ b/packages/react-i18n/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/react-i18n",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "React bindings for @wordpress/i18n.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/readable-js-assets-webpack-plugin/CHANGELOG.md b/packages/readable-js-assets-webpack-plugin/CHANGELOG.md
index 08912695e5a8a5..e31f645fab52bf 100644
--- a/packages/readable-js-assets-webpack-plugin/CHANGELOG.md
+++ b/packages/readable-js-assets-webpack-plugin/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.14.0 (2024-12-11)
+
## 3.13.0 (2024-11-27)
## 3.12.0 (2024-11-16)
diff --git a/packages/readable-js-assets-webpack-plugin/package.json b/packages/readable-js-assets-webpack-plugin/package.json
index 5fa231d98088db..997b91bc37a6aa 100644
--- a/packages/readable-js-assets-webpack-plugin/package.json
+++ b/packages/readable-js-assets-webpack-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/readable-js-assets-webpack-plugin",
- "version": "3.13.0",
+ "version": "3.14.0-prerelease",
"description": "Generate a readable JS file for each JS asset.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/redux-routine/CHANGELOG.md b/packages/redux-routine/CHANGELOG.md
index afc65f590b5b66..5d0d032adc2b5a 100644
--- a/packages/redux-routine/CHANGELOG.md
+++ b/packages/redux-routine/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/redux-routine/package.json b/packages/redux-routine/package.json
index 4946cdf6dcaada..924713125caccd 100644
--- a/packages/redux-routine/package.json
+++ b/packages/redux-routine/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/redux-routine",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Redux middleware for generator coroutines.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/reusable-blocks/CHANGELOG.md b/packages/reusable-blocks/CHANGELOG.md
index 83ee4e4c1add3f..d65b1f8186ecfd 100644
--- a/packages/reusable-blocks/CHANGELOG.md
+++ b/packages/reusable-blocks/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/reusable-blocks/package.json b/packages/reusable-blocks/package.json
index b56837df1d34c5..4202e3f93e596d 100644
--- a/packages/reusable-blocks/package.json
+++ b/packages/reusable-blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/reusable-blocks",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "Reusable blocks utilities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/rich-text/CHANGELOG.md b/packages/rich-text/CHANGELOG.md
index 2239fbd11ceedc..a981325b3c33f1 100644
--- a/packages/rich-text/CHANGELOG.md
+++ b/packages/rich-text/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.14.0 (2024-12-11)
+
## 7.13.0 (2024-11-27)
## 7.12.0 (2024-11-16)
diff --git a/packages/rich-text/package.json b/packages/rich-text/package.json
index 99637e6023799e..82f05b03b7c878 100644
--- a/packages/rich-text/package.json
+++ b/packages/rich-text/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/rich-text",
- "version": "7.13.0",
+ "version": "7.14.0-prerelease",
"description": "Rich text value and manipulation API.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/router/CHANGELOG.md b/packages/router/CHANGELOG.md
index 07ff407d8435ce..661dce80f426a1 100644
--- a/packages/router/CHANGELOG.md
+++ b/packages/router/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.14.0 (2024-12-11)
+
## 1.13.0 (2024-11-27)
## 1.12.0 (2024-11-16)
diff --git a/packages/router/package.json b/packages/router/package.json
index 66a64f4ddc5baa..2b933cb8e06f41 100644
--- a/packages/router/package.json
+++ b/packages/router/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/router",
- "version": "1.13.0",
+ "version": "1.14.0-prerelease",
"description": "Router API for WordPress pages.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/scripts/CHANGELOG.md b/packages/scripts/CHANGELOG.md
index d9386bda16fca8..42afdd02e0d605 100644
--- a/packages/scripts/CHANGELOG.md
+++ b/packages/scripts/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 30.7.0 (2024-12-11)
+
### Internal
- The bundled `sass` dependency has been updated from `^1.35.2` to `^1.50.1` ([#67572](https://github.com/WordPress/gutenberg/pull/67572)).
diff --git a/packages/scripts/package.json b/packages/scripts/package.json
index 60691a778fa656..b450d7c8708053 100644
--- a/packages/scripts/package.json
+++ b/packages/scripts/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/scripts",
- "version": "30.6.0",
+ "version": "30.7.0-prerelease",
"description": "Collection of reusable scripts for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/server-side-render/CHANGELOG.md b/packages/server-side-render/CHANGELOG.md
index 66a8d7c03136bf..57ebb0f3b81fe8 100644
--- a/packages/server-side-render/CHANGELOG.md
+++ b/packages/server-side-render/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.14.0 (2024-12-11)
+
## 5.13.0 (2024-11-27)
## 5.12.0 (2024-11-16)
diff --git a/packages/server-side-render/package.json b/packages/server-side-render/package.json
index d2cd9aa93d2cef..98b97a3d20584a 100644
--- a/packages/server-side-render/package.json
+++ b/packages/server-side-render/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/server-side-render",
- "version": "5.13.0",
+ "version": "5.14.0-prerelease",
"description": "The component used with WordPress to server-side render a preview of dynamic blocks to display in the editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/shortcode/CHANGELOG.md b/packages/shortcode/CHANGELOG.md
index 2e461f1bc85c1b..6deb33613cf025 100644
--- a/packages/shortcode/CHANGELOG.md
+++ b/packages/shortcode/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## Enhancements
- The package now has built-in TypeScript definitions 🎉 ([#67416](https://github.com/WordPress/gutenberg/pull/67416))
diff --git a/packages/shortcode/package.json b/packages/shortcode/package.json
index c5495364a03c45..512e8fefbef479 100644
--- a/packages/shortcode/package.json
+++ b/packages/shortcode/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/shortcode",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "Shortcode module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/style-engine/CHANGELOG.md b/packages/style-engine/CHANGELOG.md
index 768ea039f24f36..5d117fdf8ad8ed 100644
--- a/packages/style-engine/CHANGELOG.md
+++ b/packages/style-engine/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.14.0 (2024-12-11)
+
## 2.13.0 (2024-11-27)
## 2.12.0 (2024-11-16)
diff --git a/packages/style-engine/package.json b/packages/style-engine/package.json
index bec29df32f7628..f6f5569a452c6c 100644
--- a/packages/style-engine/package.json
+++ b/packages/style-engine/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/style-engine",
- "version": "2.13.0",
+ "version": "2.14.0-prerelease",
"description": "A suite of parsers and compilers for WordPress styles.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/stylelint-config/CHANGELOG.md b/packages/stylelint-config/CHANGELOG.md
index 5e6fa218da6f85..d40b5868bef6fc 100644
--- a/packages/stylelint-config/CHANGELOG.md
+++ b/packages/stylelint-config/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 23.6.0 (2024-12-11)
+
## 23.5.0 (2024-11-27)
## 23.4.0 (2024-11-16)
diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json
index 0c35601e9c5353..cf2593e8bb47dd 100644
--- a/packages/stylelint-config/package.json
+++ b/packages/stylelint-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/stylelint-config",
- "version": "23.5.0",
+ "version": "23.6.0-prerelease",
"description": "stylelint config for WordPress development.",
"author": "The WordPress Contributors",
"license": "MIT",
diff --git a/packages/sync/CHANGELOG.md b/packages/sync/CHANGELOG.md
index b8ecad37f3f5d8..c73cf441e7d649 100644
--- a/packages/sync/CHANGELOG.md
+++ b/packages/sync/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.14.0 (2024-12-11)
+
## 1.13.0 (2024-11-27)
## 1.12.0 (2024-11-16)
diff --git a/packages/sync/package.json b/packages/sync/package.json
index 042e1544199296..24dfb105676962 100644
--- a/packages/sync/package.json
+++ b/packages/sync/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/sync",
- "version": "1.13.0",
+ "version": "1.14.0-prerelease",
"description": "Sync Data.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/token-list/CHANGELOG.md b/packages/token-list/CHANGELOG.md
index 0b72a43de88d4f..e4166268d5aae0 100644
--- a/packages/token-list/CHANGELOG.md
+++ b/packages/token-list/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.14.0 (2024-12-11)
+
## 3.13.0 (2024-11-27)
## 3.12.0 (2024-11-16)
diff --git a/packages/token-list/package.json b/packages/token-list/package.json
index 50fe379c1a08e0..2da7e08b41e325 100644
--- a/packages/token-list/package.json
+++ b/packages/token-list/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/token-list",
- "version": "3.13.0",
+ "version": "3.14.0-prerelease",
"description": "Constructable, plain JavaScript DOMTokenList implementation, supporting non-browser runtimes.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/undo-manager/CHANGELOG.md b/packages/undo-manager/CHANGELOG.md
index e84658632a054d..618a17c84bf8a9 100644
--- a/packages/undo-manager/CHANGELOG.md
+++ b/packages/undo-manager/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.14.0 (2024-12-11)
+
## 1.13.0 (2024-11-27)
## 1.12.0 (2024-11-16)
diff --git a/packages/undo-manager/package.json b/packages/undo-manager/package.json
index 5046d9591a8c08..67a8b188b2f354 100644
--- a/packages/undo-manager/package.json
+++ b/packages/undo-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/undo-manager",
- "version": "1.13.0",
+ "version": "1.14.0-prerelease",
"description": "A small package to manage undo/redo.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/url/CHANGELOG.md b/packages/url/CHANGELOG.md
index e4273fc57f2e0f..b3d57acc53c15f 100644
--- a/packages/url/CHANGELOG.md
+++ b/packages/url/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/url/package.json b/packages/url/package.json
index 8e3fc0dc140cd8..6a2cbee6ac3b22 100644
--- a/packages/url/package.json
+++ b/packages/url/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/url",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "WordPress URL utilities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/viewport/CHANGELOG.md b/packages/viewport/CHANGELOG.md
index faf1bd4b437f0d..bfbfe1c7629468 100644
--- a/packages/viewport/CHANGELOG.md
+++ b/packages/viewport/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.14.0 (2024-12-11)
+
## 6.13.0 (2024-11-27)
## 6.12.0 (2024-11-16)
diff --git a/packages/viewport/package.json b/packages/viewport/package.json
index a3d15a587645c9..f68bdd339f3e13 100644
--- a/packages/viewport/package.json
+++ b/packages/viewport/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/viewport",
- "version": "6.13.0",
+ "version": "6.14.0-prerelease",
"description": "Viewport module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/warning/CHANGELOG.md b/packages/warning/CHANGELOG.md
index 424ab1403506a6..b50db13eec793e 100644
--- a/packages/warning/CHANGELOG.md
+++ b/packages/warning/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.14.0 (2024-12-11)
+
## 3.13.0 (2024-11-27)
## 3.12.0 (2024-11-16)
diff --git a/packages/warning/package.json b/packages/warning/package.json
index e41b9205d6d374..7b1bbe2385b580 100644
--- a/packages/warning/package.json
+++ b/packages/warning/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/warning",
- "version": "3.13.0",
+ "version": "3.14.0-prerelease",
"description": "Warning utility for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/widgets/CHANGELOG.md b/packages/widgets/CHANGELOG.md
index b1c63a0ca7f4c2..f225f20e80c005 100644
--- a/packages/widgets/CHANGELOG.md
+++ b/packages/widgets/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/widgets/package.json b/packages/widgets/package.json
index 0ab7fe138cf513..48b4f0d07177b3 100644
--- a/packages/widgets/package.json
+++ b/packages/widgets/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/widgets",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "Functionality used by the widgets block editor in the Widgets screen and the Customizer.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/wordcount/CHANGELOG.md b/packages/wordcount/CHANGELOG.md
index f323aa3a810d7a..9dab5fb73d8564 100644
--- a/packages/wordcount/CHANGELOG.md
+++ b/packages/wordcount/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.14.0 (2024-12-11)
+
## 4.13.0 (2024-11-27)
## 4.12.0 (2024-11-16)
diff --git a/packages/wordcount/package.json b/packages/wordcount/package.json
index e4e7efbba33256..93d3e91215e3c6 100644
--- a/packages/wordcount/package.json
+++ b/packages/wordcount/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/wordcount",
- "version": "4.13.0",
+ "version": "4.14.0-prerelease",
"description": "WordPress word count utility.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
From d2d0762b21adce0791fefd155c239079e8bbb89d Mon Sep 17 00:00:00 2001
From: Gutenberg Repository Automation
Date: Wed, 11 Dec 2024 07:51:37 +0000
Subject: [PATCH 002/163] chore(release): publish
- @wordpress/a11y@4.14.0
- @wordpress/annotations@3.14.0
- @wordpress/api-fetch@7.14.0
- @wordpress/autop@4.14.0
- @wordpress/babel-plugin-import-jsx-pragma@5.14.0
- @wordpress/babel-plugin-makepot@6.14.0
- @wordpress/babel-preset-default@8.14.0
- @wordpress/base-styles@5.14.0
- @wordpress/blob@4.14.0
- @wordpress/block-directory@5.14.0
- @wordpress/block-editor@14.9.0
- @wordpress/block-library@9.14.0
- @wordpress/block-serialization-default-parser@5.14.0
- @wordpress/block-serialization-spec-parser@5.14.0
- @wordpress/blocks@14.3.0
- @wordpress/browserslist-config@6.14.0
- @wordpress/commands@1.14.0
- @wordpress/components@29.0.0
- @wordpress/compose@7.14.0
- @wordpress/core-commands@1.14.0
- @wordpress/core-data@7.14.0
- @wordpress/create-block@4.57.0
- @wordpress/create-block-interactive-template@2.14.0
- @wordpress/create-block-tutorial-template@4.14.0
- @wordpress/customize-widgets@5.14.0
- @wordpress/data@10.14.0
- @wordpress/data-controls@4.14.0
- @wordpress/dataviews@4.10.0
- @wordpress/date@5.14.0
- @wordpress/dependency-extraction-webpack-plugin@6.14.0
- @wordpress/deprecated@4.14.0
- @wordpress/docgen@2.14.0
- @wordpress/dom@4.14.0
- @wordpress/dom-ready@4.14.0
- @wordpress/e2e-test-utils@11.14.0
- @wordpress/e2e-test-utils-playwright@1.14.0
- @wordpress/e2e-tests@8.14.0
- @wordpress/edit-post@8.14.0
- @wordpress/edit-site@6.14.0
- @wordpress/edit-widgets@6.14.0
- @wordpress/editor@14.14.0
- @wordpress/element@6.14.0
- @wordpress/env@10.14.0
- @wordpress/escape-html@3.14.0
- @wordpress/eslint-plugin@22.0.0
- @wordpress/fields@0.6.0
- @wordpress/format-library@5.14.0
- @wordpress/hooks@4.14.0
- @wordpress/html-entities@4.14.0
- @wordpress/i18n@5.14.0
- @wordpress/icons@10.14.0
- @wordpress/interactivity@6.14.0
- @wordpress/interactivity-router@2.14.0
- @wordpress/interface@8.3.0
- @wordpress/is-shallow-equal@5.14.0
- @wordpress/jest-console@8.14.0
- @wordpress/jest-preset-default@12.14.0
- @wordpress/jest-puppeteer-axe@7.14.0
- @wordpress/keyboard-shortcuts@5.14.0
- @wordpress/keycodes@4.14.0
- @wordpress/lazy-import@2.14.0
- @wordpress/list-reusable-blocks@5.14.0
- @wordpress/media-utils@5.14.0
- @wordpress/notices@5.14.0
- @wordpress/npm-package-json-lint-config@5.14.0
- @wordpress/nux@9.14.0
- @wordpress/patterns@2.14.0
- @wordpress/plugins@7.14.0
- @wordpress/postcss-plugins-preset@5.14.0
- @wordpress/postcss-themes@6.14.0
- @wordpress/preferences@4.14.0
- @wordpress/preferences-persistence@2.14.0
- @wordpress/prettier-config@4.14.0
- @wordpress/primitives@4.14.0
- @wordpress/priority-queue@3.14.0
- @wordpress/private-apis@1.14.0
- @wordpress/project-management-automation@2.14.0
- @wordpress/react-i18n@4.14.0
- @wordpress/readable-js-assets-webpack-plugin@3.14.0
- @wordpress/redux-routine@5.14.0
- @wordpress/reusable-blocks@5.14.0
- @wordpress/rich-text@7.14.0
- @wordpress/router@1.14.0
- @wordpress/scripts@30.7.0
- @wordpress/server-side-render@5.14.0
- @wordpress/shortcode@4.14.0
- @wordpress/style-engine@2.14.0
- @wordpress/stylelint-config@23.6.0
- @wordpress/sync@1.14.0
- @wordpress/token-list@3.14.0
- @wordpress/undo-manager@1.14.0
- @wordpress/url@4.14.0
- @wordpress/viewport@6.14.0
- @wordpress/warning@3.14.0
- @wordpress/widgets@4.14.0
- @wordpress/wordcount@4.14.0
---
package-lock.json | 192 +++++++++---------
packages/a11y/package.json | 2 +-
packages/annotations/package.json | 2 +-
packages/api-fetch/package.json | 2 +-
packages/autop/package.json | 2 +-
.../package.json | 2 +-
packages/babel-plugin-makepot/package.json | 2 +-
packages/babel-preset-default/package.json | 2 +-
packages/base-styles/package.json | 2 +-
packages/blob/package.json | 2 +-
packages/block-directory/package.json | 2 +-
packages/block-editor/package.json | 2 +-
packages/block-library/package.json | 2 +-
.../package.json | 2 +-
.../package.json | 2 +-
packages/blocks/package.json | 2 +-
packages/browserslist-config/package.json | 2 +-
packages/commands/package.json | 2 +-
packages/components/package.json | 2 +-
packages/compose/package.json | 2 +-
packages/core-commands/package.json | 2 +-
packages/core-data/package.json | 2 +-
.../package.json | 2 +-
.../package.json | 2 +-
packages/create-block/package.json | 2 +-
packages/customize-widgets/package.json | 2 +-
packages/data-controls/package.json | 2 +-
packages/data/package.json | 2 +-
packages/dataviews/package.json | 2 +-
packages/date/package.json | 2 +-
.../package.json | 2 +-
packages/deprecated/package.json | 2 +-
packages/docgen/package.json | 2 +-
packages/dom-ready/package.json | 2 +-
packages/dom/package.json | 2 +-
.../e2e-test-utils-playwright/package.json | 2 +-
packages/e2e-test-utils/package.json | 2 +-
packages/e2e-tests/package.json | 2 +-
packages/edit-post/package.json | 2 +-
packages/edit-site/package.json | 2 +-
packages/edit-widgets/package.json | 2 +-
packages/editor/package.json | 2 +-
packages/element/package.json | 2 +-
packages/env/package.json | 2 +-
packages/escape-html/package.json | 2 +-
packages/eslint-plugin/package.json | 2 +-
packages/fields/package.json | 2 +-
packages/format-library/package.json | 2 +-
packages/hooks/package.json | 2 +-
packages/html-entities/package.json | 2 +-
packages/i18n/package.json | 2 +-
packages/icons/package.json | 2 +-
packages/interactivity-router/package.json | 2 +-
packages/interactivity/package.json | 2 +-
packages/interface/package.json | 2 +-
packages/is-shallow-equal/package.json | 2 +-
packages/jest-console/package.json | 2 +-
packages/jest-preset-default/package.json | 2 +-
packages/jest-puppeteer-axe/package.json | 2 +-
packages/keyboard-shortcuts/package.json | 2 +-
packages/keycodes/package.json | 2 +-
packages/lazy-import/package.json | 2 +-
packages/list-reusable-blocks/package.json | 2 +-
packages/media-utils/package.json | 2 +-
packages/notices/package.json | 2 +-
.../npm-package-json-lint-config/package.json | 2 +-
packages/nux/package.json | 2 +-
packages/patterns/package.json | 2 +-
packages/plugins/package.json | 2 +-
packages/postcss-plugins-preset/package.json | 2 +-
packages/postcss-themes/package.json | 2 +-
packages/preferences-persistence/package.json | 2 +-
packages/preferences/package.json | 2 +-
packages/prettier-config/package.json | 2 +-
packages/primitives/package.json | 2 +-
packages/priority-queue/package.json | 2 +-
packages/private-apis/package.json | 2 +-
.../package.json | 2 +-
packages/react-i18n/package.json | 2 +-
.../package.json | 2 +-
packages/redux-routine/package.json | 2 +-
packages/reusable-blocks/package.json | 2 +-
packages/rich-text/package.json | 2 +-
packages/router/package.json | 2 +-
packages/scripts/package.json | 2 +-
packages/server-side-render/package.json | 2 +-
packages/shortcode/package.json | 2 +-
packages/style-engine/package.json | 2 +-
packages/stylelint-config/package.json | 2 +-
packages/sync/package.json | 2 +-
packages/token-list/package.json | 2 +-
packages/undo-manager/package.json | 2 +-
packages/url/package.json | 2 +-
packages/viewport/package.json | 2 +-
packages/warning/package.json | 2 +-
packages/widgets/package.json | 2 +-
packages/wordcount/package.json | 2 +-
97 files changed, 192 insertions(+), 192 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 55ddf782bf4fcc..2dde4727531b6f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -51900,7 +51900,7 @@
},
"packages/a11y": {
"name": "@wordpress/a11y",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -51914,7 +51914,7 @@
},
"packages/annotations": {
"name": "@wordpress/annotations",
- "version": "3.13.0",
+ "version": "3.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -51942,7 +51942,7 @@
},
"packages/api-fetch": {
"name": "@wordpress/api-fetch",
- "version": "7.13.0",
+ "version": "7.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -51956,7 +51956,7 @@
},
"packages/autop": {
"name": "@wordpress/autop",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -51968,7 +51968,7 @@
},
"packages/babel-plugin-import-jsx-pragma": {
"name": "@wordpress/babel-plugin-import-jsx-pragma",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -51980,7 +51980,7 @@
},
"packages/babel-plugin-makepot": {
"name": "@wordpress/babel-plugin-makepot",
- "version": "6.13.0",
+ "version": "6.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"deepmerge": "^4.3.0",
@@ -51997,7 +51997,7 @@
},
"packages/babel-preset-default": {
"name": "@wordpress/babel-preset-default",
- "version": "8.13.0",
+ "version": "8.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/core": "7.25.7",
@@ -53128,7 +53128,7 @@
},
"packages/base-styles": {
"name": "@wordpress/base-styles",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -53137,7 +53137,7 @@
},
"packages/blob": {
"name": "@wordpress/blob",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -53149,7 +53149,7 @@
},
"packages/block-directory": {
"name": "@wordpress/block-directory",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53185,7 +53185,7 @@
},
"packages/block-editor": {
"name": "@wordpress/block-editor",
- "version": "14.8.0",
+ "version": "14.9.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53285,7 +53285,7 @@
},
"packages/block-library": {
"name": "@wordpress/block-library",
- "version": "9.13.0",
+ "version": "9.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53351,7 +53351,7 @@
},
"packages/block-serialization-default-parser": {
"name": "@wordpress/block-serialization-default-parser",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -53363,7 +53363,7 @@
},
"packages/block-serialization-spec-parser": {
"name": "@wordpress/block-serialization-spec-parser",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"pegjs": "^0.10.0",
@@ -53376,7 +53376,7 @@
},
"packages/blocks": {
"name": "@wordpress/blocks",
- "version": "14.2.0",
+ "version": "14.3.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53430,7 +53430,7 @@
},
"packages/browserslist-config": {
"name": "@wordpress/browserslist-config",
- "version": "6.13.0",
+ "version": "6.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -53439,7 +53439,7 @@
},
"packages/commands": {
"name": "@wordpress/commands",
- "version": "1.13.0",
+ "version": "1.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53678,7 +53678,7 @@
},
"packages/components": {
"name": "@wordpress/components",
- "version": "28.13.0",
+ "version": "29.0.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@ariakit/react": "^0.4.15",
@@ -53769,7 +53769,7 @@
},
"packages/compose": {
"name": "@wordpress/compose",
- "version": "7.13.0",
+ "version": "7.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53806,7 +53806,7 @@
},
"packages/core-commands": {
"name": "@wordpress/core-commands",
- "version": "1.13.0",
+ "version": "1.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53835,7 +53835,7 @@
},
"packages/core-data": {
"name": "@wordpress/core-data",
- "version": "7.13.0",
+ "version": "7.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53880,7 +53880,7 @@
},
"packages/create-block": {
"name": "@wordpress/create-block",
- "version": "4.56.0",
+ "version": "4.57.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/lazy-import": "*",
@@ -53907,7 +53907,7 @@
},
"packages/create-block-interactive-template": {
"name": "@wordpress/create-block-interactive-template",
- "version": "2.13.0",
+ "version": "2.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -53916,7 +53916,7 @@
},
"packages/create-block-tutorial-template": {
"name": "@wordpress/create-block-tutorial-template",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -53925,7 +53925,7 @@
},
"packages/customize-widgets": {
"name": "@wordpress/customize-widgets",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53963,7 +53963,7 @@
},
"packages/data": {
"name": "@wordpress/data",
- "version": "10.13.0",
+ "version": "10.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -53992,7 +53992,7 @@
},
"packages/data-controls": {
"name": "@wordpress/data-controls",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54010,7 +54010,7 @@
},
"packages/dataviews": {
"name": "@wordpress/dataviews",
- "version": "4.9.0",
+ "version": "4.10.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@ariakit/react": "^0.4.15",
@@ -54037,7 +54037,7 @@
},
"packages/date": {
"name": "@wordpress/date",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54052,7 +54052,7 @@
},
"packages/dependency-extraction-webpack-plugin": {
"name": "@wordpress/dependency-extraction-webpack-plugin",
- "version": "6.13.0",
+ "version": "6.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"json2php": "^0.0.7"
@@ -54067,7 +54067,7 @@
},
"packages/deprecated": {
"name": "@wordpress/deprecated",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54080,7 +54080,7 @@
},
"packages/docgen": {
"name": "@wordpress/docgen",
- "version": "2.13.0",
+ "version": "2.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/core": "7.25.7",
@@ -54101,7 +54101,7 @@
},
"packages/dom": {
"name": "@wordpress/dom",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54114,7 +54114,7 @@
},
"packages/dom-ready": {
"name": "@wordpress/dom-ready",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54126,7 +54126,7 @@
},
"packages/e2e-test-utils": {
"name": "@wordpress/e2e-test-utils",
- "version": "11.13.0",
+ "version": "11.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54148,7 +54148,7 @@
},
"packages/e2e-test-utils-playwright": {
"name": "@wordpress/e2e-test-utils-playwright",
- "version": "1.13.0",
+ "version": "1.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"change-case": "^4.1.2",
@@ -54174,7 +54174,7 @@
},
"packages/e2e-tests": {
"name": "@wordpress/e2e-tests",
- "version": "8.13.0",
+ "version": "8.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/e2e-test-utils": "*",
@@ -54212,7 +54212,7 @@
},
"packages/edit-post": {
"name": "@wordpress/edit-post",
- "version": "8.13.0",
+ "version": "8.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54259,7 +54259,7 @@
},
"packages/edit-site": {
"name": "@wordpress/edit-site",
- "version": "6.13.0",
+ "version": "6.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54321,7 +54321,7 @@
},
"packages/edit-widgets": {
"name": "@wordpress/edit-widgets",
- "version": "6.13.0",
+ "version": "6.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54364,7 +54364,7 @@
},
"packages/editor": {
"name": "@wordpress/editor",
- "version": "14.13.0",
+ "version": "14.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54426,7 +54426,7 @@
},
"packages/element": {
"name": "@wordpress/element",
- "version": "6.13.0",
+ "version": "6.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54445,7 +54445,7 @@
},
"packages/env": {
"name": "@wordpress/env",
- "version": "10.13.0",
+ "version": "10.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"chalk": "^4.0.0",
@@ -54494,7 +54494,7 @@
},
"packages/escape-html": {
"name": "@wordpress/escape-html",
- "version": "3.13.0",
+ "version": "3.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54506,7 +54506,7 @@
},
"packages/eslint-plugin": {
"name": "@wordpress/eslint-plugin",
- "version": "21.6.0",
+ "version": "22.0.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/eslint-parser": "7.25.7",
@@ -54575,7 +54575,7 @@
},
"packages/fields": {
"name": "@wordpress/fields",
- "version": "0.5.0",
+ "version": "0.6.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54617,7 +54617,7 @@
},
"packages/format-library": {
"name": "@wordpress/format-library",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54645,7 +54645,7 @@
},
"packages/hooks": {
"name": "@wordpress/hooks",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54657,7 +54657,7 @@
},
"packages/html-entities": {
"name": "@wordpress/html-entities",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54669,7 +54669,7 @@
},
"packages/i18n": {
"name": "@wordpress/i18n",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54689,7 +54689,7 @@
},
"packages/icons": {
"name": "@wordpress/icons",
- "version": "10.13.0",
+ "version": "10.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54703,7 +54703,7 @@
},
"packages/interactivity": {
"name": "@wordpress/interactivity",
- "version": "6.13.0",
+ "version": "6.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@preact/signals": "^1.3.0",
@@ -54716,7 +54716,7 @@
},
"packages/interactivity-router": {
"name": "@wordpress/interactivity-router",
- "version": "2.13.0",
+ "version": "2.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/a11y": "*",
@@ -54729,7 +54729,7 @@
},
"packages/interface": {
"name": "@wordpress/interface",
- "version": "8.2.0",
+ "version": "8.3.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54757,7 +54757,7 @@
},
"packages/is-shallow-equal": {
"name": "@wordpress/is-shallow-equal",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -54769,7 +54769,7 @@
},
"packages/jest-console": {
"name": "@wordpress/jest-console",
- "version": "8.13.0",
+ "version": "8.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54785,7 +54785,7 @@
},
"packages/jest-preset-default": {
"name": "@wordpress/jest-preset-default",
- "version": "12.13.0",
+ "version": "12.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/jest-console": "*",
@@ -54802,7 +54802,7 @@
},
"packages/jest-puppeteer-axe": {
"name": "@wordpress/jest-puppeteer-axe",
- "version": "7.13.0",
+ "version": "7.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@axe-core/puppeteer": "^4.0.0",
@@ -54824,7 +54824,7 @@
},
"packages/keyboard-shortcuts": {
"name": "@wordpress/keyboard-shortcuts",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54842,7 +54842,7 @@
},
"packages/keycodes": {
"name": "@wordpress/keycodes",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54855,7 +54855,7 @@
},
"packages/lazy-import": {
"name": "@wordpress/lazy-import",
- "version": "2.13.0",
+ "version": "2.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"execa": "^4.0.2",
@@ -54869,7 +54869,7 @@
},
"packages/list-reusable-blocks": {
"name": "@wordpress/list-reusable-blocks",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54892,7 +54892,7 @@
},
"packages/media-utils": {
"name": "@wordpress/media-utils",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54909,7 +54909,7 @@
},
"packages/notices": {
"name": "@wordpress/notices",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54926,7 +54926,7 @@
},
"packages/npm-package-json-lint-config": {
"name": "@wordpress/npm-package-json-lint-config",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -54938,7 +54938,7 @@
},
"packages/nux": {
"name": "@wordpress/nux",
- "version": "9.13.0",
+ "version": "9.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54961,7 +54961,7 @@
},
"packages/patterns": {
"name": "@wordpress/patterns",
- "version": "2.13.0",
+ "version": "2.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -54991,7 +54991,7 @@
},
"packages/plugins": {
"name": "@wordpress/plugins",
- "version": "7.13.0",
+ "version": "7.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55015,7 +55015,7 @@
},
"packages/postcss-plugins-preset": {
"name": "@wordpress/postcss-plugins-preset",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@wordpress/base-styles": "*",
@@ -55031,7 +55031,7 @@
},
"packages/postcss-themes": {
"name": "@wordpress/postcss-themes",
- "version": "6.13.0",
+ "version": "6.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -55043,7 +55043,7 @@
},
"packages/preferences": {
"name": "@wordpress/preferences",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55069,7 +55069,7 @@
},
"packages/preferences-persistence": {
"name": "@wordpress/preferences-persistence",
- "version": "2.13.0",
+ "version": "2.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55082,7 +55082,7 @@
},
"packages/prettier-config": {
"name": "@wordpress/prettier-config",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -55094,7 +55094,7 @@
},
"packages/primitives": {
"name": "@wordpress/primitives",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55111,7 +55111,7 @@
},
"packages/priority-queue": {
"name": "@wordpress/priority-queue",
- "version": "3.13.0",
+ "version": "3.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55124,7 +55124,7 @@
},
"packages/private-apis": {
"name": "@wordpress/private-apis",
- "version": "1.13.0",
+ "version": "1.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -55136,7 +55136,7 @@
},
"packages/project-management-automation": {
"name": "@wordpress/project-management-automation",
- "version": "2.13.0",
+ "version": "2.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@actions/core": "1.9.1",
@@ -55164,7 +55164,7 @@
},
"packages/react-i18n": {
"name": "@wordpress/react-i18n",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55320,7 +55320,7 @@
},
"packages/readable-js-assets-webpack-plugin": {
"name": "@wordpress/readable-js-assets-webpack-plugin",
- "version": "3.13.0",
+ "version": "3.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -55332,7 +55332,7 @@
},
"packages/redux-routine": {
"name": "@wordpress/redux-routine",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55375,7 +55375,7 @@
},
"packages/reusable-blocks": {
"name": "@wordpress/reusable-blocks",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55402,7 +55402,7 @@
},
"packages/rich-text": {
"name": "@wordpress/rich-text",
- "version": "7.13.0",
+ "version": "7.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55426,7 +55426,7 @@
},
"packages/router": {
"name": "@wordpress/router",
- "version": "1.13.0",
+ "version": "1.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55447,7 +55447,7 @@
},
"packages/scripts": {
"name": "@wordpress/scripts",
- "version": "30.6.0",
+ "version": "30.7.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/core": "7.25.7",
@@ -55585,7 +55585,7 @@
},
"packages/server-side-render": {
"name": "@wordpress/server-side-render",
- "version": "5.13.0",
+ "version": "5.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55611,7 +55611,7 @@
},
"packages/shortcode": {
"name": "@wordpress/shortcode",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55624,7 +55624,7 @@
},
"packages/style-engine": {
"name": "@wordpress/style-engine",
- "version": "2.13.0",
+ "version": "2.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55637,7 +55637,7 @@
},
"packages/stylelint-config": {
"name": "@wordpress/stylelint-config",
- "version": "23.5.0",
+ "version": "23.6.0",
"license": "MIT",
"dependencies": {
"@stylistic/stylelint-plugin": "^3.0.1",
@@ -55748,7 +55748,7 @@
},
"packages/sync": {
"name": "@wordpress/sync",
- "version": "1.13.0",
+ "version": "1.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55769,7 +55769,7 @@
},
"packages/token-list": {
"name": "@wordpress/token-list",
- "version": "3.13.0",
+ "version": "3.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
@@ -55781,7 +55781,7 @@
},
"packages/undo-manager": {
"name": "@wordpress/undo-manager",
- "version": "1.13.0",
+ "version": "1.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55794,7 +55794,7 @@
},
"packages/url": {
"name": "@wordpress/url",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55807,7 +55807,7 @@
},
"packages/viewport": {
"name": "@wordpress/viewport",
- "version": "6.13.0",
+ "version": "6.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55837,7 +55837,7 @@
},
"packages/warning": {
"name": "@wordpress/warning",
- "version": "3.13.0",
+ "version": "3.14.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -55846,7 +55846,7 @@
},
"packages/widgets": {
"name": "@wordpress/widgets",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7",
@@ -55874,7 +55874,7 @@
},
"packages/wordcount": {
"name": "@wordpress/wordcount",
- "version": "4.13.0",
+ "version": "4.14.0",
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/runtime": "7.25.7"
diff --git a/packages/a11y/package.json b/packages/a11y/package.json
index 67f4ed61a412dc..6ad4f8acb9bd8b 100644
--- a/packages/a11y/package.json
+++ b/packages/a11y/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/a11y",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "Accessibility (a11y) utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/annotations/package.json b/packages/annotations/package.json
index 68c65241bbe382..e10ece8600e814 100644
--- a/packages/annotations/package.json
+++ b/packages/annotations/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/annotations",
- "version": "3.14.0-prerelease",
+ "version": "3.14.0",
"description": "Annotate content in the Gutenberg editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/api-fetch/package.json b/packages/api-fetch/package.json
index d91e9378c6b2c5..fd2430dfc77606 100644
--- a/packages/api-fetch/package.json
+++ b/packages/api-fetch/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/api-fetch",
- "version": "7.14.0-prerelease",
+ "version": "7.14.0",
"description": "Utility to make WordPress REST API requests.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/autop/package.json b/packages/autop/package.json
index 5003ce2045b4f3..cdffb6175b31e2 100644
--- a/packages/autop/package.json
+++ b/packages/autop/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/autop",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "WordPress's automatic paragraph functions `autop` and `removep`.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-plugin-import-jsx-pragma/package.json b/packages/babel-plugin-import-jsx-pragma/package.json
index fd85a3003fd541..d7ebed0e46f281 100644
--- a/packages/babel-plugin-import-jsx-pragma/package.json
+++ b/packages/babel-plugin-import-jsx-pragma/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-plugin-import-jsx-pragma",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Babel transform plugin for automatically injecting an import to be used as the pragma for the React JSX Transform plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-plugin-makepot/package.json b/packages/babel-plugin-makepot/package.json
index 7ddac8d63293c7..352da89d84b372 100644
--- a/packages/babel-plugin-makepot/package.json
+++ b/packages/babel-plugin-makepot/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-plugin-makepot",
- "version": "6.14.0-prerelease",
+ "version": "6.14.0",
"description": "WordPress Babel internationalization (i18n) plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/babel-preset-default/package.json b/packages/babel-preset-default/package.json
index cf8ea53df3f80a..b983a198f42f9c 100644
--- a/packages/babel-preset-default/package.json
+++ b/packages/babel-preset-default/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/babel-preset-default",
- "version": "8.14.0-prerelease",
+ "version": "8.14.0",
"description": "Default Babel preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/base-styles/package.json b/packages/base-styles/package.json
index 24e1ddeace24da..0677b61ca0bfdf 100644
--- a/packages/base-styles/package.json
+++ b/packages/base-styles/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/base-styles",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Base SCSS utilities and variables for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/blob/package.json b/packages/blob/package.json
index 74fc971128c6a0..b69a5c2a5d913b 100644
--- a/packages/blob/package.json
+++ b/packages/blob/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/blob",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "Blob utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-directory/package.json b/packages/block-directory/package.json
index ca1d6502420caf..fc1176b98fa3af 100644
--- a/packages/block-directory/package.json
+++ b/packages/block-directory/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-directory",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Extend editor with block directory features to search, download and install blocks.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-editor/package.json b/packages/block-editor/package.json
index 5a1fe1410b6e85..c5e82b59245851 100644
--- a/packages/block-editor/package.json
+++ b/packages/block-editor/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-editor",
- "version": "14.9.0-prerelease",
+ "version": "14.9.0",
"description": "Generic block editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-library/package.json b/packages/block-library/package.json
index 844e34b0f5cf8d..d7cc75bc177649 100644
--- a/packages/block-library/package.json
+++ b/packages/block-library/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-library",
- "version": "9.14.0-prerelease",
+ "version": "9.14.0",
"description": "Block library for the WordPress editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-serialization-default-parser/package.json b/packages/block-serialization-default-parser/package.json
index 1867416ebe9570..7bbd52414f91ed 100644
--- a/packages/block-serialization-default-parser/package.json
+++ b/packages/block-serialization-default-parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-serialization-default-parser",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Block serialization specification parser for WordPress posts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/block-serialization-spec-parser/package.json b/packages/block-serialization-spec-parser/package.json
index c002fda5abcc65..84d57978570825 100644
--- a/packages/block-serialization-spec-parser/package.json
+++ b/packages/block-serialization-spec-parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/block-serialization-spec-parser",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Block serialization specification parser for WordPress posts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/blocks/package.json b/packages/blocks/package.json
index 04b9df950c2de2..e94bb60f5aa348 100644
--- a/packages/blocks/package.json
+++ b/packages/blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/blocks",
- "version": "14.3.0-prerelease",
+ "version": "14.3.0",
"description": "Block API for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/browserslist-config/package.json b/packages/browserslist-config/package.json
index 4133b51c1097f1..2d9520b2adb457 100644
--- a/packages/browserslist-config/package.json
+++ b/packages/browserslist-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/browserslist-config",
- "version": "6.14.0-prerelease",
+ "version": "6.14.0",
"description": "WordPress Browserslist shared configuration.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/commands/package.json b/packages/commands/package.json
index 03fad24dadbd98..9f7d1ea1e89319 100644
--- a/packages/commands/package.json
+++ b/packages/commands/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/commands",
- "version": "1.14.0-prerelease",
+ "version": "1.14.0",
"description": "Handles the commands menu.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/components/package.json b/packages/components/package.json
index c9b37bce93f535..79df8e92d84b6f 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/components",
- "version": "29.0.0-prerelease",
+ "version": "29.0.0",
"description": "UI components for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/compose/package.json b/packages/compose/package.json
index f649e29481c030..6afbb1c954f47f 100644
--- a/packages/compose/package.json
+++ b/packages/compose/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/compose",
- "version": "7.14.0-prerelease",
+ "version": "7.14.0",
"description": "WordPress higher-order components (HOCs).",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/core-commands/package.json b/packages/core-commands/package.json
index 9401f68437c0c8..32cd82f4686b09 100644
--- a/packages/core-commands/package.json
+++ b/packages/core-commands/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/core-commands",
- "version": "1.14.0-prerelease",
+ "version": "1.14.0",
"description": "WordPress core reusable commands.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/core-data/package.json b/packages/core-data/package.json
index 97d89f58b9707c..b0e5c10ddd24bc 100644
--- a/packages/core-data/package.json
+++ b/packages/core-data/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/core-data",
- "version": "7.14.0-prerelease",
+ "version": "7.14.0",
"description": "Access to and manipulation of core WordPress entities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/create-block-interactive-template/package.json b/packages/create-block-interactive-template/package.json
index d71d307951b7fa..96a71fddfc91f3 100644
--- a/packages/create-block-interactive-template/package.json
+++ b/packages/create-block-interactive-template/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/create-block-interactive-template",
- "version": "2.14.0-prerelease",
+ "version": "2.14.0",
"description": "Template for @wordpress/create-block to create interactive blocks with the Interactivity API.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/create-block-tutorial-template/package.json b/packages/create-block-tutorial-template/package.json
index cb352c3432c20e..7a585777f3f971 100644
--- a/packages/create-block-tutorial-template/package.json
+++ b/packages/create-block-tutorial-template/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/create-block-tutorial-template",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "This is a template for @wordpress/create-block that creates an example 'Copyright Date' block. This block is used in the official WordPress block development Quick Start Guide.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/create-block/package.json b/packages/create-block/package.json
index f61d805dcea26a..375fee43ba1f73 100644
--- a/packages/create-block/package.json
+++ b/packages/create-block/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/create-block",
- "version": "4.57.0-prerelease",
+ "version": "4.57.0",
"description": "Generates PHP, JS and CSS code for registering a block for a WordPress plugin.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/customize-widgets/package.json b/packages/customize-widgets/package.json
index 300684cab6f374..236a50342ff7a4 100644
--- a/packages/customize-widgets/package.json
+++ b/packages/customize-widgets/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/customize-widgets",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Widgets blocks in Customizer Module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/data-controls/package.json b/packages/data-controls/package.json
index d684c3dc032a87..f1438a39e2a453 100644
--- a/packages/data-controls/package.json
+++ b/packages/data-controls/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/data-controls",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "A set of common controls for the @wordpress/data api.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/data/package.json b/packages/data/package.json
index 01e93276eb599c..ca5af390dc51ca 100644
--- a/packages/data/package.json
+++ b/packages/data/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/data",
- "version": "10.14.0-prerelease",
+ "version": "10.14.0",
"description": "Data module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dataviews/package.json b/packages/dataviews/package.json
index 41cd298e6c076f..c307085bbea078 100644
--- a/packages/dataviews/package.json
+++ b/packages/dataviews/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/dataviews",
- "version": "4.10.0-prerelease",
+ "version": "4.10.0",
"description": "DataViews is a component that provides an API to render datasets using different types of layouts (table, grid, list, etc.).",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/date/package.json b/packages/date/package.json
index 1c6394aa66f500..4466f1120bc656 100644
--- a/packages/date/package.json
+++ b/packages/date/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/date",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Date module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dependency-extraction-webpack-plugin/package.json b/packages/dependency-extraction-webpack-plugin/package.json
index b25031fefb4570..e167373554ff62 100644
--- a/packages/dependency-extraction-webpack-plugin/package.json
+++ b/packages/dependency-extraction-webpack-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/dependency-extraction-webpack-plugin",
- "version": "6.14.0-prerelease",
+ "version": "6.14.0",
"description": "Extract WordPress script dependencies from webpack bundles.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/deprecated/package.json b/packages/deprecated/package.json
index 3283e332faa0a3..535432cc64ac03 100644
--- a/packages/deprecated/package.json
+++ b/packages/deprecated/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/deprecated",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "Deprecation utility for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/docgen/package.json b/packages/docgen/package.json
index 7c5d1ea3105b52..d42b430b8d31e5 100644
--- a/packages/docgen/package.json
+++ b/packages/docgen/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/docgen",
- "version": "2.14.0-prerelease",
+ "version": "2.14.0",
"description": "Autogenerate public API documentation from exports and JSDoc comments.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dom-ready/package.json b/packages/dom-ready/package.json
index 16ca4b03c2578e..c4f1f7ee3dabb8 100644
--- a/packages/dom-ready/package.json
+++ b/packages/dom-ready/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/dom-ready",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "Execute callback after the DOM is loaded.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/dom/package.json b/packages/dom/package.json
index 5babbf730ba11a..0b4e1f26d0acb6 100644
--- a/packages/dom/package.json
+++ b/packages/dom/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/dom",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "DOM utilities module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/e2e-test-utils-playwright/package.json b/packages/e2e-test-utils-playwright/package.json
index 84db682b2077f3..e46ea5b833a84f 100644
--- a/packages/e2e-test-utils-playwright/package.json
+++ b/packages/e2e-test-utils-playwright/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/e2e-test-utils-playwright",
- "version": "1.14.0-prerelease",
+ "version": "1.14.0",
"description": "End-To-End (E2E) test utils for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/e2e-test-utils/package.json b/packages/e2e-test-utils/package.json
index 21f40de5c5ad4d..41f73b235d213e 100644
--- a/packages/e2e-test-utils/package.json
+++ b/packages/e2e-test-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/e2e-test-utils",
- "version": "11.14.0-prerelease",
+ "version": "11.14.0",
"description": "End-To-End (E2E) test utils for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json
index 3595d86c3b894b..759591e566e780 100644
--- a/packages/e2e-tests/package.json
+++ b/packages/e2e-tests/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/e2e-tests",
- "version": "8.14.0-prerelease",
+ "version": "8.14.0",
"description": "End-To-End (E2E) tests for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/edit-post/package.json b/packages/edit-post/package.json
index f3ea45227e0881..6984e70088e86e 100644
--- a/packages/edit-post/package.json
+++ b/packages/edit-post/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/edit-post",
- "version": "8.14.0-prerelease",
+ "version": "8.14.0",
"description": "Edit Post module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/edit-site/package.json b/packages/edit-site/package.json
index 24a9a876639eaa..51045be503de31 100644
--- a/packages/edit-site/package.json
+++ b/packages/edit-site/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/edit-site",
- "version": "6.14.0-prerelease",
+ "version": "6.14.0",
"description": "Edit Site Page module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/edit-widgets/package.json b/packages/edit-widgets/package.json
index 89950f5594537c..b343188212239a 100644
--- a/packages/edit-widgets/package.json
+++ b/packages/edit-widgets/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/edit-widgets",
- "version": "6.14.0-prerelease",
+ "version": "6.14.0",
"description": "Widgets Page module for WordPress..",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/editor/package.json b/packages/editor/package.json
index 7aadb123e6acc0..b19e2fb3dab710 100644
--- a/packages/editor/package.json
+++ b/packages/editor/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/editor",
- "version": "14.14.0-prerelease",
+ "version": "14.14.0",
"description": "Enhanced block editor for WordPress posts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/element/package.json b/packages/element/package.json
index c1ed918d6c61cd..cd205f74eccbf9 100644
--- a/packages/element/package.json
+++ b/packages/element/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/element",
- "version": "6.14.0-prerelease",
+ "version": "6.14.0",
"description": "Element React module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/env/package.json b/packages/env/package.json
index 71144a94a64ead..d86d518e41e497 100644
--- a/packages/env/package.json
+++ b/packages/env/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/env",
- "version": "10.14.0-prerelease",
+ "version": "10.14.0",
"description": "A zero-config, self contained local WordPress environment for development and testing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/escape-html/package.json b/packages/escape-html/package.json
index 84c7a480af1414..ec5b759d46ae1a 100644
--- a/packages/escape-html/package.json
+++ b/packages/escape-html/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/escape-html",
- "version": "3.14.0-prerelease",
+ "version": "3.14.0",
"description": "Escape HTML utils.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json
index 8f7c195a56ab4d..30d76ea374ad2f 100644
--- a/packages/eslint-plugin/package.json
+++ b/packages/eslint-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/eslint-plugin",
- "version": "22.0.0-prerelease",
+ "version": "22.0.0",
"description": "ESLint plugin for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/fields/package.json b/packages/fields/package.json
index 1dcb2acef13f6d..2c201e6f8d4ce0 100644
--- a/packages/fields/package.json
+++ b/packages/fields/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/fields",
- "version": "0.6.0-prerelease",
+ "version": "0.6.0",
"description": "DataViews is a component that provides an API to render datasets using different types of layouts (table, grid, list, etc.).",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/format-library/package.json b/packages/format-library/package.json
index 1f7e88127cef23..e67542e26e18fa 100644
--- a/packages/format-library/package.json
+++ b/packages/format-library/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/format-library",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Format library for the WordPress editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/hooks/package.json b/packages/hooks/package.json
index c2d724d44bab7e..9ba87a51cf8edc 100644
--- a/packages/hooks/package.json
+++ b/packages/hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/hooks",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "WordPress hooks library.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/html-entities/package.json b/packages/html-entities/package.json
index ce6b60ac0599d8..ed949a1a39ce7f 100644
--- a/packages/html-entities/package.json
+++ b/packages/html-entities/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/html-entities",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "HTML entity utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index d5ba99c00d4c0f..9242c409004ebf 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/i18n",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "WordPress internationalization (i18n) library.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/icons/package.json b/packages/icons/package.json
index 672b6537c1a4fc..2b321efdcc54e1 100644
--- a/packages/icons/package.json
+++ b/packages/icons/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/icons",
- "version": "10.14.0-prerelease",
+ "version": "10.14.0",
"description": "WordPress Icons package, based on dashicon.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/interactivity-router/package.json b/packages/interactivity-router/package.json
index e74bbe138ac42f..8cf30ec4eecb4d 100644
--- a/packages/interactivity-router/package.json
+++ b/packages/interactivity-router/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/interactivity-router",
- "version": "2.14.0-prerelease",
+ "version": "2.14.0",
"description": "Package that exposes state and actions from the `core/router` store, part of the Interactivity API.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/interactivity/package.json b/packages/interactivity/package.json
index d7b673f3b1d23f..784901d9e70ccc 100644
--- a/packages/interactivity/package.json
+++ b/packages/interactivity/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/interactivity",
- "version": "6.14.0-prerelease",
+ "version": "6.14.0",
"description": "Package that provides a standard and simple way to handle the frontend interactivity of Gutenberg blocks.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/interface/package.json b/packages/interface/package.json
index ce09071aba14f9..351bca68ee3c2a 100644
--- a/packages/interface/package.json
+++ b/packages/interface/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/interface",
- "version": "8.3.0-prerelease",
+ "version": "8.3.0",
"description": "Interface module for WordPress. The package contains shared functionality across the modern JavaScript-based WordPress screens.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/is-shallow-equal/package.json b/packages/is-shallow-equal/package.json
index 5a945ea65ae1e6..c9c96621bf74c5 100644
--- a/packages/is-shallow-equal/package.json
+++ b/packages/is-shallow-equal/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/is-shallow-equal",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Test for shallow equality between two objects or arrays.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json
index 5dbb81e5f4c547..611fbe34713f9b 100644
--- a/packages/jest-console/package.json
+++ b/packages/jest-console/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/jest-console",
- "version": "8.14.0-prerelease",
+ "version": "8.14.0",
"description": "Custom Jest matchers for the Console object.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/jest-preset-default/package.json b/packages/jest-preset-default/package.json
index c131b38e7201e7..e53da15a2c8364 100644
--- a/packages/jest-preset-default/package.json
+++ b/packages/jest-preset-default/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/jest-preset-default",
- "version": "12.14.0-prerelease",
+ "version": "12.14.0",
"description": "Default Jest preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/jest-puppeteer-axe/package.json b/packages/jest-puppeteer-axe/package.json
index 3bc406a9fd24d7..0a74c9f2ab32de 100644
--- a/packages/jest-puppeteer-axe/package.json
+++ b/packages/jest-puppeteer-axe/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/jest-puppeteer-axe",
- "version": "7.14.0-prerelease",
+ "version": "7.14.0",
"description": "Axe API integration with Jest and Puppeteer.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/keyboard-shortcuts/package.json b/packages/keyboard-shortcuts/package.json
index 64d9303766c7b6..7e01cffbb5431e 100644
--- a/packages/keyboard-shortcuts/package.json
+++ b/packages/keyboard-shortcuts/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/keyboard-shortcuts",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Handling keyboard shortcuts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/keycodes/package.json b/packages/keycodes/package.json
index 39dd24ad3372f2..14cb909c884854 100644
--- a/packages/keycodes/package.json
+++ b/packages/keycodes/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/keycodes",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "Keycodes utilities for WordPress. Used to check for keyboard events across browsers/operating systems.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/lazy-import/package.json b/packages/lazy-import/package.json
index ac6e0a2dd91417..3aa30657885f78 100644
--- a/packages/lazy-import/package.json
+++ b/packages/lazy-import/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/lazy-import",
- "version": "2.14.0-prerelease",
+ "version": "2.14.0",
"description": "Lazily import a module, installing it automatically if missing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/list-reusable-blocks/package.json b/packages/list-reusable-blocks/package.json
index 4756308a4cdc57..834de576907a21 100644
--- a/packages/list-reusable-blocks/package.json
+++ b/packages/list-reusable-blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/list-reusable-blocks",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Adding Export/Import support to the reusable blocks listing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/media-utils/package.json b/packages/media-utils/package.json
index 2541113e786ebf..6a79d295a6434a 100644
--- a/packages/media-utils/package.json
+++ b/packages/media-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/media-utils",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "WordPress Media Upload Utils.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/notices/package.json b/packages/notices/package.json
index 99592b5800ec11..3056e0bf84267c 100644
--- a/packages/notices/package.json
+++ b/packages/notices/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/notices",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "State management for notices.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/npm-package-json-lint-config/package.json b/packages/npm-package-json-lint-config/package.json
index 371329b229ea3f..8cf174b83de3fa 100644
--- a/packages/npm-package-json-lint-config/package.json
+++ b/packages/npm-package-json-lint-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/npm-package-json-lint-config",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "WordPress npm-package-json-lint shareable configuration.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/nux/package.json b/packages/nux/package.json
index ab581d81f82dd4..d62f84e7e47c58 100644
--- a/packages/nux/package.json
+++ b/packages/nux/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/nux",
- "version": "9.14.0-prerelease",
+ "version": "9.14.0",
"description": "NUX (New User eXperience) module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/patterns/package.json b/packages/patterns/package.json
index 1a18a541fef60e..7f0036197d1bb7 100644
--- a/packages/patterns/package.json
+++ b/packages/patterns/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/patterns",
- "version": "2.14.0-prerelease",
+ "version": "2.14.0",
"description": "Management of user pattern editing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/plugins/package.json b/packages/plugins/package.json
index 4ae47a3a0df717..800ef0a6e0d157 100644
--- a/packages/plugins/package.json
+++ b/packages/plugins/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/plugins",
- "version": "7.14.0-prerelease",
+ "version": "7.14.0",
"description": "Plugins module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/postcss-plugins-preset/package.json b/packages/postcss-plugins-preset/package.json
index d5559911533c8c..caecfb0939863e 100644
--- a/packages/postcss-plugins-preset/package.json
+++ b/packages/postcss-plugins-preset/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/postcss-plugins-preset",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "PostCSS sharable plugins preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/postcss-themes/package.json b/packages/postcss-themes/package.json
index 254ba06f4fb00d..38881eb8a5e715 100644
--- a/packages/postcss-themes/package.json
+++ b/packages/postcss-themes/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/postcss-themes",
- "version": "6.14.0-prerelease",
+ "version": "6.14.0",
"description": "PostCSS plugin to generate theme colors.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/preferences-persistence/package.json b/packages/preferences-persistence/package.json
index b0274f304ca858..219f8edf721112 100644
--- a/packages/preferences-persistence/package.json
+++ b/packages/preferences-persistence/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/preferences-persistence",
- "version": "2.14.0-prerelease",
+ "version": "2.14.0",
"description": "Persistence utilities for `wordpress/preferences`.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/preferences/package.json b/packages/preferences/package.json
index ee3b7bc21cbbb6..45de983c52e6b2 100644
--- a/packages/preferences/package.json
+++ b/packages/preferences/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/preferences",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "Utilities for managing WordPress preferences.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json
index 8686fa8331a9d3..d881e0846684cd 100644
--- a/packages/prettier-config/package.json
+++ b/packages/prettier-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/prettier-config",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "WordPress Prettier shared configuration.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/primitives/package.json b/packages/primitives/package.json
index d9c41745b72358..3fa92c0c2681a1 100644
--- a/packages/primitives/package.json
+++ b/packages/primitives/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/primitives",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "WordPress cross-platform primitives.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/priority-queue/package.json b/packages/priority-queue/package.json
index 96903a6c8595ab..c1528daa6d1481 100644
--- a/packages/priority-queue/package.json
+++ b/packages/priority-queue/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/priority-queue",
- "version": "3.14.0-prerelease",
+ "version": "3.14.0",
"description": "Generic browser priority queue.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/private-apis/package.json b/packages/private-apis/package.json
index c5efac2c2727f2..4e1c0727bf3a4d 100644
--- a/packages/private-apis/package.json
+++ b/packages/private-apis/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/private-apis",
- "version": "1.14.0-prerelease",
+ "version": "1.14.0",
"description": "Internal experimental APIs for WordPress core.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/project-management-automation/package.json b/packages/project-management-automation/package.json
index 6a0d648c68c6ae..6d268051bc3f3e 100644
--- a/packages/project-management-automation/package.json
+++ b/packages/project-management-automation/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/project-management-automation",
- "version": "2.14.0-prerelease",
+ "version": "2.14.0",
"description": "GitHub Action that implements various automation to assist with managing the Gutenberg GitHub repository.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/react-i18n/package.json b/packages/react-i18n/package.json
index 29f82a420d237b..78566b3e23efe3 100644
--- a/packages/react-i18n/package.json
+++ b/packages/react-i18n/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/react-i18n",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "React bindings for @wordpress/i18n.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/readable-js-assets-webpack-plugin/package.json b/packages/readable-js-assets-webpack-plugin/package.json
index 997b91bc37a6aa..de912f65e1a0b0 100644
--- a/packages/readable-js-assets-webpack-plugin/package.json
+++ b/packages/readable-js-assets-webpack-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/readable-js-assets-webpack-plugin",
- "version": "3.14.0-prerelease",
+ "version": "3.14.0",
"description": "Generate a readable JS file for each JS asset.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/redux-routine/package.json b/packages/redux-routine/package.json
index 924713125caccd..9ec7656b00e269 100644
--- a/packages/redux-routine/package.json
+++ b/packages/redux-routine/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/redux-routine",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Redux middleware for generator coroutines.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/reusable-blocks/package.json b/packages/reusable-blocks/package.json
index 4202e3f93e596d..2d40d8c087fcc8 100644
--- a/packages/reusable-blocks/package.json
+++ b/packages/reusable-blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/reusable-blocks",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "Reusable blocks utilities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/rich-text/package.json b/packages/rich-text/package.json
index 82f05b03b7c878..39baaa28652d99 100644
--- a/packages/rich-text/package.json
+++ b/packages/rich-text/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/rich-text",
- "version": "7.14.0-prerelease",
+ "version": "7.14.0",
"description": "Rich text value and manipulation API.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/router/package.json b/packages/router/package.json
index 2b933cb8e06f41..5932e01f031733 100644
--- a/packages/router/package.json
+++ b/packages/router/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/router",
- "version": "1.14.0-prerelease",
+ "version": "1.14.0",
"description": "Router API for WordPress pages.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/scripts/package.json b/packages/scripts/package.json
index b450d7c8708053..7b0d37a5344b25 100644
--- a/packages/scripts/package.json
+++ b/packages/scripts/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/scripts",
- "version": "30.7.0-prerelease",
+ "version": "30.7.0",
"description": "Collection of reusable scripts for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/server-side-render/package.json b/packages/server-side-render/package.json
index 98b97a3d20584a..b8865a16a056f1 100644
--- a/packages/server-side-render/package.json
+++ b/packages/server-side-render/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/server-side-render",
- "version": "5.14.0-prerelease",
+ "version": "5.14.0",
"description": "The component used with WordPress to server-side render a preview of dynamic blocks to display in the editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/shortcode/package.json b/packages/shortcode/package.json
index 512e8fefbef479..2fd7961f7543cc 100644
--- a/packages/shortcode/package.json
+++ b/packages/shortcode/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/shortcode",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "Shortcode module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/style-engine/package.json b/packages/style-engine/package.json
index f6f5569a452c6c..d9257c1bb3dfc8 100644
--- a/packages/style-engine/package.json
+++ b/packages/style-engine/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/style-engine",
- "version": "2.14.0-prerelease",
+ "version": "2.14.0",
"description": "A suite of parsers and compilers for WordPress styles.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json
index cf2593e8bb47dd..209f38e37ac46f 100644
--- a/packages/stylelint-config/package.json
+++ b/packages/stylelint-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/stylelint-config",
- "version": "23.6.0-prerelease",
+ "version": "23.6.0",
"description": "stylelint config for WordPress development.",
"author": "The WordPress Contributors",
"license": "MIT",
diff --git a/packages/sync/package.json b/packages/sync/package.json
index 24dfb105676962..7735c04e1886d8 100644
--- a/packages/sync/package.json
+++ b/packages/sync/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/sync",
- "version": "1.14.0-prerelease",
+ "version": "1.14.0",
"description": "Sync Data.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/token-list/package.json b/packages/token-list/package.json
index 2da7e08b41e325..957dfec295f5ce 100644
--- a/packages/token-list/package.json
+++ b/packages/token-list/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/token-list",
- "version": "3.14.0-prerelease",
+ "version": "3.14.0",
"description": "Constructable, plain JavaScript DOMTokenList implementation, supporting non-browser runtimes.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/undo-manager/package.json b/packages/undo-manager/package.json
index 67a8b188b2f354..321d9e51ad5fc7 100644
--- a/packages/undo-manager/package.json
+++ b/packages/undo-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/undo-manager",
- "version": "1.14.0-prerelease",
+ "version": "1.14.0",
"description": "A small package to manage undo/redo.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/url/package.json b/packages/url/package.json
index 6a2cbee6ac3b22..437761955e67cd 100644
--- a/packages/url/package.json
+++ b/packages/url/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/url",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "WordPress URL utilities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/viewport/package.json b/packages/viewport/package.json
index f68bdd339f3e13..3514f4116e071a 100644
--- a/packages/viewport/package.json
+++ b/packages/viewport/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/viewport",
- "version": "6.14.0-prerelease",
+ "version": "6.14.0",
"description": "Viewport module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/warning/package.json b/packages/warning/package.json
index 7b1bbe2385b580..baf7b5d1925b32 100644
--- a/packages/warning/package.json
+++ b/packages/warning/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/warning",
- "version": "3.14.0-prerelease",
+ "version": "3.14.0",
"description": "Warning utility for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/widgets/package.json b/packages/widgets/package.json
index 48b4f0d07177b3..a08c34d43bc510 100644
--- a/packages/widgets/package.json
+++ b/packages/widgets/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/widgets",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "Functionality used by the widgets block editor in the Widgets screen and the Customizer.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/wordcount/package.json b/packages/wordcount/package.json
index 93d3e91215e3c6..b0b42cbe7900cc 100644
--- a/packages/wordcount/package.json
+++ b/packages/wordcount/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/wordcount",
- "version": "4.14.0-prerelease",
+ "version": "4.14.0",
"description": "WordPress word count utility.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
From 849ee8da92f1b96de67dc6dc70e17a54ed8203c9 Mon Sep 17 00:00:00 2001
From: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
Date: Wed, 11 Dec 2024 17:09:03 +0900
Subject: [PATCH 003/163] DataViews: Fix text in action for setting site home
page (#67787)
Co-authored-by: t-hamano
Co-authored-by: mikachan
---
.../post-actions/set-as-homepage.js | 27 +++++++++----------
1 file changed, 13 insertions(+), 14 deletions(-)
diff --git a/packages/editor/src/components/post-actions/set-as-homepage.js b/packages/editor/src/components/post-actions/set-as-homepage.js
index 70bdeeeefe70fb..0252c84e3ab3ff 100644
--- a/packages/editor/src/components/post-actions/set-as-homepage.js
+++ b/packages/editor/src/components/post-actions/set-as-homepage.js
@@ -47,9 +47,6 @@ const SetAsHomepageModal = ( { items, closeModal } ) => {
};
}
);
- const currentHomePageTitle = currentHomePage
- ? getItemTitle( currentHomePage )
- : '';
const { saveEditedEntityRecord, saveEntityRecord } =
useDispatch( coreStore );
@@ -89,23 +86,25 @@ const SetAsHomepageModal = ( { items, closeModal } ) => {
}
}
- const modalWarning =
- 'posts' === showOnFront
- ? __(
- 'This will replace the current homepage which is set to display latest posts.'
- )
- : sprintf(
- // translators: %s: title of the current home page.
- __( 'This will replace the current homepage: "%s"' ),
- currentHomePageTitle
- );
+ let modalWarning = '';
+ if ( 'posts' === showOnFront ) {
+ modalWarning = __(
+ 'This will replace the current homepage which is set to display latest posts.'
+ );
+ } else if ( currentHomePage ) {
+ modalWarning = sprintf(
+ // translators: %s: title of the current home page.
+ __( 'This will replace the current homepage: "%s"' ),
+ getItemTitle( currentHomePage )
+ );
+ }
const modalText = sprintf(
// translators: %1$s: title of the page to be set as the homepage, %2$s: homepage replacement warning message.
__( 'Set "%1$s" as the site homepage? %2$s' ),
pageTitle,
modalWarning
- );
+ ).trim();
// translators: Button label to confirm setting the specified page as the homepage.
const modalButtonLabel = __( 'Set homepage' );
From ed4c2d30cd0ce54c5324353c6e6c13751cf2a17d Mon Sep 17 00:00:00 2001
From: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
Date: Wed, 11 Dec 2024 17:09:40 +0900
Subject: [PATCH 004/163] ChildLayoutControl: Use units defined in theme.json
(#67784)
Co-authored-by: t-hamano
Co-authored-by: tellthemachines
Co-authored-by: jhmonroe
---
.../src/components/child-layout-control/index.js | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/packages/block-editor/src/components/child-layout-control/index.js b/packages/block-editor/src/components/child-layout-control/index.js
index 022acf2e1074a4..20791d9751bcd4 100644
--- a/packages/block-editor/src/components/child-layout-control/index.js
+++ b/packages/block-editor/src/components/child-layout-control/index.js
@@ -9,6 +9,7 @@ import {
__experimentalHStack as HStack,
__experimentalVStack as VStack,
__experimentalToolsPanelItem as ToolsPanelItem,
+ __experimentalUseCustomUnits as useCustomUnits,
Flex,
FlexItem,
} from '@wordpress/components';
@@ -21,6 +22,7 @@ import { useSelect, useDispatch } from '@wordpress/data';
*/
import { useGetNumberOfBlocksBeforeCell } from '../grid/use-get-number-of-blocks-before-cell';
import { store as blockEditorStore } from '../../store';
+import { useSettings } from '../use-settings';
function helpText( selfStretch, parentLayout ) {
const { orientation = 'horizontal' } = parentLayout;
@@ -98,6 +100,17 @@ function FlexControls( {
const hasFlexValue = () => !! selfStretch;
const flexResetLabel =
orientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );
+ const [ availableUnits ] = useSettings( 'spacing.units' );
+ const units = useCustomUnits( {
+ availableUnits: availableUnits || [
+ '%',
+ 'px',
+ 'em',
+ 'rem',
+ 'vh',
+ 'vw',
+ ],
+ } );
const resetFlex = () => {
onChange( {
selfStretch: undefined,
@@ -167,6 +180,7 @@ function FlexControls( {
{ selfStretch === 'fixed' && (
{
onChange( {
selfStretch,
From 7952846e264d7089f86eb699a8a90e698b84adde Mon Sep 17 00:00:00 2001
From: Gutenberg Repository Automation
Date: Wed, 11 Dec 2024 08:20:54 +0000
Subject: [PATCH 005/163] Update Changelog for 19.9.0-rc.1
---
changelog.txt | 384 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 384 insertions(+)
diff --git a/changelog.txt b/changelog.txt
index 38b33267554982..8e7c1d84d7c7da 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,5 +1,389 @@
== Changelog ==
+= 19.9.0-rc.1 =
+
+## Changelog
+
+### Enhancements
+
+- Feature: Add `navigation.isLoading` state to core/router store. ([67680](https://github.com/WordPress/gutenberg/pull/67680))
+- Update the title, description, and order of Experiments page. ([67762](https://github.com/WordPress/gutenberg/pull/67762))
+- wp-env: Add phpMyAdmin support. ([67588](https://github.com/WordPress/gutenberg/pull/67588))
+
+#### Components
+- Added enableAlpha prop to CustomGradientPicker and GradientPicker components. ([66974](https://github.com/WordPress/gutenberg/pull/66974))
+- BorderBoxControl: Reduce gap value when unlinked. ([67049](https://github.com/WordPress/gutenberg/pull/67049))
+- DateTime: Add default date/time to stories. ([67678](https://github.com/WordPress/gutenberg/pull/67678))
+- Deprecate `COLORS.white`. ([67649](https://github.com/WordPress/gutenberg/pull/67649))
+- Disabled: Suppress `contentEditable` warning in story. ([67679](https://github.com/WordPress/gutenberg/pull/67679))
+- Document layout in Storybook. ([67628](https://github.com/WordPress/gutenberg/pull/67628))
+- DropdownMenu: Increase option height to 40px. ([67435](https://github.com/WordPress/gutenberg/pull/67435))
+- DuotonePicker: Simplify Button styles. ([66641](https://github.com/WordPress/gutenberg/pull/66641))
+- Menu: Throw when subcomponents are not rendered inside top level Menu. ([67411](https://github.com/WordPress/gutenberg/pull/67411))
+- Popover: Use `anchor` instead of `anchorRef` in story. ([67674](https://github.com/WordPress/gutenberg/pull/67674))
+- Storybook: Remove unnecessary feature flags. ([67576](https://github.com/WordPress/gutenberg/pull/67576))
+- Storybook: Update `ArgsTable` to `Controls` in preview. ([67582](https://github.com/WordPress/gutenberg/pull/67582))
+- Storybook: Update control types from `null` to `undefined`. ([67581](https://github.com/WordPress/gutenberg/pull/67581))
+- Storybook: Use manager-api instead of addons package. ([67578](https://github.com/WordPress/gutenberg/pull/67578))
+- Update @ariakit/react to 0.4.13. ([65907](https://github.com/WordPress/gutenberg/pull/65907))
+- Update @ariakit/react to 0.4.15 and @ariakit/test to 0.4.7. ([67404](https://github.com/WordPress/gutenberg/pull/67404))
+
+#### Block Library
+- Cover Block: Image size option for featured image. ([67273](https://github.com/WordPress/gutenberg/pull/67273))
+- Feature: Allow Post Template block to get deeply nested within Query Block. ([67657](https://github.com/WordPress/gutenberg/pull/67657))
+- Image Block: Change how the Image's overlay styles are applied. ([67788](https://github.com/WordPress/gutenberg/pull/67788))
+- Navigation: Enable all non-interactive formats. ([67585](https://github.com/WordPress/gutenberg/pull/67585))
+- Query block: Move patterns modal to dropdown on block toolbar. ([66993](https://github.com/WordPress/gutenberg/pull/66993))
+- Separator block: Allow divs to be used as separators. ([67530](https://github.com/WordPress/gutenberg/pull/67530))
+- [ New Block ] Add Query Total block for displaying total query results or ranges. ([67629](https://github.com/WordPress/gutenberg/pull/67629))
+- [Block Library]: Update the relationship of `No results` block to `ancestor`. ([48348](https://github.com/WordPress/gutenberg/pull/48348))
+
+#### DataViews
+- Add header to the quick edit when bulk editing. ([67390](https://github.com/WordPress/gutenberg/pull/67390))
+- Data views: Expand configuration drop down on mobile. ([67715](https://github.com/WordPress/gutenberg/pull/67715))
+- Quick Edit: Add Template field. ([66591](https://github.com/WordPress/gutenberg/pull/66591))
+- Refactor actions to render modal outside of the menu. ([67664](https://github.com/WordPress/gutenberg/pull/67664))
+- Renders `DataForm` component only when data has been fetched. ([67694](https://github.com/WordPress/gutenberg/pull/67694))
+- Unify layout configuration. ([67477](https://github.com/WordPress/gutenberg/pull/67477))
+- Update bulk header with actions. ([67743](https://github.com/WordPress/gutenberg/pull/67743))
+
+#### Style Book
+- Add stylebook screen for classic themes. ([66851](https://github.com/WordPress/gutenberg/pull/66851))
+- Scroll to top at styles root. ([67605](https://github.com/WordPress/gutenberg/pull/67605))
+- Stylebook: Render overview colors in 4 columns. ([67597](https://github.com/WordPress/gutenberg/pull/67597))
+- Update style book headings to new design. ([67546](https://github.com/WordPress/gutenberg/pull/67546))
+
+#### Post Editor
+- Inline Commenting: Added new sidebar as extension of the canvas. ([67347](https://github.com/WordPress/gutenberg/pull/67347))
+- Inline Commenting: Re-order the comments in sidebar in which blocks are listed. ([66927](https://github.com/WordPress/gutenberg/pull/66927))
+- Inline commenting: UX Enhancements for Comments. ([67385](https://github.com/WordPress/gutenberg/pull/67385))
+
+#### Site Editor
+- Data Views: Add action for pages to set site homepage. ([65426](https://github.com/WordPress/gutenberg/pull/65426))
+- Sidebar: Update appearance of active items. ([67318](https://github.com/WordPress/gutenberg/pull/67318))
+- Style the selected template pattern. ([65917](https://github.com/WordPress/gutenberg/pull/65917))
+
+#### Data Layer
+- Data: Expose 'useSelect' warning to third-party consumers. ([67735](https://github.com/WordPress/gutenberg/pull/67735))
+- Data: Include more details when shallow equality fails in 'useSelect'. ([67713](https://github.com/WordPress/gutenberg/pull/67713))
+
+#### Global Styles
+- Controls in grid should match between sidebar panel and editor. ([67602](https://github.com/WordPress/gutenberg/pull/67602))
+- Shadows: Improve design and a11y of remove button. ([67705](https://github.com/WordPress/gutenberg/pull/67705))
+
+#### Block Editor
+- Prefer exact matches in Link Search results sorting. ([67367](https://github.com/WordPress/gutenberg/pull/67367))
+- Try direct drag (outside text editable). ([67305](https://github.com/WordPress/gutenberg/pull/67305))
+
+#### Zoom Out
+- Keep only copy, duplicate and delete in the zoom out more block toolbar menu item. ([67279](https://github.com/WordPress/gutenberg/pull/67279))
+
+#### Font Library
+- FontCollection: Update pagination controls. ([67143](https://github.com/WordPress/gutenberg/pull/67143))
+
+#### Colors
+- Add reset button to color control. ([67116](https://github.com/WordPress/gutenberg/pull/67116))
+
+
+### Bug Fixes
+
+- Exclude Set instance methods from polyfills. ([67230](https://github.com/WordPress/gutenberg/pull/67230))
+- Preload: Fix settings fields order. ([67450](https://github.com/WordPress/gutenberg/pull/67450))
+- Scripts: Make React Fast Refresh work with multiple blocks. ([64924](https://github.com/WordPress/gutenberg/pull/64924))
+- WP Scripts: Update webpack dependencies related to styling. ([67572](https://github.com/WordPress/gutenberg/pull/67572))
+
+#### Site Editor
+- Allow access to quick edit. ([67469](https://github.com/WordPress/gutenberg/pull/67469))
+- Edit Site: Fix sidebar template author navigation. ([67382](https://github.com/WordPress/gutenberg/pull/67382))
+- Fix Site editor navigation menu items alignment visual regression. ([67321](https://github.com/WordPress/gutenberg/pull/67321))
+- Fix sidebar item animation regression. ([67771](https://github.com/WordPress/gutenberg/pull/67771))
+- Fix sidebar plugins. ([67557](https://github.com/WordPress/gutenberg/pull/67557))
+- Fix the templates route on mobile. ([67547](https://github.com/WordPress/gutenberg/pull/67547))
+- Fix: Fixed site-editor crashing when added front-page template and clicking more option. ([67500](https://github.com/WordPress/gutenberg/pull/67500))
+- Fix: Fixed styling tab not opening on themes without style variations on mobile & desktop. ([67537](https://github.com/WordPress/gutenberg/pull/67537))
+- Preload: Parse post ID from p (path). ([67465](https://github.com/WordPress/gutenberg/pull/67465))
+- Remove default page slug. ([67673](https://github.com/WordPress/gutenberg/pull/67673))
+- Router: Fix addition and removal of empty classnames. ([67378](https://github.com/WordPress/gutenberg/pull/67378))
+- Wrap each router area in 'ErrorBoundary'. ([64245](https://github.com/WordPress/gutenberg/pull/64245))
+- useEditorTitle: Fix wrong request without ID. ([67475](https://github.com/WordPress/gutenberg/pull/67475))
+
+#### Block Editor
+- Animate `useScaleCanvas()` only when toggling zoomed out mode. ([67481](https://github.com/WordPress/gutenberg/pull/67481))
+- Drag and drop: Fix drop zones on block drag. ([67317](https://github.com/WordPress/gutenberg/pull/67317))
+- Drag and drop: Fix firefox compat logic. ([67439](https://github.com/WordPress/gutenberg/pull/67439))
+- Fix JS error in the 'useTabNav' hook. ([67102](https://github.com/WordPress/gutenberg/pull/67102))
+- FontFamilyControl: Restore margin bottom. ([67424](https://github.com/WordPress/gutenberg/pull/67424))
+- Inserter: Hide child blocks from the inserter when needed. ([67734](https://github.com/WordPress/gutenberg/pull/67734))
+- Inserter: Patterns: Remove loading indicator. ([67072](https://github.com/WordPress/gutenberg/pull/67072))
+- Inserter: Should receive focus on open. ([67754](https://github.com/WordPress/gutenberg/pull/67754))
+- Remove words count in the multi-selection inspector. ([67624](https://github.com/WordPress/gutenberg/pull/67624))
+- Storybook: Fix `BlockPatternsList` fixtures. ([67672](https://github.com/WordPress/gutenberg/pull/67672))
+- Drag and drop: Fix misplaced drop indicator. ([67434](https://github.com/WordPress/gutenberg/pull/67434))
+- Drag and drop: Fix scroll disorientation after drop. ([67405](https://github.com/WordPress/gutenberg/pull/67405))
+- Drag and drop: Restore moving animation. ([67417](https://github.com/WordPress/gutenberg/pull/67417))
+
+#### Block Library
+- Align Submenu block and Nav Link block by including description and wrapping span. ([67198](https://github.com/WordPress/gutenberg/pull/67198))
+- CommentsPagination: Set font-size to inherit for pagination items. ([67296](https://github.com/WordPress/gutenberg/pull/67296))
+- Fix latest post block spacing issue. ([66442](https://github.com/WordPress/gutenberg/pull/66442))
+- Fix: Caption with Link in Wide-Width and Full-Width Images Appears on two lines. ([67392](https://github.com/WordPress/gutenberg/pull/67392))
+- Fix: Don't show `aria-label` when its value is empty. ([67381](https://github.com/WordPress/gutenberg/pull/67381))
+- Navigation Block: Fix issue with double-clicking "Create a new menu" causing duplicate menus. ([67488](https://github.com/WordPress/gutenberg/pull/67488))
+- Pullquote block having design issue when text-decoration is choosen strikethrough. ([66707](https://github.com/WordPress/gutenberg/pull/66707))
+- Remove inline-block display from image anchor in style.scss. ([67368](https://github.com/WordPress/gutenberg/pull/67368))
+- Search block: Add space between attributes when using "Button only" option. ([61399](https://github.com/WordPress/gutenberg/pull/61399))
+- Updated 'Set featured image' text in dropdown. ([67775](https://github.com/WordPress/gutenberg/pull/67775))
+
+#### DataViews
+- Avoid double click handler on primary fields. ([67393](https://github.com/WordPress/gutenberg/pull/67393))
+- Better handling of missing onClickItem prop. ([67402](https://github.com/WordPress/gutenberg/pull/67402))
+- Fix filters lost when switching layouts. ([67740](https://github.com/WordPress/gutenberg/pull/67740))
+- Fix hidden List layout actions dropdown. ([67778](https://github.com/WordPress/gutenberg/pull/67778))
+- Fix reordering fields in list and grid layouts. ([67777](https://github.com/WordPress/gutenberg/pull/67777))
+- Fix: Duplicate template part refers to original name instead of duplicated name. ([67329](https://github.com/WordPress/gutenberg/pull/67329))
+- Preserve filters when switching layouts in templates dataviews. ([67744](https://github.com/WordPress/gutenberg/pull/67744))
+- QuickEdit: Prevent site-editor from crashing when slug is not an object. ([67577](https://github.com/WordPress/gutenberg/pull/67577))
+- Site Editor: Fix featured image not appearing in pages dataviews. ([67562](https://github.com/WordPress/gutenberg/pull/67562))
+
+#### Components
+- CustomSelectControl: Update Value from Fresh State. ([67733](https://github.com/WordPress/gutenberg/pull/67733))
+- Fix the 'ClipboardButton' effect cleanup. ([67399](https://github.com/WordPress/gutenberg/pull/67399))
+- Navigation: Fix active item hover color. ([67732](https://github.com/WordPress/gutenberg/pull/67732))
+- Scrollable: Fix story by declaring field as readonly. ([67683](https://github.com/WordPress/gutenberg/pull/67683))
+- Storybook: Fix control types. ([67646](https://github.com/WordPress/gutenberg/pull/67646))
+- Storybook: Fix storybook blocks imports. ([67684](https://github.com/WordPress/gutenberg/pull/67684))
+- Storybook: Fix table markup in Design Language - Radius documentation. ([67686](https://github.com/WordPress/gutenberg/pull/67686))
+- Theme: Fix contrast in nested story. ([67681](https://github.com/WordPress/gutenberg/pull/67681))
+
+#### Post Editor
+- Fix Meta boxes saving when they’re not present. ([67254](https://github.com/WordPress/gutenberg/pull/67254))
+- Fix hiding and showing of meta boxes. ([67504](https://github.com/WordPress/gutenberg/pull/67504))
+- Fix: Header layout spacing in Firefox. ([67074](https://github.com/WordPress/gutenberg/pull/67074))
+- Make sure Document Bar doesn’t go missing. ([67322](https://github.com/WordPress/gutenberg/pull/67322))
+- Update pre-publish panel wording to accurately describe the review process. ([67328](https://github.com/WordPress/gutenberg/pull/67328))
+
+#### Zoom Out
+- Fix for inserter. ([67495](https://github.com/WordPress/gutenberg/pull/67495))
+- Fix useZoomOut inserter behavior. ([67591](https://github.com/WordPress/gutenberg/pull/67591))
+- Fix zoom animation scrollbar. ([67536](https://github.com/WordPress/gutenberg/pull/67536))
+- UseScaleCanvas performance improvements. ([67496](https://github.com/WordPress/gutenberg/pull/67496))
+
+#### Write mode
+- Fix color of disabled buttons in dark toolbar. ([67348](https://github.com/WordPress/gutenberg/pull/67348))
+- Fix synced pattern editing in write mode and refactor block editing mode to reducer. ([67026](https://github.com/WordPress/gutenberg/pull/67026))
+- Fix: Remove parent block selector while in Write mode. ([67395](https://github.com/WordPress/gutenberg/pull/67395))
+- Fix: Write Mode mode persists as enabled in widget editor. ([67587](https://github.com/WordPress/gutenberg/pull/67587))
+
+#### Global Styles
+- Edit site: Remove empty preview border and redirect to editor in global styles navigation. ([67548](https://github.com/WordPress/gutenberg/pull/67548))
+- Fix: Styles section does not moves stylebook to typography. ([67423](https://github.com/WordPress/gutenberg/pull/67423))
+- Global Styles Preview: Don't use iframe component. ([67682](https://github.com/WordPress/gutenberg/pull/67682))
+
+#### Style Book
+- Fix critical error when blocks are not registered. ([67703](https://github.com/WordPress/gutenberg/pull/67703))
+
+#### Design Tools
+- Global Styles: Fix handling of booleans when stabilizing block supports. ([67552](https://github.com/WordPress/gutenberg/pull/67552))
+
+#### Block bindings
+- Revert "Extensibility: Make Block Bindings work with `editor.BlockEdit` hook". ([67516](https://github.com/WordPress/gutenberg/pull/67516))
+
+#### Patterns
+- Site Editor: Fix the patterns route on mobile. ([67467](https://github.com/WordPress/gutenberg/pull/67467))
+
+#### Focus Mode
+- Site Editor: Fix focus mode navigation. ([67458](https://github.com/WordPress/gutenberg/pull/67458))
+
+#### List View
+- Fix List View not updating when switching editor modes. ([67379](https://github.com/WordPress/gutenberg/pull/67379))
+
+#### Extensibility
+- Make Block Bindings work with `editor.BlockEdit` hook. ([67370](https://github.com/WordPress/gutenberg/pull/67370))
+
+#### Synced Patterns
+- Remove use of `contentOnly` block editing mode for synced patterns. ([67364](https://github.com/WordPress/gutenberg/pull/67364))
+
+#### Widgets Editor
+- Block Bindings: Remove client core sources registration in widgets. ([67349](https://github.com/WordPress/gutenberg/pull/67349))
+
+#### REST API
+- Support search_columns argument in the user endpoint. ([67330](https://github.com/WordPress/gutenberg/pull/67330))
+
+
+### Accessibility
+
+- [Dataviews] Fix: Space does not triggers the media button on grid view. ([67791](https://github.com/WordPress/gutenberg/pull/67791))
+
+#### Block Editor
+- BlockSwitcher: Refactor to use Button layout properly. ([67502](https://github.com/WordPress/gutenberg/pull/67502))
+- Remove one occurrence of incorrect usage of ItemGroup. ([67427](https://github.com/WordPress/gutenberg/pull/67427))
+
+#### DataViews
+- [a11y] Fix: Media button on the page view grid does not have an accessible name. ([67690](https://github.com/WordPress/gutenberg/pull/67690))
+
+#### Components
+- Fix incorrect usage of ItemGroup in the Image block filters panel. ([67513](https://github.com/WordPress/gutenberg/pull/67513))
+
+#### Post Editor
+- Fix EntitiesSavedStates panel dialog props. ([67351](https://github.com/WordPress/gutenberg/pull/67351))
+
+
+### Performance
+
+- Fix re-renders caused by `getEntityRecordsPermissions` after #67667. ([67770](https://github.com/WordPress/gutenberg/pull/67770))
+- Preload: Fix end-to-end test. ([67497](https://github.com/WordPress/gutenberg/pull/67497))
+- Site Editor: Pages: Preload template lookup. ([66654](https://github.com/WordPress/gutenberg/pull/66654))
+- [mini] Preload: Add post type. ([67518](https://github.com/WordPress/gutenberg/pull/67518))
+
+
+### Experiments
+
+- Move `duplicateTemplatePart` action to the `@wordpress/fields` package. ([65390](https://github.com/WordPress/gutenberg/pull/65390))
+
+
+### Documentation
+
+- Button: Revise documentation. ([66617](https://github.com/WordPress/gutenberg/pull/66617))
+- Docs: Fix Playwright Page Object Model link. ([67652](https://github.com/WordPress/gutenberg/pull/67652))
+- Docs: Include the strategy for setting `engines` for WordPress packages. ([67727](https://github.com/WordPress/gutenberg/pull/67727))
+- Docs: Remove invalid key projects links on the documentation. ([67491](https://github.com/WordPress/gutenberg/pull/67491))
+- Improve documentation for fields package. ([67580](https://github.com/WordPress/gutenberg/pull/67580))
+- Refine `getServerState()` & `getServerContext()` documentation. ([67499](https://github.com/WordPress/gutenberg/pull/67499))
+- Storybook: Add WritingModeControl story. ([67343](https://github.com/WordPress/gutenberg/pull/67343))
+- Storybook: Add stories for AlignmentToolbar and AlignmentControl components. ([67046](https://github.com/WordPress/gutenberg/pull/67046))
+- Storybook: Add stories for HeadingLevelDropdown component. ([67294](https://github.com/WordPress/gutenberg/pull/67294))
+- Storybook: Revert "Preview: ArgsTable => Controls (#67582)". ([67656](https://github.com/WordPress/gutenberg/pull/67656))
+- Storybook: Support keyword search in Icon Library. ([67442](https://github.com/WordPress/gutenberg/pull/67442))
+- Switch Several Links to https in Document Files. ([67706](https://github.com/WordPress/gutenberg/pull/67706))
+- Update README.md. ([67711](https://github.com/WordPress/gutenberg/pull/67711))
+- Update extending-the-query-loop-block.md. ([67529](https://github.com/WordPress/gutenberg/pull/67529))
+- Update global stylesheet docblocks with `custom-css` parameter. ([67716](https://github.com/WordPress/gutenberg/pull/67716))
+- Updated old URL in Documentation. ([67446](https://github.com/WordPress/gutenberg/pull/67446))
+
+
+### Code Quality
+
+- Convert lock unlock to generics. ([66682](https://github.com/WordPress/gutenberg/pull/66682))
+- CreateTemplatePartModal: Avoid identity warning in useSelect. ([67786](https://github.com/WordPress/gutenberg/pull/67786))
+- CreateTemplatePartModal: Replace `ts-ignore` with `ts-expect-error`. ([67709](https://github.com/WordPress/gutenberg/pull/67709))
+- Fix misc type compilation errors in editor and block editor packages. ([67410](https://github.com/WordPress/gutenberg/pull/67410))
+- Fix: Invalid JSDoc for optional string parameter and return value. ([67489](https://github.com/WordPress/gutenberg/pull/67489))
+- Fix: Remove unused test code on tools panel. ([67589](https://github.com/WordPress/gutenberg/pull/67589))
+- Removed trailing space in "Color randomizer ". ([67457](https://github.com/WordPress/gutenberg/pull/67457))
+- Update misc types and revert WPCompleter export from components. ([67599](https://github.com/WordPress/gutenberg/pull/67599))
+
+#### Components
+- BoxControl: Deprecate 36px default size. ([66704](https://github.com/WordPress/gutenberg/pull/66704))
+- BoxControl: Passive deprecate `onMouseOver`/`onMouseOut`. ([67332](https://github.com/WordPress/gutenberg/pull/67332))
+- BoxControl: Refactor and unify the different sides implementation. ([67626](https://github.com/WordPress/gutenberg/pull/67626))
+- CustomSelectControl: Deprecate 36px default size. ([67441](https://github.com/WordPress/gutenberg/pull/67441))
+- FormFileUpload: Deprecate 36px default size. ([67438](https://github.com/WordPress/gutenberg/pull/67438))
+- FormTokenField: Deprecate 36px default size. ([67454](https://github.com/WordPress/gutenberg/pull/67454))
+- NumberControl: Deprecate 36px default size. ([66730](https://github.com/WordPress/gutenberg/pull/66730))
+- RangeControl: Update the default marks styles to match the padding/margin control. ([67611](https://github.com/WordPress/gutenberg/pull/67611))
+- Remove `__unstableMotionContext` from `@wordpress/components`. ([67623](https://github.com/WordPress/gutenberg/pull/67623))
+- SlotFill: Remove explicit rerender from portal version. ([67471](https://github.com/WordPress/gutenberg/pull/67471))
+- Tabs: Overhaul unit tests. ([66140](https://github.com/WordPress/gutenberg/pull/66140))
+- ToolbarButton: Set size to "compact". ([67440](https://github.com/WordPress/gutenberg/pull/67440))
+- UnitControl : Deprecate 36px default size. ([66791](https://github.com/WordPress/gutenberg/pull/66791))
+
+#### Block Editor
+- Group 'onRemove' callback with other public APIs. ([67551](https://github.com/WordPress/gutenberg/pull/67551))
+- InspectorControlsSlot: Remove unused framer motion context forwarding. ([67522](https://github.com/WordPress/gutenberg/pull/67522))
+- LetteringSpacingControl: Deprecate 36px default size. ([67429](https://github.com/WordPress/gutenberg/pull/67429))
+- Reduce the 'isZoomOut' selector calls in the block toolbar. ([67594](https://github.com/WordPress/gutenberg/pull/67594))
+- Remove 'React.Children' legacy API in 'Warning' component. ([67675](https://github.com/WordPress/gutenberg/pull/67675))
+- Replace remaining custom deep cloning with 'structuredClone'. ([67707](https://github.com/WordPress/gutenberg/pull/67707))
+- Stabilize `LinkControl` Component. ([56384](https://github.com/WordPress/gutenberg/pull/56384))
+
+#### Site Editor
+- Remove .components-item-group selector in edit-site components[2]. ([67575](https://github.com/WordPress/gutenberg/pull/67575))
+- Site Editor Sidebar: Remove `hasGlobalStyleVariations` condition for the Styles nav item. ([67545](https://github.com/WordPress/gutenberg/pull/67545))
+- Unify layout with posts dataviews. ([67162](https://github.com/WordPress/gutenberg/pull/67162))
+- Use path based routing instead of query args and site-editor.php routes. ([67199](https://github.com/WordPress/gutenberg/pull/67199))
+
+#### Post Editor
+- Editor: Refactor 'PostPublishPanelPostpublish' to function component. ([67398](https://github.com/WordPress/gutenberg/pull/67398))
+- Editor: Use hooks instead of HOC in 'PostPublishButtonOrToggle'. ([67413](https://github.com/WordPress/gutenberg/pull/67413))
+- Remove PostSlugCheck and PostSlug unused components. ([67414](https://github.com/WordPress/gutenberg/pull/67414))
+
+#### DataViews
+- Create a single component for rendering the actions list. ([67558](https://github.com/WordPress/gutenberg/pull/67558))
+- Fix: Dataviews remove primary field concept from some classes. ([67689](https://github.com/WordPress/gutenberg/pull/67689))
+
+#### Data Layer
+- TypeScript: Convert factory utils in data package to TS. ([67667](https://github.com/WordPress/gutenberg/pull/67667))
+
+#### Shortcodes
+- Add types for shortcode package. ([67416](https://github.com/WordPress/gutenberg/pull/67416))
+
+#### Block bindings
+- Remove fallback for `context.postType` in post meta. ([67345](https://github.com/WordPress/gutenberg/pull/67345))
+
+#### Block hooks
+- Navigation block: Remove more obsolete Block Hooks helpers. ([67193](https://github.com/WordPress/gutenberg/pull/67193))
+
+
+### Tools
+
+- PR template: Add before/after table. ([62739](https://github.com/WordPress/gutenberg/pull/62739))
+
+#### Build Tooling
+- Build: Stop generating unused legacy scripts for core blocks. ([65268](https://github.com/WordPress/gutenberg/pull/65268))
+- CI: Skip native jobs. ([67799](https://github.com/WordPress/gutenberg/pull/67799))
+- DataViews build-wp: Don't bundle singleton WordPress packages. ([67590](https://github.com/WordPress/gutenberg/pull/67590))
+- DataViews build-wp: Don't bundle the date package. ([67612](https://github.com/WordPress/gutenberg/pull/67612))
+- Keycodes: Improve tree shaking by annotating exports as pure. ([67615](https://github.com/WordPress/gutenberg/pull/67615))
+- Upgrade TypeScript to 5.7 and fix types. ([67461](https://github.com/WordPress/gutenberg/pull/67461))
+
+#### Testing
+- e2e-test-utils-playwright: Increase timeout of site-editor selector. ([66672](https://github.com/WordPress/gutenberg/pull/66672))
+
+
+### Security
+
+#### npm Packages
+- Update npm dependencies to fix issues reported by audit. ([67708](https://github.com/WordPress/gutenberg/pull/67708))
+
+
+### Various
+
+#### Extensibility
+- Add ability to show drop cap setting in paragraph block by default. ([45994](https://github.com/WordPress/gutenberg/pull/45994))
+- DataViews: Move template and pattern title fields. ([67449](https://github.com/WordPress/gutenberg/pull/67449))
+- DataViews: Update `usePostFields` to accept postType. ([67380](https://github.com/WordPress/gutenberg/pull/67380))
+
+#### Plugin
+- Only override REST server for older WP versions. ([67779](https://github.com/WordPress/gutenberg/pull/67779))
+
+#### NUX
+- Welcome guide headline update. ([67654](https://github.com/WordPress/gutenberg/pull/67654))
+
+#### Block Locking
+- Simplify description and option names in the Lock modal dialog. ([67437](https://github.com/WordPress/gutenberg/pull/67437))
+
+
+## First-time contributors
+
+The following PRs were merged by first-time contributors:
+
+- @alexflorisca: e2e-test-utils-playwright: Increase timeout of site-editor selector. ([66672](https://github.com/WordPress/gutenberg/pull/66672))
+- @benazeer-ben: Site editor: Style the selected template pattern. ([65917](https://github.com/WordPress/gutenberg/pull/65917))
+- @creador-dev: Navigation Block: Fix issue with double-clicking "Create a new menu" causing duplicate menus. ([67488](https://github.com/WordPress/gutenberg/pull/67488))
+- @dknauss: Update README.md. ([67711](https://github.com/WordPress/gutenberg/pull/67711))
+- @im3dabasia: Removed trailing space in "Color randomizer ". ([67457](https://github.com/WordPress/gutenberg/pull/67457))
+- @Mayank-Tripathi32: Fix: Header layout spacing in Firefox. ([67074](https://github.com/WordPress/gutenberg/pull/67074))
+- @subodhr258: CustomSelectControl: Update Value from Fresh State. ([67733](https://github.com/WordPress/gutenberg/pull/67733))
+- @wwdes: Added enableAlpha prop to CustomGradientPicker and GradientPicker components. ([66974](https://github.com/WordPress/gutenberg/pull/66974))
+
+
+## Contributors
+
+The following contributors merged PRs in this release:
+
+@aaronrobertshaw @afercia @akasunil @alexflorisca @annezazu @benazeer-ben @ciampo @creador-dev @creativecoder @DAreRodz @dcalhoun @dknauss @draganescu @ellatrix @fabiankaegy @getdave @gigitux @gvgvgvijayan @gziolo @hbhalodia @im3dabasia @imrraaj @jameskoster @jeryj @jorgefilipecosta @jsnajdr @juanfra @louwie17 @Mamaduka @manzoorwanijk @matiasbenedetto @Mayank-Tripathi32 @mcsf @michalczaplinski @miminari @mirka @ntsekouras @oandregal @ockham @prajapatisagar @ramonjd @sabernhardt @SantosGuillamot @sarthaknagoshe2002 @sgomes @shail-mehta @stokesman @subodhr258 @Sukhendu2002 @t-hamano @talldan @tellthemachines @tyxla @viralsampat-multidots @wwdes @yogeshbhutkar @youknowriad
+
+
= 19.8.0 =
## Changelog
From 114aa686fa86a59e37d83f896551f59f74080709 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?=
Date: Wed, 11 Dec 2024 10:27:13 +0100
Subject: [PATCH 006/163] Extensibility: Make Block Bindings work with
`editor.BlockEdit` hook (2nd try) (#67523)
* Block Bindings: Refactor `withBlockBindingSupport`
* Fix issues reported by CI
* Move bindings handling to EditWithGeneratedProps
* Move sources context to `useMemo`
* Reuse `getBlockBindingsSources`
* Add e2e test
* Add missing dependencies to block bindings JS script in e2e test
* Refactor block bindings utils
* Final touches on EditWithGeneratedProps
* Improve block bindings utils
* Address feedback from code review
---------
Co-authored-by: Mario Santos
Co-authored-by: gziolo
Co-authored-by: SantosGuillamot
Co-authored-by: ellatrix
Co-authored-by: Mamaduka
---
.../src/components/block-edit/edit.js | 229 ++++++++++++-
.../block-list/use-block-props/index.js | 2 +-
.../src/components/rich-text/index.js | 2 +-
.../block-editor/src/hooks/block-bindings.js | 4 +-
packages/block-editor/src/hooks/index.js | 1 -
.../src/hooks/use-bindings-attributes.js | 322 ------------------
.../block-editor/src/utils/block-bindings.js | 95 ++++++
packages/e2e-tests/plugins/block-bindings.php | 6 +-
.../e2e-tests/plugins/block-bindings/index.js | 45 +++
.../various/block-bindings/post-meta.spec.js | 41 +++
10 files changed, 408 insertions(+), 339 deletions(-)
delete mode 100644 packages/block-editor/src/hooks/use-bindings-attributes.js
diff --git a/packages/block-editor/src/components/block-edit/edit.js b/packages/block-editor/src/components/block-edit/edit.js
index 83d0e3f406f829..27d3650f3a0902 100644
--- a/packages/block-editor/src/components/block-edit/edit.js
+++ b/packages/block-editor/src/components/block-edit/edit.js
@@ -6,18 +6,27 @@ import clsx from 'clsx';
/**
* WordPress dependencies
*/
-import { withFilters } from '@wordpress/components';
import {
getBlockDefaultClassName,
- hasBlockSupport,
getBlockType,
+ hasBlockSupport,
+ store as blocksStore,
} from '@wordpress/blocks';
-import { useContext, useMemo } from '@wordpress/element';
+import { withFilters } from '@wordpress/components';
+import { useRegistry, useSelect } from '@wordpress/data';
+import { useCallback, useContext, useMemo } from '@wordpress/element';
/**
* Internal dependencies
*/
import BlockContext from '../block-context';
+import isURLLike from '../link-control/is-url-like';
+import {
+ canBindAttribute,
+ hasPatternOverridesDefaultBinding,
+ replacePatternOverridesDefaultBinding,
+} from '../../utils/block-bindings';
+import { unlock } from '../../lock-unlock';
/**
* Default value used for blocks which do not define their own context needs,
@@ -48,27 +57,223 @@ const Edit = ( props ) => {
const EditWithFilters = withFilters( 'editor.BlockEdit' )( Edit );
const EditWithGeneratedProps = ( props ) => {
- const { attributes = {}, name } = props;
+ const { name, clientId, attributes, setAttributes } = props;
+ const registry = useRegistry();
const blockType = getBlockType( name );
const blockContext = useContext( BlockContext );
+ const registeredSources = useSelect(
+ ( select ) =>
+ unlock( select( blocksStore ) ).getAllBlockBindingsSources(),
+ []
+ );
- // Assign context values using the block type's declared context needs.
- const context = useMemo( () => {
- return blockType && blockType.usesContext
+ const { blockBindings, context, hasPatternOverrides } = useMemo( () => {
+ // Assign context values using the block type's declared context needs.
+ const computedContext = blockType?.usesContext
? Object.fromEntries(
Object.entries( blockContext ).filter( ( [ key ] ) =>
blockType.usesContext.includes( key )
)
)
: DEFAULT_BLOCK_CONTEXT;
- }, [ blockType, blockContext ] );
+ // Add context requested by Block Bindings sources.
+ if ( attributes?.metadata?.bindings ) {
+ Object.values( attributes?.metadata?.bindings || {} ).forEach(
+ ( binding ) => {
+ registeredSources[ binding?.source ]?.usesContext?.forEach(
+ ( key ) => {
+ computedContext[ key ] = blockContext[ key ];
+ }
+ );
+ }
+ );
+ }
+ return {
+ blockBindings: replacePatternOverridesDefaultBinding(
+ name,
+ attributes?.metadata?.bindings
+ ),
+ context: computedContext,
+ hasPatternOverrides: hasPatternOverridesDefaultBinding(
+ attributes?.metadata?.bindings
+ ),
+ };
+ }, [
+ name,
+ blockType?.usesContext,
+ blockContext,
+ attributes?.metadata?.bindings,
+ registeredSources,
+ ] );
+
+ const computedAttributes = useSelect(
+ ( select ) => {
+ if ( ! blockBindings ) {
+ return attributes;
+ }
+
+ const attributesFromSources = {};
+ const blockBindingsBySource = new Map();
+
+ for ( const [ attributeName, binding ] of Object.entries(
+ blockBindings
+ ) ) {
+ const { source: sourceName, args: sourceArgs } = binding;
+ const source = registeredSources[ sourceName ];
+ if ( ! source || ! canBindAttribute( name, attributeName ) ) {
+ continue;
+ }
+
+ blockBindingsBySource.set( source, {
+ ...blockBindingsBySource.get( source ),
+ [ attributeName ]: {
+ args: sourceArgs,
+ },
+ } );
+ }
+
+ if ( blockBindingsBySource.size ) {
+ for ( const [ source, bindings ] of blockBindingsBySource ) {
+ // Get values in batch if the source supports it.
+ let values = {};
+ if ( ! source.getValues ) {
+ Object.keys( bindings ).forEach( ( attr ) => {
+ // Default to the the source label when `getValues` doesn't exist.
+ values[ attr ] = source.label;
+ } );
+ } else {
+ values = source.getValues( {
+ select,
+ context,
+ clientId,
+ bindings,
+ } );
+ }
+ for ( const [ attributeName, value ] of Object.entries(
+ values
+ ) ) {
+ if (
+ attributeName === 'url' &&
+ ( ! value || ! isURLLike( value ) )
+ ) {
+ // Return null if value is not a valid URL.
+ attributesFromSources[ attributeName ] = null;
+ } else {
+ attributesFromSources[ attributeName ] = value;
+ }
+ }
+ }
+ }
+
+ return {
+ ...attributes,
+ ...attributesFromSources,
+ };
+ },
+ [
+ attributes,
+ blockBindings,
+ clientId,
+ context,
+ name,
+ registeredSources,
+ ]
+ );
+
+ const setBoundAttributes = useCallback(
+ ( nextAttributes ) => {
+ if ( ! blockBindings ) {
+ setAttributes( nextAttributes );
+ return;
+ }
+
+ registry.batch( () => {
+ const keptAttributes = { ...nextAttributes };
+ const blockBindingsBySource = new Map();
+
+ // Loop only over the updated attributes to avoid modifying the bound ones that haven't changed.
+ for ( const [ attributeName, newValue ] of Object.entries(
+ keptAttributes
+ ) ) {
+ if (
+ ! blockBindings[ attributeName ] ||
+ ! canBindAttribute( name, attributeName )
+ ) {
+ continue;
+ }
+
+ const binding = blockBindings[ attributeName ];
+ const source = registeredSources[ binding?.source ];
+ if ( ! source?.setValues ) {
+ continue;
+ }
+ blockBindingsBySource.set( source, {
+ ...blockBindingsBySource.get( source ),
+ [ attributeName ]: {
+ args: binding.args,
+ newValue,
+ },
+ } );
+ delete keptAttributes[ attributeName ];
+ }
+
+ if ( blockBindingsBySource.size ) {
+ for ( const [
+ source,
+ bindings,
+ ] of blockBindingsBySource ) {
+ source.setValues( {
+ select: registry.select,
+ dispatch: registry.dispatch,
+ context,
+ clientId,
+ bindings,
+ } );
+ }
+ }
+
+ const hasParentPattern = !! context[ 'pattern/overrides' ];
+
+ if (
+ // Don't update non-connected attributes if the block is using pattern overrides
+ // and the editing is happening while overriding the pattern (not editing the original).
+ ! ( hasPatternOverrides && hasParentPattern ) &&
+ Object.keys( keptAttributes ).length
+ ) {
+ // Don't update caption and href until they are supported.
+ if ( hasPatternOverrides ) {
+ delete keptAttributes.caption;
+ delete keptAttributes.href;
+ }
+ setAttributes( keptAttributes );
+ }
+ } );
+ },
+ [
+ blockBindings,
+ clientId,
+ context,
+ hasPatternOverrides,
+ setAttributes,
+ registeredSources,
+ name,
+ registry,
+ ]
+ );
if ( ! blockType ) {
return null;
}
if ( blockType.apiVersion > 1 ) {
- return ;
+ return (
+
+ );
}
// Generate a class name for the block's editable form.
@@ -77,15 +282,17 @@ const EditWithGeneratedProps = ( props ) => {
: null;
const className = clsx(
generatedClassName,
- attributes.className,
+ attributes?.className,
props.className
);
return (
);
};
diff --git a/packages/block-editor/src/components/block-list/use-block-props/index.js b/packages/block-editor/src/components/block-list/use-block-props/index.js
index 554adccdc22c9d..14cda82fe7cd26 100644
--- a/packages/block-editor/src/components/block-list/use-block-props/index.js
+++ b/packages/block-editor/src/components/block-list/use-block-props/index.js
@@ -29,7 +29,7 @@ import { useBlockRefProvider } from './use-block-refs';
import { useIntersectionObserver } from './use-intersection-observer';
import { useScrollIntoView } from './use-scroll-into-view';
import { useFlashEditableBlocks } from '../../use-flash-editable-blocks';
-import { canBindBlock } from '../../../hooks/use-bindings-attributes';
+import { canBindBlock } from '../../../utils/block-bindings';
import { useFirefoxDraggableCompatibility } from './use-firefox-draggable-compatibility';
/**
diff --git a/packages/block-editor/src/components/rich-text/index.js b/packages/block-editor/src/components/rich-text/index.js
index bc8eca6ea94d05..768ffbb0cdd2dc 100644
--- a/packages/block-editor/src/components/rich-text/index.js
+++ b/packages/block-editor/src/components/rich-text/index.js
@@ -39,7 +39,7 @@ import FormatEdit from './format-edit';
import { getAllowedFormats } from './utils';
import { Content, valueToHTMLString } from './content';
import { withDeprecations } from './with-deprecations';
-import { canBindBlock } from '../../hooks/use-bindings-attributes';
+import { canBindBlock } from '../../utils/block-bindings';
import BlockContext from '../block-context';
export const keyboardShortcutContext = createContext();
diff --git a/packages/block-editor/src/hooks/block-bindings.js b/packages/block-editor/src/hooks/block-bindings.js
index e10696cc1257d7..2dab67d6293328 100644
--- a/packages/block-editor/src/hooks/block-bindings.js
+++ b/packages/block-editor/src/hooks/block-bindings.js
@@ -26,12 +26,12 @@ import { useViewportMatch } from '@wordpress/compose';
import {
canBindAttribute,
getBindableAttributes,
-} from '../hooks/use-bindings-attributes';
+ useBlockBindingsUtils,
+} from '../utils/block-bindings';
import { unlock } from '../lock-unlock';
import InspectorControls from '../components/inspector-controls';
import BlockContext from '../components/block-context';
import { useBlockEditContext } from '../components/block-edit';
-import { useBlockBindingsUtils } from '../utils/block-bindings';
import { store as blockEditorStore } from '../store';
const { Menu } = unlock( componentsPrivateApis );
diff --git a/packages/block-editor/src/hooks/index.js b/packages/block-editor/src/hooks/index.js
index 66ff60b691b66f..7f9b29376ad1fb 100644
--- a/packages/block-editor/src/hooks/index.js
+++ b/packages/block-editor/src/hooks/index.js
@@ -32,7 +32,6 @@ import './metadata';
import blockHooks from './block-hooks';
import blockBindingsPanel from './block-bindings';
import './block-renaming';
-import './use-bindings-attributes';
import './grid-visualizer';
createBlockEditFilter(
diff --git a/packages/block-editor/src/hooks/use-bindings-attributes.js b/packages/block-editor/src/hooks/use-bindings-attributes.js
deleted file mode 100644
index fdc617fda20c05..00000000000000
--- a/packages/block-editor/src/hooks/use-bindings-attributes.js
+++ /dev/null
@@ -1,322 +0,0 @@
-/**
- * WordPress dependencies
- */
-import { store as blocksStore } from '@wordpress/blocks';
-import { createHigherOrderComponent } from '@wordpress/compose';
-import { useRegistry, useSelect } from '@wordpress/data';
-import { useCallback, useMemo, useContext } from '@wordpress/element';
-import { addFilter } from '@wordpress/hooks';
-
-/**
- * Internal dependencies
- */
-import isURLLike from '../components/link-control/is-url-like';
-import { unlock } from '../lock-unlock';
-import BlockContext from '../components/block-context';
-
-/** @typedef {import('@wordpress/compose').WPHigherOrderComponent} WPHigherOrderComponent */
-/** @typedef {import('@wordpress/blocks').WPBlockSettings} WPBlockSettings */
-
-/**
- * Given a binding of block attributes, returns a higher order component that
- * overrides its `attributes` and `setAttributes` props to sync any changes needed.
- *
- * @return {WPHigherOrderComponent} Higher-order component.
- */
-
-const BLOCK_BINDINGS_ALLOWED_BLOCKS = {
- 'core/paragraph': [ 'content' ],
- 'core/heading': [ 'content' ],
- 'core/image': [ 'id', 'url', 'title', 'alt' ],
- 'core/button': [ 'url', 'text', 'linkTarget', 'rel' ],
-};
-
-const DEFAULT_ATTRIBUTE = '__default';
-
-/**
- * Returns the bindings with the `__default` binding for pattern overrides
- * replaced with the full-set of supported attributes. e.g.:
- *
- * bindings passed in: `{ __default: { source: 'core/pattern-overrides' } }`
- * bindings returned: `{ content: { source: 'core/pattern-overrides' } }`
- *
- * @param {string} blockName The block name (e.g. 'core/paragraph').
- * @param {Object} bindings A block's bindings from the metadata attribute.
- *
- * @return {Object} The bindings with default replaced for pattern overrides.
- */
-function replacePatternOverrideDefaultBindings( blockName, bindings ) {
- // The `__default` binding currently only works for pattern overrides.
- if (
- bindings?.[ DEFAULT_ATTRIBUTE ]?.source === 'core/pattern-overrides'
- ) {
- const supportedAttributes = BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ];
- const bindingsWithDefaults = {};
- for ( const attributeName of supportedAttributes ) {
- // If the block has mixed binding sources, retain any non pattern override bindings.
- const bindingSource = bindings[ attributeName ]
- ? bindings[ attributeName ]
- : { source: 'core/pattern-overrides' };
- bindingsWithDefaults[ attributeName ] = bindingSource;
- }
-
- return bindingsWithDefaults;
- }
-
- return bindings;
-}
-
-/**
- * Based on the given block name,
- * check if it is possible to bind the block.
- *
- * @param {string} blockName - The block name.
- * @return {boolean} Whether it is possible to bind the block to sources.
- */
-export function canBindBlock( blockName ) {
- return blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS;
-}
-
-/**
- * Based on the given block name and attribute name,
- * check if it is possible to bind the block attribute.
- *
- * @param {string} blockName - The block name.
- * @param {string} attributeName - The attribute name.
- * @return {boolean} Whether it is possible to bind the block attribute.
- */
-export function canBindAttribute( blockName, attributeName ) {
- return (
- canBindBlock( blockName ) &&
- BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ].includes( attributeName )
- );
-}
-
-export function getBindableAttributes( blockName ) {
- return BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ];
-}
-
-export const withBlockBindingSupport = createHigherOrderComponent(
- ( BlockEdit ) => ( props ) => {
- const registry = useRegistry();
- const blockContext = useContext( BlockContext );
- const sources = useSelect( ( select ) =>
- unlock( select( blocksStore ) ).getAllBlockBindingsSources()
- );
- const { name, clientId, context, setAttributes } = props;
- const blockBindings = useMemo(
- () =>
- replacePatternOverrideDefaultBindings(
- name,
- props.attributes.metadata?.bindings
- ),
- [ props.attributes.metadata?.bindings, name ]
- );
-
- // While this hook doesn't directly call any selectors, `useSelect` is
- // used purposely here to ensure `boundAttributes` is updated whenever
- // there are attribute updates.
- // `source.getValues` may also call a selector via `registry.select`.
- const updatedContext = {};
- const boundAttributes = useSelect(
- ( select ) => {
- if ( ! blockBindings ) {
- return;
- }
-
- const attributes = {};
-
- const blockBindingsBySource = new Map();
-
- for ( const [ attributeName, binding ] of Object.entries(
- blockBindings
- ) ) {
- const { source: sourceName, args: sourceArgs } = binding;
- const source = sources[ sourceName ];
- if (
- ! source ||
- ! canBindAttribute( name, attributeName )
- ) {
- continue;
- }
-
- // Populate context.
- for ( const key of source.usesContext || [] ) {
- updatedContext[ key ] = blockContext[ key ];
- }
-
- blockBindingsBySource.set( source, {
- ...blockBindingsBySource.get( source ),
- [ attributeName ]: {
- args: sourceArgs,
- },
- } );
- }
-
- if ( blockBindingsBySource.size ) {
- for ( const [
- source,
- bindings,
- ] of blockBindingsBySource ) {
- // Get values in batch if the source supports it.
- let values = {};
- if ( ! source.getValues ) {
- Object.keys( bindings ).forEach( ( attr ) => {
- // Default to the the source label when `getValues` doesn't exist.
- values[ attr ] = source.label;
- } );
- } else {
- values = source.getValues( {
- select,
- context: updatedContext,
- clientId,
- bindings,
- } );
- }
- for ( const [ attributeName, value ] of Object.entries(
- values
- ) ) {
- if (
- attributeName === 'url' &&
- ( ! value || ! isURLLike( value ) )
- ) {
- // Return null if value is not a valid URL.
- attributes[ attributeName ] = null;
- } else {
- attributes[ attributeName ] = value;
- }
- }
- }
- }
-
- return attributes;
- },
- [ blockBindings, name, clientId, updatedContext, sources ]
- );
-
- const hasParentPattern = !! updatedContext[ 'pattern/overrides' ];
- const hasPatternOverridesDefaultBinding =
- props.attributes.metadata?.bindings?.[ DEFAULT_ATTRIBUTE ]
- ?.source === 'core/pattern-overrides';
-
- const _setAttributes = useCallback(
- ( nextAttributes ) => {
- registry.batch( () => {
- if ( ! blockBindings ) {
- setAttributes( nextAttributes );
- return;
- }
-
- const keptAttributes = { ...nextAttributes };
- const blockBindingsBySource = new Map();
-
- // Loop only over the updated attributes to avoid modifying the bound ones that haven't changed.
- for ( const [ attributeName, newValue ] of Object.entries(
- keptAttributes
- ) ) {
- if (
- ! blockBindings[ attributeName ] ||
- ! canBindAttribute( name, attributeName )
- ) {
- continue;
- }
-
- const binding = blockBindings[ attributeName ];
- const source = sources[ binding?.source ];
- if ( ! source?.setValues ) {
- continue;
- }
- blockBindingsBySource.set( source, {
- ...blockBindingsBySource.get( source ),
- [ attributeName ]: {
- args: binding.args,
- newValue,
- },
- } );
- delete keptAttributes[ attributeName ];
- }
-
- if ( blockBindingsBySource.size ) {
- for ( const [
- source,
- bindings,
- ] of blockBindingsBySource ) {
- source.setValues( {
- select: registry.select,
- dispatch: registry.dispatch,
- context: updatedContext,
- clientId,
- bindings,
- } );
- }
- }
-
- if (
- // Don't update non-connected attributes if the block is using pattern overrides
- // and the editing is happening while overriding the pattern (not editing the original).
- ! (
- hasPatternOverridesDefaultBinding &&
- hasParentPattern
- ) &&
- Object.keys( keptAttributes ).length
- ) {
- // Don't update caption and href until they are supported.
- if ( hasPatternOverridesDefaultBinding ) {
- delete keptAttributes?.caption;
- delete keptAttributes?.href;
- }
- setAttributes( keptAttributes );
- }
- } );
- },
- [
- registry,
- blockBindings,
- name,
- clientId,
- updatedContext,
- setAttributes,
- sources,
- hasPatternOverridesDefaultBinding,
- hasParentPattern,
- ]
- );
-
- return (
- <>
-
- >
- );
- },
- 'withBlockBindingSupport'
-);
-
-/**
- * Filters a registered block's settings to enhance a block's `edit` component
- * to upgrade bound attributes.
- *
- * @param {WPBlockSettings} settings - Registered block settings.
- * @param {string} name - Block name.
- * @return {WPBlockSettings} Filtered block settings.
- */
-function shimAttributeSource( settings, name ) {
- if ( ! canBindBlock( name ) ) {
- return settings;
- }
-
- return {
- ...settings,
- edit: withBlockBindingSupport( settings.edit ),
- };
-}
-
-addFilter(
- 'blocks.registerBlockType',
- 'core/editor/custom-sources-backwards-compatibility/shim-attribute-source',
- shimAttributeSource
-);
diff --git a/packages/block-editor/src/utils/block-bindings.js b/packages/block-editor/src/utils/block-bindings.js
index dcf80d985473b2..9a4c6acf9a9032 100644
--- a/packages/block-editor/src/utils/block-bindings.js
+++ b/packages/block-editor/src/utils/block-bindings.js
@@ -9,10 +9,105 @@ import { useDispatch, useRegistry } from '@wordpress/data';
import { store as blockEditorStore } from '../store';
import { useBlockEditContext } from '../components/block-edit';
+const DEFAULT_ATTRIBUTE = '__default';
+const PATTERN_OVERRIDES_SOURCE = 'core/pattern-overrides';
+const BLOCK_BINDINGS_ALLOWED_BLOCKS = {
+ 'core/paragraph': [ 'content' ],
+ 'core/heading': [ 'content' ],
+ 'core/image': [ 'id', 'url', 'title', 'alt' ],
+ 'core/button': [ 'url', 'text', 'linkTarget', 'rel' ],
+};
+
+/**
+ * Checks if the given object is empty.
+ *
+ * @param {?Object} object The object to check.
+ *
+ * @return {boolean} Whether the object is empty.
+ */
function isObjectEmpty( object ) {
return ! object || Object.keys( object ).length === 0;
}
+/**
+ * Based on the given block name, checks if it is possible to bind the block.
+ *
+ * @param {string} blockName The name of the block.
+ *
+ * @return {boolean} Whether it is possible to bind the block to sources.
+ */
+export function canBindBlock( blockName ) {
+ return blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS;
+}
+
+/**
+ * Based on the given block name and attribute name, checks if it is possible to bind the block attribute.
+ *
+ * @param {string} blockName The name of the block.
+ * @param {string} attributeName The name of attribute.
+ *
+ * @return {boolean} Whether it is possible to bind the block attribute.
+ */
+export function canBindAttribute( blockName, attributeName ) {
+ return (
+ canBindBlock( blockName ) &&
+ BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ].includes( attributeName )
+ );
+}
+
+/**
+ * Gets the bindable attributes for a given block.
+ *
+ * @param {string} blockName The name of the block.
+ *
+ * @return {string[]} The bindable attributes for the block.
+ */
+export function getBindableAttributes( blockName ) {
+ return BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ];
+}
+
+/**
+ * Checks if the block has the `__default` binding for pattern overrides.
+ *
+ * @param {?Record} bindings A block's bindings from the metadata attribute.
+ *
+ * @return {boolean} Whether the block has the `__default` binding for pattern overrides.
+ */
+export function hasPatternOverridesDefaultBinding( bindings ) {
+ return bindings?.[ DEFAULT_ATTRIBUTE ]?.source === PATTERN_OVERRIDES_SOURCE;
+}
+
+/**
+ * Returns the bindings with the `__default` binding for pattern overrides
+ * replaced with the full-set of supported attributes. e.g.:
+ *
+ * - bindings passed in: `{ __default: { source: 'core/pattern-overrides' } }`
+ * - bindings returned: `{ content: { source: 'core/pattern-overrides' } }`
+ *
+ * @param {string} blockName The block name (e.g. 'core/paragraph').
+ * @param {?Record} bindings A block's bindings from the metadata attribute.
+ *
+ * @return {Object} The bindings with default replaced for pattern overrides.
+ */
+export function replacePatternOverridesDefaultBinding( blockName, bindings ) {
+ // The `__default` binding currently only works for pattern overrides.
+ if ( hasPatternOverridesDefaultBinding( bindings ) ) {
+ const supportedAttributes = BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ];
+ const bindingsWithDefaults = {};
+ for ( const attributeName of supportedAttributes ) {
+ // If the block has mixed binding sources, retain any non pattern override bindings.
+ const bindingSource = bindings[ attributeName ]
+ ? bindings[ attributeName ]
+ : { source: PATTERN_OVERRIDES_SOURCE };
+ bindingsWithDefaults[ attributeName ] = bindingSource;
+ }
+
+ return bindingsWithDefaults;
+ }
+
+ return bindings;
+}
+
/**
* Contains utils to update the block `bindings` metadata.
*
diff --git a/packages/e2e-tests/plugins/block-bindings.php b/packages/e2e-tests/plugins/block-bindings.php
index b86673c2c523d0..1fd6d8468c77db 100644
--- a/packages/e2e-tests/plugins/block-bindings.php
+++ b/packages/e2e-tests/plugins/block-bindings.php
@@ -41,7 +41,11 @@ function gutenberg_test_block_bindings_registration() {
plugins_url( 'block-bindings/index.js', __FILE__ ),
array(
'wp-blocks',
- 'wp-private-apis',
+ 'wp-block-editor',
+ 'wp-components',
+ 'wp-compose',
+ 'wp-element',
+ 'wp-hooks',
),
filemtime( plugin_dir_path( __FILE__ ) . 'block-bindings/index.js' ),
true
diff --git a/packages/e2e-tests/plugins/block-bindings/index.js b/packages/e2e-tests/plugins/block-bindings/index.js
index 5c364257caed19..63c463e197fa8a 100644
--- a/packages/e2e-tests/plugins/block-bindings/index.js
+++ b/packages/e2e-tests/plugins/block-bindings/index.js
@@ -1,4 +1,9 @@
const { registerBlockBindingsSource } = wp.blocks;
+const { InspectorControls } = wp.blockEditor;
+const { PanelBody, TextControl } = wp.components;
+const { createHigherOrderComponent } = wp.compose;
+const { createElement: el, Fragment } = wp.element;
+const { addFilter } = wp.hooks;
const { fieldsList } = window.testingBindings || {};
const getValues = ( { bindings } ) => {
@@ -46,3 +51,43 @@ registerBlockBindingsSource( {
getValues,
canUserEditValue: () => true,
} );
+
+const withBlockBindingsInspectorControl = createHigherOrderComponent(
+ ( BlockEdit ) => {
+ return ( props ) => {
+ if ( ! props.attributes?.metadata?.bindings?.content ) {
+ return el( BlockEdit, props );
+ }
+
+ return el(
+ Fragment,
+ {},
+ el( BlockEdit, props ),
+ el(
+ InspectorControls,
+ {},
+ el(
+ PanelBody,
+ { title: 'Bindings' },
+ el( TextControl, {
+ __next40pxDefaultSize: true,
+ __nextHasNoMarginBottom: true,
+ label: 'Content',
+ value: props.attributes.content,
+ onChange: ( content ) =>
+ props.setAttributes( {
+ content,
+ } ),
+ } )
+ )
+ )
+ );
+ };
+ }
+);
+
+addFilter(
+ 'editor.BlockEdit',
+ 'testing/bindings-inspector-control',
+ withBlockBindingsInspectorControl
+);
diff --git a/test/e2e/specs/editor/various/block-bindings/post-meta.spec.js b/test/e2e/specs/editor/various/block-bindings/post-meta.spec.js
index 32334bfc777f2a..318707e22f098d 100644
--- a/test/e2e/specs/editor/various/block-bindings/post-meta.spec.js
+++ b/test/e2e/specs/editor/various/block-bindings/post-meta.spec.js
@@ -524,6 +524,47 @@ test.describe( 'Post Meta source', () => {
previewPage.locator( '#connected-paragraph' )
).toHaveText( 'new value' );
} );
+
+ test( 'should be possible to edit the value of the connected custom fields in the inspector control registered by the plugin', async ( {
+ editor,
+ page,
+ } ) => {
+ await editor.insertBlock( {
+ name: 'core/paragraph',
+ attributes: {
+ anchor: 'connected-paragraph',
+ content: 'fallback content',
+ metadata: {
+ bindings: {
+ content: {
+ source: 'core/post-meta',
+ args: {
+ key: 'movie_field',
+ },
+ },
+ },
+ },
+ },
+ } );
+ const contentInput = page.getByRole( 'textbox', {
+ name: 'Content',
+ } );
+ await expect( contentInput ).toHaveValue(
+ 'Movie field default value'
+ );
+ await contentInput.fill( 'new value' );
+ // Check that the paragraph content attribute didn't change.
+ const [ paragraphBlockObject ] = await editor.getBlocks();
+ expect( paragraphBlockObject.attributes.content ).toBe(
+ 'fallback content'
+ );
+ // Check the value of the custom field is being updated by visiting the frontend.
+ const previewPage = await editor.openPreviewPage();
+ await expect(
+ previewPage.locator( '#connected-paragraph' )
+ ).toHaveText( 'new value' );
+ } );
+
test( 'should be possible to connect movie fields through the attributes panel', async ( {
editor,
page,
From b659e9348c2055abca60c610a4c828954861a9aa Mon Sep 17 00:00:00 2001
From: James Koster
Date: Wed, 11 Dec 2024 09:34:05 +0000
Subject: [PATCH 007/163] Button: Increase font weight, add hover style to
`secondary` variant (#67325)
Co-authored-by: jameskoster
Co-authored-by: tyxla
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: jasmussen
Co-authored-by: matt-west
Co-authored-by: keoshi
Co-authored-by: jeffgolenski
Co-authored-by: elizaan36
---
packages/components/CHANGELOG.md | 1 +
packages/components/src/button/style.scss | 19 +++++++++----------
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index c4c47f43024007..c9f63514c8a608 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -21,6 +21,7 @@
- `MenuItem`: Increase height to 40px ([#67435](https://github.com/WordPress/gutenberg/pull/67435)).
- `MenuItemsChoice`: Increase option height to 40px ([#67435](https://github.com/WordPress/gutenberg/pull/67435)).
- `Navigation`: Fix active item hover color ([#67732](https://github.com/WordPress/gutenberg/pull/67732)).
+- `Button`: Adjust `secondary` variant hover style. ([#67325](https://github.com/WordPress/gutenberg/pull/67325)).
### Deprecations
diff --git a/packages/components/src/button/style.scss b/packages/components/src/button/style.scss
index 61455a54e26f6b..460aeaa2781cdf 100644
--- a/packages/components/src/button/style.scss
+++ b/packages/components/src/button/style.scss
@@ -9,7 +9,6 @@
display: inline-flex;
text-decoration: none;
font-family: inherit;
- font-weight: normal;
font-size: $default-font-size;
margin: 0;
border: 0;
@@ -139,8 +138,10 @@
color: $components-color-accent;
background: transparent;
- &:hover:not(:disabled, [aria-disabled="true"]) {
- box-shadow: inset 0 0 0 $border-width $components-color-accent-darker-10;
+ &:hover:not(:disabled, [aria-disabled="true"], .is-pressed) {
+ box-shadow: inset 0 0 0 $border-width $components-color-accent-darker-20;
+ color: $components-color-accent-darker-20;
+ background: color-mix(in srgb, $components-color-accent 4%, transparent);
}
&:disabled:not(:focus),
@@ -164,15 +165,12 @@
background: transparent;
&:hover:not(:disabled, [aria-disabled="true"]) {
- // TODO: Prepare for theming (https://github.com/WordPress/gutenberg/pull/45466/files#r1030872724)
- /* stylelint-disable-next-line declaration-property-value-disallowed-list -- Allow tertiary buttons to use colors from the user admin color scheme. */
- background: rgba(var(--wp-admin-theme-color--rgb), 0.04);
+ background: color-mix(in srgb, $components-color-accent 4%, transparent);
+ color: $components-color-accent-darker-20;
}
&:active:not(:disabled, [aria-disabled="true"]) {
- // TODO: Prepare for theming (https://github.com/WordPress/gutenberg/pull/45466/files#r1030872724)
- /* stylelint-disable-next-line declaration-property-value-disallowed-list -- Allow tertiary buttons to use colors from the user admin color scheme. */
- background: rgba(var(--wp-admin-theme-color--rgb), 0.08);
+ background: color-mix(in srgb, $components-color-accent 8%, transparent);
}
// Pull left if the tertiary button stands alone after a description, so as to vertically align with items above.
@@ -220,7 +218,8 @@
}
}
- &.is-tertiary {
+ &.is-tertiary,
+ &.is-secondary {
&:hover:not(:disabled, [aria-disabled="true"]) {
background: rgba($alert-red, 0.04);
}
From af34d1ef0bf3db2913c71fb1e9686c34a61f3ee2 Mon Sep 17 00:00:00 2001
From: Jorge Costa
Date: Wed, 11 Dec 2024 10:02:25 +0000
Subject: [PATCH 008/163] [Dataviews] Fix: Media item focus style is not
visible on Grid. (#67789)
Co-authored-by: jorgefilipecosta
Co-authored-by: oandregal
Co-authored-by: jameskoster
---
.../src/dataviews-layouts/grid/style.scss | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/packages/dataviews/src/dataviews-layouts/grid/style.scss b/packages/dataviews/src/dataviews-layouts/grid/style.scss
index e9fcb472dc3186..51db297b4025b7 100644
--- a/packages/dataviews/src/dataviews-layouts/grid/style.scss
+++ b/packages/dataviews/src/dataviews-layouts/grid/style.scss
@@ -30,11 +30,16 @@
.dataviews-view-grid__fields .dataviews-view-grid__field .dataviews-view-grid__field-value {
color: $gray-900;
}
-
- .dataviews-view-grid__media::after {
- background-color: rgba(var(--wp-admin-theme-color--rgb), 0.08);
- box-shadow: inset 0 0 0 $border-width var(--wp-admin-theme-color);
- }
+ }
+ &.is-selected .dataviews-view-grid__media::after,
+ .dataviews-view-grid__media:focus::after {
+ background-color: rgba(var(--wp-admin-theme-color--rgb), 0.08);
+ }
+ &.is-selected .dataviews-view-grid__media::after {
+ box-shadow: inset 0 0 0 $border-width var(--wp-admin-theme-color);
+ }
+ .dataviews-view-grid__media:focus::after {
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
}
}
From db42416a94822534ec6a44c46534c89d975d8042 Mon Sep 17 00:00:00 2001
From: Marin Atanasov <8436925+tyxla@users.noreply.github.com>
Date: Wed, 11 Dec 2024 12:19:10 +0200
Subject: [PATCH 009/163] Components: Unite inline Ariakit imports (#67818)
Co-authored-by: tyxla
Co-authored-by: Mamaduka
---
.../components/src/custom-select-control-v2/custom-select.tsx | 3 +--
packages/components/src/menu/index.tsx | 3 +--
packages/components/src/radio-group/radio.tsx | 3 +--
packages/components/src/tab-panel/index.tsx | 3 +--
.../toggle-group-control/as-radio-group.tsx | 3 +--
packages/components/src/tooltip/index.tsx | 3 +--
6 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/packages/components/src/custom-select-control-v2/custom-select.tsx b/packages/components/src/custom-select-control-v2/custom-select.tsx
index bb458abcc282ff..9c3baf182a399a 100644
--- a/packages/components/src/custom-select-control-v2/custom-select.tsx
+++ b/packages/components/src/custom-select-control-v2/custom-select.tsx
@@ -2,7 +2,6 @@
* External dependencies
*/
import * as Ariakit from '@ariakit/react';
-import { useStoreState } from '@ariakit/react';
/**
* WordPress dependencies
@@ -63,7 +62,7 @@ const CustomSelectButton = ( {
CustomSelectStore,
'onChange'
> ) => {
- const { value: currentValue } = useStoreState( store );
+ const { value: currentValue } = Ariakit.useStoreState( store );
const computedRenderSelectedValue = useMemo(
() => renderSelectedValue ?? defaultRenderSelectedValue,
diff --git a/packages/components/src/menu/index.tsx b/packages/components/src/menu/index.tsx
index 6f6e89b0a1c72b..9886f324823212 100644
--- a/packages/components/src/menu/index.tsx
+++ b/packages/components/src/menu/index.tsx
@@ -2,7 +2,6 @@
* External dependencies
*/
import * as Ariakit from '@ariakit/react';
-import { useStoreState } from '@ariakit/react';
/**
* WordPress dependencies
@@ -109,7 +108,7 @@ const UnconnectedMenu = (
// Extract the side from the applied placement — useful for animations.
// Using `currentPlacement` instead of `placement` to make sure that we
// use the final computed placement (including "flips" etc).
- const appliedPlacementSide = useStoreState(
+ const appliedPlacementSide = Ariakit.useStoreState(
menuStore,
'currentPlacement'
).split( '-' )[ 0 ];
diff --git a/packages/components/src/radio-group/radio.tsx b/packages/components/src/radio-group/radio.tsx
index 782a737b6ba28a..4c54e0694f4bde 100644
--- a/packages/components/src/radio-group/radio.tsx
+++ b/packages/components/src/radio-group/radio.tsx
@@ -7,7 +7,6 @@ import { forwardRef, useContext } from '@wordpress/element';
* External dependencies
*/
import * as Ariakit from '@ariakit/react';
-import { useStoreState } from '@ariakit/react';
/**
* Internal dependencies
@@ -28,7 +27,7 @@ function UnforwardedRadio(
) {
const { store, disabled } = useContext( RadioGroupContext );
- const selectedValue = useStoreState( store, 'value' );
+ const selectedValue = Ariakit.useStoreState( store, 'value' );
const isChecked = selectedValue !== undefined && selectedValue === value;
maybeWarnDeprecated36pxSize( {
diff --git a/packages/components/src/tab-panel/index.tsx b/packages/components/src/tab-panel/index.tsx
index be06b42fcd013f..ec4f33d875a381 100644
--- a/packages/components/src/tab-panel/index.tsx
+++ b/packages/components/src/tab-panel/index.tsx
@@ -2,7 +2,6 @@
* External dependencies
*/
import * as Ariakit from '@ariakit/react';
-import { useStoreState } from '@ariakit/react';
import clsx from 'clsx';
import type { ForwardedRef } from 'react';
@@ -125,7 +124,7 @@ const UnforwardedTabPanel = (
} );
const selectedTabName = extractTabName(
- useStoreState( tabStore, 'selectedId' )
+ Ariakit.useStoreState( tabStore, 'selectedId' )
);
const setTabStoreSelectedId = useCallback(
diff --git a/packages/components/src/toggle-group-control/toggle-group-control/as-radio-group.tsx b/packages/components/src/toggle-group-control/toggle-group-control/as-radio-group.tsx
index 0166728dbafba4..56fb5faca56385 100644
--- a/packages/components/src/toggle-group-control/toggle-group-control/as-radio-group.tsx
+++ b/packages/components/src/toggle-group-control/toggle-group-control/as-radio-group.tsx
@@ -3,7 +3,6 @@
*/
import type { ForwardedRef } from 'react';
import * as Ariakit from '@ariakit/react';
-import { useStoreState } from '@ariakit/react';
/**
* WordPress dependencies
@@ -70,7 +69,7 @@ function UnforwardedToggleGroupControlAsRadioGroup(
rtl: isRTL(),
} );
- const selectedValue = useStoreState( radio, 'value' );
+ const selectedValue = Ariakit.useStoreState( radio, 'value' );
const setValue = radio.setValue;
// Ensures that the active id is also reset after the value is "reset" by the consumer.
diff --git a/packages/components/src/tooltip/index.tsx b/packages/components/src/tooltip/index.tsx
index ce94daf67bfaba..b7184579ceca91 100644
--- a/packages/components/src/tooltip/index.tsx
+++ b/packages/components/src/tooltip/index.tsx
@@ -2,7 +2,6 @@
* External dependencies
*/
import * as Ariakit from '@ariakit/react';
-import { useStoreState } from '@ariakit/react';
import clsx from 'clsx';
/**
@@ -94,7 +93,7 @@ function UnforwardedTooltip(
placement: computedPlacement,
showTimeout: delay,
} );
- const mounted = useStoreState( tooltipStore, 'mounted' );
+ const mounted = Ariakit.useStoreState( tooltipStore, 'mounted' );
if ( isNestedInTooltip ) {
return isOnlyChild ? (
From b65823092b1a319ac533be48d33a09f5f9a239d1 Mon Sep 17 00:00:00 2001
From: Jorge Costa
Date: Wed, 11 Dec 2024 10:59:58 +0000
Subject: [PATCH 010/163] Fix: Templates and patterns are nesting two elements
with the button role (#67801)
Co-authored-by: jorgefilipecosta
Co-authored-by: oandregal
---
.../src/components/page-patterns/fields.js | 52 ++++---------------
.../src/components/page-patterns/style.scss | 22 --------
.../src/components/page-templates/fields.js | 22 +++-----
.../src/components/page-templates/style.scss | 18 -------
4 files changed, 17 insertions(+), 97 deletions(-)
diff --git a/packages/edit-site/src/components/page-patterns/fields.js b/packages/edit-site/src/components/page-patterns/fields.js
index f202664389f0ff..d884508e575068 100644
--- a/packages/edit-site/src/components/page-patterns/fields.js
+++ b/packages/edit-site/src/components/page-patterns/fields.js
@@ -15,50 +15,25 @@ import {
} from '@wordpress/block-editor';
import { Icon } from '@wordpress/icons';
import { parse } from '@wordpress/blocks';
-import { privateApis as routerPrivateApis } from '@wordpress/router';
/**
* Internal dependencies
*/
import {
- PATTERN_TYPES,
TEMPLATE_PART_POST_TYPE,
PATTERN_SYNC_TYPES,
OPERATOR_IS,
} from '../../utils/constants';
import { unlock } from '../../lock-unlock';
import { useAddedBy } from '../page-templates/hooks';
-import { defaultGetTitle } from './search-items';
-const { useLink } = unlock( routerPrivateApis );
const { useGlobalStyle } = unlock( blockEditorPrivateApis );
-function PreviewWrapper( { item, onClick, ariaDescribedBy, children } ) {
- return (
-
- { children }
-
- );
-}
-
function PreviewField( { item } ) {
const descriptionId = useId();
const description = item.description || item?.excerpt?.raw;
- const isUserPattern = item.type === PATTERN_TYPES.user;
const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
const [ backgroundColor ] = useGlobalStyle( 'color.background' );
- const { onClick } = useLink(
- `/${ item.type }/${
- isUserPattern || isTemplatePart ? item.id : item.name
- }?canvas=edit`
- );
const blocks = useMemo( () => {
return (
item.blocks ??
@@ -73,23 +48,18 @@ function PreviewField( { item } ) {
-
- { isEmpty && isTemplatePart && __( 'Empty template part' ) }
- { isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }
- { ! isEmpty && (
-
-
-
- ) }
-
+ { isEmpty && isTemplatePart && __( 'Empty template part' ) }
+ { isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }
+ { ! isEmpty && (
+
+
+
+ ) }
{ !! description && (
{ description }
diff --git a/packages/edit-site/src/components/page-patterns/style.scss b/packages/edit-site/src/components/page-patterns/style.scss
index 72d53c2a721afc..1ee6ceb94ddbfc 100644
--- a/packages/edit-site/src/components/page-patterns/style.scss
+++ b/packages/edit-site/src/components/page-patterns/style.scss
@@ -12,28 +12,6 @@
width: 96px;
flex-grow: 0;
}
-
- .page-patterns-preview-field__button {
- box-shadow: none;
- border: none;
- padding: 0;
- background-color: unset;
- box-sizing: border-box;
- cursor: pointer;
- overflow: hidden;
- height: 100%;
- border-radius: $grid-unit-05;
-
- &:focus-visible {
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
- // Windows High Contrast mode will show this outline, but not the box-shadow.
- outline: 2px solid transparent;
- }
-
- &[aria-disabled="true"] {
- cursor: default;
- }
- }
}
.edit-site-patterns__pattern-icon {
diff --git a/packages/edit-site/src/components/page-templates/fields.js b/packages/edit-site/src/components/page-templates/fields.js
index 88c20ff27ebbce..97b427690901a6 100644
--- a/packages/edit-site/src/components/page-templates/fields.js
+++ b/packages/edit-site/src/components/page-templates/fields.js
@@ -16,7 +16,6 @@ import {
privateApis as blockEditorPrivateApis,
} from '@wordpress/block-editor';
import { EditorProvider } from '@wordpress/editor';
-import { privateApis as routerPrivateApis } from '@wordpress/router';
/**
* Internal dependencies
@@ -25,7 +24,6 @@ import { useAddedBy } from './hooks';
import usePatternSettings from '../page-patterns/use-pattern-settings';
import { unlock } from '../../lock-unlock';
-const { useLink } = unlock( routerPrivateApis );
const { useGlobalStyle } = unlock( blockEditorPrivateApis );
function PreviewField( { item } ) {
@@ -34,7 +32,6 @@ function PreviewField( { item } ) {
const blocks = useMemo( () => {
return parse( item.content.raw );
}, [ item.content.raw ] );
- const { onClick } = useLink( `/${ item.type }/${ item.id }?canvas=edit` );
const isEmpty = ! blocks?.length;
// Wrap everything in a block editor provider to ensure 'styles' that are needed
@@ -50,19 +47,12 @@ function PreviewField( { item } ) {
className="page-templates-preview-field"
style={ { backgroundColor } }
>
-
- { isEmpty && __( 'Empty template' ) }
- { ! isEmpty && (
-
-
-
- ) }
-
+ { isEmpty && __( 'Empty template' ) }
+ { ! isEmpty && (
+
+
+
+ ) }
);
diff --git a/packages/edit-site/src/components/page-templates/style.scss b/packages/edit-site/src/components/page-templates/style.scss
index 4432cf6bec4923..29df1f5bd0803c 100644
--- a/packages/edit-site/src/components/page-templates/style.scss
+++ b/packages/edit-site/src/components/page-templates/style.scss
@@ -5,24 +5,6 @@
width: 100%;
border-radius: $radius-medium;
- .page-templates-preview-field__button {
- box-shadow: none;
- border: none;
- padding: 0;
- background-color: unset;
- box-sizing: border-box;
- cursor: pointer;
- overflow: hidden;
- height: 100%;
- border-radius: $radius-medium;
-
- &:focus-visible {
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
- // Windows High Contrast mode will show this outline, but not the box-shadow.
- outline: 2px solid transparent;
- }
- }
-
.dataviews-view-list & {
.block-editor-block-preview__container {
height: 120px;
From f2ba0fdb4c7714e516f7e9045ac53e59401d5b82 Mon Sep 17 00:00:00 2001
From: Birgit Pauli-Haack
Date: Wed, 11 Dec 2024 13:42:12 +0100
Subject: [PATCH 011/163] Add a Playground blueprint json to the
/assets/blueprints folder of Plugin Repo (#67742)
* create dirs, add blueprint.json
* updated landing page and php setting
* add step to set admin_color to modern
Co-authored-by: bph
Co-authored-by: brandonpayton
---
assets/blueprints/blueprint.json | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 assets/blueprints/blueprint.json
diff --git a/assets/blueprints/blueprint.json b/assets/blueprints/blueprint.json
new file mode 100644
index 00000000000000..d0626ffc15dd90
--- /dev/null
+++ b/assets/blueprints/blueprint.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "https://playground.wordpress.net/blueprint-schema.json",
+ "landingPage": "/wp-admin/post.php?post=1&action=edit",
+ "plugins": [ "gutenberg" ],
+ "login": true,
+ "features": {
+ "networking": true
+ },
+ "preferredVersions": {
+ "php": "latest",
+ "wp": "latest"
+ },
+ "steps": [
+ {
+ "step": "setSiteOptions",
+ "options": {
+ "blogname": "Testing Gutenberg"
+ }
+ },
+ {
+ "step": "updateUserMeta",
+ "meta": {
+ "admin_color": "modern"
+ },
+ "userId": 1
+ }
+ ]
+}
From 6470e097826f0ef15c90e821784b24c401b1903d Mon Sep 17 00:00:00 2001
From: Eshaan Dabasiya <76681468+im3dabasia@users.noreply.github.com>
Date: Wed, 11 Dec 2024 18:38:08 +0530
Subject: [PATCH 012/163] add: Added css classname to the itemgroup in
MainSidebarNavigationContent (#67825)
Co-authored-by: im3dabasia
Co-authored-by: jameskoster
Co-authored-by: t-hamano
---
.../src/components/sidebar-navigation-screen-main/index.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/edit-site/src/components/sidebar-navigation-screen-main/index.js b/packages/edit-site/src/components/sidebar-navigation-screen-main/index.js
index e205de25636975..abcc7183f6604e 100644
--- a/packages/edit-site/src/components/sidebar-navigation-screen-main/index.js
+++ b/packages/edit-site/src/components/sidebar-navigation-screen-main/index.js
@@ -19,7 +19,7 @@ import { store as editSiteStore } from '../../store';
export function MainSidebarNavigationContent( { isBlockBasedTheme = true } ) {
return (
-
+
{ isBlockBasedTheme && (
<>
Date: Wed, 11 Dec 2024 10:15:36 -0300
Subject: [PATCH 013/163] Stylebook: avoid double line in subcategory titles
(#67752)
* avoid double line in titles
* Revert "avoid double line in titles"
This reverts commit bb96d6ba7fbf65ff943065758d14c313b864a524.
* use only border top
Co-authored-by: matiasbenedetto
Co-authored-by: tellthemachines
Co-authored-by: jasmussen
---
packages/edit-site/src/components/style-book/constants.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/packages/edit-site/src/components/style-book/constants.ts b/packages/edit-site/src/components/style-book/constants.ts
index 401d532b98cbb7..ea99279fd9e655 100644
--- a/packages/edit-site/src/components/style-book/constants.ts
+++ b/packages/edit-site/src/components/style-book/constants.ts
@@ -239,7 +239,6 @@ export const STYLE_BOOK_IFRAME_STYLES = `
.edit-site-style-book__subcategory-title {
font-size: 16px;
margin-bottom: 40px;
- border-bottom: 1px solid #ddd;
padding-bottom: 8px;
}
From b66f9ff095f5b70f9af15a50af1772c0e201a5e6 Mon Sep 17 00:00:00 2001
From: Jon Surrell
Date: Wed, 11 Dec 2024 14:30:39 +0100
Subject: [PATCH 014/163] Add --glob argument to rimraf cli scripts (#67829)
After a rimraf upgrade, windows machines would error when clean scripts were called.
Rimraf now requires a --glob argument to handled glob patterns.
---
Co-authored-by: sirreal
Co-authored-by: t-hamano
---
package.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index dbf69043c58292..b4fd877c826905 100644
--- a/package.json
+++ b/package.json
@@ -180,8 +180,8 @@
"build:packages": "npm run --silent build:package-types && node ./bin/packages/build.js",
"postbuild:packages": " npm run --if-present --workspaces build:wp",
"build:plugin-zip": "bash ./bin/build-plugin-zip.sh",
- "clean:package-types": "tsc --build --clean && rimraf \"./packages/*/build-types\"",
- "clean:packages": "rimraf \"./packages/*/@(build|build-module|build-wp|build-style)\"",
+ "clean:package-types": "tsc --build --clean && rimraf --glob './packages/*/build-types'",
+ "clean:packages": "rimraf --glob './packages/*/@(build|build-module|build-wp|build-style)'",
"component-usage-stats": "node ./node_modules/react-scanner/bin/react-scanner -c ./react-scanner.config.js",
"dev": "cross-env NODE_ENV=development npm run build:packages && concurrently \"wp-scripts start\" \"npm run dev:packages\"",
"dev:packages": "cross-env NODE_ENV=development concurrently \"node ./bin/packages/watch.js\" \"tsc --build --watch\"",
@@ -193,7 +193,7 @@
"docs:gen": "node ./docs/tool/index.js",
"docs:theme-ref": "node ./bin/api-docs/gen-theme-reference.mjs",
"env": "wp-env",
- "fixtures:clean": "rimraf \"test/integration/fixtures/blocks/*.+(json|serialized.html)\"",
+ "fixtures:clean": "rimraf --glob 'test/integration/fixtures/blocks/*.+(json|serialized.html)'",
"fixtures:generate": "cross-env GENERATE_MISSING_FIXTURES=y npm run test:unit test/integration/full-content/ && npm run format test/integration/fixtures/blocks/*.json",
"fixtures:regenerate": "npm-run-all fixtures:clean fixtures:generate",
"format": "wp-scripts format",
From bb8a14772e83049e1d255f317c735d7936734629 Mon Sep 17 00:00:00 2001
From: Dave Smith
Date: Wed, 11 Dec 2024 15:36:55 +0000
Subject: [PATCH 015/163] Hide separators for currently dragged section in Zoom
Out (#67638)
* Hide separators for currently dragged section
* Add comment by way of explanation
Co-authored-by: getdave
Co-authored-by: richtabor
Co-authored-by: mikachan
---
.../block-list/zoom-out-separator.js | 30 +++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/packages/block-editor/src/components/block-list/zoom-out-separator.js b/packages/block-editor/src/components/block-list/zoom-out-separator.js
index f2e6d050141fb5..86191c1e4ce32c 100644
--- a/packages/block-editor/src/components/block-list/zoom-out-separator.js
+++ b/packages/block-editor/src/components/block-list/zoom-out-separator.js
@@ -33,6 +33,7 @@ export function ZoomOutSeparator( {
insertionPoint,
blockInsertionPointVisible,
blockInsertionPoint,
+ blocksBeingDragged,
} = useSelect( ( select ) => {
const {
getInsertionPoint,
@@ -40,6 +41,7 @@ export function ZoomOutSeparator( {
getSectionRootClientId,
isBlockInsertionPointVisible,
getBlockInsertionPoint,
+ getDraggedBlockClientIds,
} = unlock( select( blockEditorStore ) );
const root = getSectionRootClientId();
@@ -51,6 +53,7 @@ export function ZoomOutSeparator( {
insertionPoint: getInsertionPoint(),
blockInsertionPoint: getBlockInsertionPoint(),
blockInsertionPointVisible: isBlockInsertionPointVisible(),
+ blocksBeingDragged: getDraggedBlockClientIds(),
};
}, [] );
@@ -78,6 +81,7 @@ export function ZoomOutSeparator( {
insertionPoint &&
insertionPoint.hasOwnProperty( 'index' ) &&
clientId === sectionClientIds[ insertionPoint.index - 1 ];
+
// We want to show the zoom out separator in either of these conditions:
// 1. If the inserter has an insertion index set
// 2. We are dragging a pattern over an insertion point
@@ -97,6 +101,32 @@ export function ZoomOutSeparator( {
sectionClientIds[ blockInsertionPoint.index - 1 ] );
}
+ const blockBeingDraggedClientId = blocksBeingDragged[ 0 ];
+
+ const isCurrentBlockBeingDragged = blocksBeingDragged.includes( clientId );
+
+ const blockBeingDraggedIndex = sectionClientIds.indexOf(
+ blockBeingDraggedClientId
+ );
+ const blockBeingDraggedPreviousSiblingClientId =
+ blockBeingDraggedIndex > 0
+ ? sectionClientIds[ blockBeingDraggedIndex - 1 ]
+ : null;
+
+ const isCurrentBlockPreviousSiblingOfBlockBeingDragged =
+ blockBeingDraggedPreviousSiblingClientId === clientId;
+
+ // The separators are visually top/bottom of the block, but in actual fact
+ // the "top" separator is the "bottom" separator of the previous block.
+ // Therefore, this logic hides the separator if the current block is being dragged
+ // or if the current block is the previous sibling of the block being dragged.
+ if (
+ isCurrentBlockBeingDragged ||
+ isCurrentBlockPreviousSiblingOfBlockBeingDragged
+ ) {
+ isVisible = false;
+ }
+
return (
{ isVisible && (
From eb01c74959f6dc39d11a9060d15a4097932f49b1 Mon Sep 17 00:00:00 2001
From: Marin Atanasov <8436925+tyxla@users.noreply.github.com>
Date: Wed, 11 Dec 2024 17:56:49 +0200
Subject: [PATCH 016/163] Storybook: Upgrade to v8.0.x (#67574)
* Bump dependencies
* Patch storybook-source-link to import from @storybook/manager-api
* Add webpack5 compiler babel addon and enable react-docgen-typescript
* Use @storybook/icons in introduction docs
* Update storybook-source-link patch to use @storybook/icons
* Fix status icons
* Fix status icon styles
* Preview: ArgsTable => Controls
* Add explicit action spies
Co-authored-by: tyxla
Co-authored-by: ciampo
---
package-lock.json | 2784 +++++++----------
package.json | 26 +-
.../stories/index.story.tsx | 4 +
.../src/tab-panel/stories/index.story.tsx | 4 +
.../src/tabs/stories/index.story.tsx | 5 +
patches/storybook-source-link+2.0.9.patch | 55 +
storybook/main.js | 4 +
storybook/preview.js | 5 +-
storybook/sidebar.js | 6 +-
storybook/stories/docs/inline-icon.js | 10 +-
storybook/stories/docs/introduction.mdx | 3 +-
11 files changed, 1279 insertions(+), 1627 deletions(-)
create mode 100644 patches/storybook-source-link+2.0.9.patch
diff --git a/package-lock.json b/package-lock.json
index 2dde4727531b6f..ede83fa0e38c29 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -24,7 +24,7 @@
"@emotion/babel-plugin": "11.11.0",
"@emotion/jest": "11.7.1",
"@emotion/native": "11.0.0",
- "@geometricpanda/storybook-addon-badges": "2.0.1",
+ "@geometricpanda/storybook-addon-badges": "2.0.5",
"@octokit/rest": "16.26.0",
"@octokit/types": "6.34.0",
"@octokit/webhooks-types": "5.8.0",
@@ -33,16 +33,18 @@
"@react-native/babel-preset": "0.73.10",
"@react-native/metro-babel-transformer": "0.73.10",
"@react-native/metro-config": "0.73.4",
- "@storybook/addon-a11y": "7.6.15",
- "@storybook/addon-actions": "7.6.15",
- "@storybook/addon-controls": "7.6.15",
- "@storybook/addon-docs": "7.6.15",
- "@storybook/addon-toolbars": "7.6.15",
- "@storybook/addon-viewport": "7.6.15",
- "@storybook/react": "7.6.15",
- "@storybook/react-webpack5": "7.6.15",
- "@storybook/source-loader": "7.6.15",
- "@storybook/theming": "7.6.15",
+ "@storybook/addon-a11y": "8.0.10",
+ "@storybook/addon-actions": "8.0.10",
+ "@storybook/addon-controls": "8.0.10",
+ "@storybook/addon-docs": "8.0.10",
+ "@storybook/addon-toolbars": "8.0.10",
+ "@storybook/addon-viewport": "8.0.10",
+ "@storybook/addon-webpack5-compiler-babel": "3.0.3",
+ "@storybook/react": "8.0.10",
+ "@storybook/react-webpack5": "8.0.10",
+ "@storybook/source-loader": "8.0.10",
+ "@storybook/test": "8.0.10",
+ "@storybook/theming": "8.0.10",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "14.3.0",
"@testing-library/react-native": "12.4.3",
@@ -147,7 +149,7 @@
"snapshot-diff": "0.10.0",
"source-map-loader": "3.0.0",
"sprintf-js": "1.1.1",
- "storybook": "7.6.15",
+ "storybook": "8.0.10",
"storybook-source-link": "2.0.9",
"strip-json-comments": "5.0.0",
"style-loader": "3.2.1",
@@ -4652,9 +4654,9 @@
"integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
},
"node_modules/@emotion/use-insertion-effect-with-fallbacks": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
- "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz",
+ "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==",
"dev": true,
"peerDependencies": {
"react": ">=16.8.0"
@@ -5174,20 +5176,6 @@
"integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==",
"license": "MIT"
},
- "node_modules/@floating-ui/react-dom": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz",
- "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@floating-ui/dom": "^1.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- }
- },
"node_modules/@floating-ui/utils": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
@@ -5244,18 +5232,18 @@
}
},
"node_modules/@geometricpanda/storybook-addon-badges": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@geometricpanda/storybook-addon-badges/-/storybook-addon-badges-2.0.1.tgz",
- "integrity": "sha512-dCEK/xJewuFe1d+ndF0hQIAJRnUsV9q5kuDmp7zvO7fTd7cDz0X9Bjz0lNRn6n4Z9bL9/iFHKzJESDHFfs4ihQ==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@geometricpanda/storybook-addon-badges/-/storybook-addon-badges-2.0.5.tgz",
+ "integrity": "sha512-FH56ly6ZhltjyKQWxUKORP67BxhL9FMJRByS5lqKZpeP8J2MMsMXG7eQmFXKcZGQORfVQye+1uYYWXweDOiFTQ==",
"dev": true,
"peerDependencies": {
- "@storybook/blocks": "^7.0.0",
- "@storybook/components": "^7.0.0",
- "@storybook/core-events": "^7.0.0",
- "@storybook/manager-api": "^7.0.0",
- "@storybook/preview-api": "^7.0.0",
- "@storybook/theming": "^7.0.0",
- "@storybook/types": "^7.0.0",
+ "@storybook/blocks": "^8.3.0",
+ "@storybook/components": "^8.3.0",
+ "@storybook/core-events": "^8.3.0",
+ "@storybook/manager-api": "^8.3.0",
+ "@storybook/preview-api": "^8.3.0",
+ "@storybook/theming": "^8.3.0",
+ "@storybook/types": "^8.3.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
@@ -5877,9 +5865,9 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
@@ -5896,12 +5884,6 @@
"integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
"dev": true
},
- "node_modules/@juggle/resize-observer": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
- "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==",
- "dev": true
- },
"node_modules/@kwsites/file-exists": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
@@ -6938,19 +6920,19 @@
}
},
"node_modules/@mdx-js/react": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz",
- "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz",
+ "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==",
"dev": true,
"dependencies": {
- "@types/mdx": "^2.0.0",
- "@types/react": ">=16"
+ "@types/mdx": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
},
"peerDependencies": {
+ "@types/react": ">=16",
"react": ">=16"
}
},
@@ -6982,7 +6964,6 @@
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
"integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -8815,15 +8796,6 @@
"streamx": "^2.15.0"
}
},
- "node_modules/@radix-ui/number": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz",
- "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- }
- },
"node_modules/@radix-ui/primitive": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz",
@@ -8833,57 +8805,6 @@
"@babel/runtime": "^7.13.10"
}
},
- "node_modules/@radix-ui/react-arrow": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz",
- "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-collection": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz",
- "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-slot": "1.0.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-compose-refs": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz",
@@ -8920,53 +8841,6 @@
}
}
},
- "node_modules/@radix-ui/react-direction": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz",
- "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dismissable-layer": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz",
- "integrity": "sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-escape-keydown": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-focus-guards": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz",
@@ -8985,33 +8859,6 @@
}
}
},
- "node_modules/@radix-ui/react-focus-scope": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz",
- "integrity": "sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-id": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz",
@@ -9031,64 +8878,6 @@
}
}
},
- "node_modules/@radix-ui/react-popper": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz",
- "integrity": "sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@floating-ui/react-dom": "^2.0.0",
- "@radix-ui/react-arrow": "1.0.3",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-layout-effect": "1.0.1",
- "@radix-ui/react-use-rect": "1.0.1",
- "@radix-ui/react-use-size": "1.0.1",
- "@radix-ui/rect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-portal": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz",
- "integrity": "sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-primitive": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz",
@@ -9113,106 +8902,6 @@
}
}
},
- "node_modules/@radix-ui/react-roving-focus": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz",
- "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-collection": "1.0.3",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-select": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2.tgz",
- "integrity": "sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/number": "1.0.1",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-collection": "1.0.3",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-dismissable-layer": "1.0.4",
- "@radix-ui/react-focus-guards": "1.0.1",
- "@radix-ui/react-focus-scope": "1.0.3",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-popper": "1.1.2",
- "@radix-ui/react-portal": "1.0.3",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-slot": "1.0.2",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-controllable-state": "1.0.1",
- "@radix-ui/react-use-layout-effect": "1.0.1",
- "@radix-ui/react-use-previous": "1.0.1",
- "@radix-ui/react-visually-hidden": "1.0.3",
- "aria-hidden": "^1.1.1",
- "react-remove-scroll": "2.5.5"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-separator": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz",
- "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-slot": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz",
@@ -9232,92 +8921,6 @@
}
}
},
- "node_modules/@radix-ui/react-toggle": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz",
- "integrity": "sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-toggle-group": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz",
- "integrity": "sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-roving-focus": "1.0.4",
- "@radix-ui/react-toggle": "1.0.3",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-toolbar": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz",
- "integrity": "sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-roving-focus": "1.0.4",
- "@radix-ui/react-separator": "1.0.3",
- "@radix-ui/react-toggle-group": "1.0.4"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-use-callback-ref": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz",
@@ -9392,95 +8995,6 @@
}
}
},
- "node_modules/@radix-ui/react-use-previous": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz",
- "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-rect": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz",
- "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/rect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-size": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz",
- "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-layout-effect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz",
- "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/rect": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz",
- "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- }
- },
"node_modules/@react-native-clipboard/clipboard": {
"version": "1.11.2",
"resolved": "https://registry.npmjs.org/@react-native-clipboard/clipboard/-/clipboard-1.11.2.tgz",
@@ -11874,12 +11388,12 @@
}
},
"node_modules/@storybook/addon-a11y": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.6.15.tgz",
- "integrity": "sha512-8PxRMBJUSxNoceo2IYXFyZp3VU+/ONK/DsD0dj/fVrv7izFrS8aw2GWSsSMK8xAbEUpANXWMKGaSyvrRFVgsVQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.0.10.tgz",
+ "integrity": "sha512-ymeTRE1uWplifWUMc3tO5lLGn4buS/hUVWKRM11SqugmxRym55B4thCJU089HAEMY+V/imiCeOE63TT+DGsk8g==",
"dev": true,
"dependencies": {
- "@storybook/addon-highlight": "7.6.15",
+ "@storybook/addon-highlight": "8.0.10",
"axe-core": "^4.2.0"
},
"funding": {
@@ -11888,12 +11402,12 @@
}
},
"node_modules/@storybook/addon-actions": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.15.tgz",
- "integrity": "sha512-2Jfvbahe/tmq1iNnNxmcP0JnX0rqCuijjXXai9yMDV3koIMawn6t88MPVrdcso5ch/fxE45522nZqA3SZJbM4g==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.0.10.tgz",
+ "integrity": "sha512-IEuc30UAFl7Ws0GwaY/whjBnGaViVEVjmPc+MXUym2wwwJbnCbI+BKJxPoYi/I7QJb5aUNToAE6pl2pDda2g3Q==",
"dev": true,
"dependencies": {
- "@storybook/core-events": "7.6.15",
+ "@storybook/core-events": "8.0.10",
"@storybook/global": "^5.0.0",
"@types/uuid": "^9.0.1",
"dequal": "^2.0.2",
@@ -11912,12 +11426,12 @@
"dev": true
},
"node_modules/@storybook/addon-controls": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.15.tgz",
- "integrity": "sha512-HXcG/Lr4ri7WUFz14Y5lEBTA1XmKy0E/DepW88XVy6YNsTpERVWEBcvjKoLAU1smKrfhVto96hK2AVFL3A8EBQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.0.10.tgz",
+ "integrity": "sha512-MAUtIJGayNSsfn3VZ6SjQwpRkb4ky+10oVfos+xX9GQ5+7RCs+oYMuE4+aiQvvfXNdV8v0pUGPUPeUzqfJmhOA==",
"dev": true,
"dependencies": {
- "@storybook/blocks": "7.6.15",
+ "@storybook/blocks": "8.0.10",
"lodash": "^4.17.21",
"ts-dedent": "^2.0.0"
},
@@ -11927,38 +11441,35 @@
}
},
"node_modules/@storybook/addon-docs": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.15.tgz",
- "integrity": "sha512-UPODqO+mrYaKyTSAtfRslxOFgSP/v/5vfDx896pbNTC4Sf8xLytoudw4I14hzkHmRdXiOnd21FqXJfmF/Onsvw==",
- "dev": true,
- "dependencies": {
- "@jest/transform": "^29.3.1",
- "@mdx-js/react": "^2.1.5",
- "@storybook/blocks": "7.6.15",
- "@storybook/client-logger": "7.6.15",
- "@storybook/components": "7.6.15",
- "@storybook/csf-plugin": "7.6.15",
- "@storybook/csf-tools": "7.6.15",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.0.10.tgz",
+ "integrity": "sha512-y+Agoez/hXZHKUMIZHU96T5V1v0cs4ArSNfjqDg9DPYcyQ88ihJNb6ZabIgzmEaJF/NncCW+LofWeUtkTwalkw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@mdx-js/react": "^3.0.0",
+ "@storybook/blocks": "8.0.10",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/components": "8.0.10",
+ "@storybook/csf-plugin": "8.0.10",
+ "@storybook/csf-tools": "8.0.10",
"@storybook/global": "^5.0.0",
- "@storybook/mdx2-csf": "^1.0.0",
- "@storybook/node-logger": "7.6.15",
- "@storybook/postinstall": "7.6.15",
- "@storybook/preview-api": "7.6.15",
- "@storybook/react-dom-shim": "7.6.15",
- "@storybook/theming": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/node-logger": "8.0.10",
+ "@storybook/preview-api": "8.0.10",
+ "@storybook/react-dom-shim": "8.0.10",
+ "@storybook/theming": "8.0.10",
+ "@storybook/types": "8.0.10",
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"fs-extra": "^11.1.0",
- "remark-external-links": "^8.0.0",
- "remark-slug": "^6.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "rehype-external-links": "^3.0.0",
+ "rehype-slug": "^6.0.0",
"ts-dedent": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/@storybook/addon-docs/node_modules/fs-extra": {
@@ -11997,9 +11508,9 @@
}
},
"node_modules/@storybook/addon-highlight": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.15.tgz",
- "integrity": "sha512-ptidWZJJcEM83YsxCjf+m1q8Rr9sN8piJ4PJlM2vyc4MLZY4q6htb1JJFeq3ov1Iz6SY9KjKc/zOkWo4L54nxw==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.0.10.tgz",
+ "integrity": "sha512-40GB82t1e2LCCjqXcC6Z5lq1yIpA1+Yl5E2tKeggOVwg5HHAX02ESNDdBaIOlCqMkU3WKzjGPurDNOLUAbsV2g==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -12010,9 +11521,9 @@
}
},
"node_modules/@storybook/addon-toolbars": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.15.tgz",
- "integrity": "sha512-QougKS2eABB5Jd332i9tBpKgh2lN4aaqXkvmVC5egT5dOuJ9IeuZbGwiALef/uf1f3IuyUP41So9l2dI4u19aw==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.0.10.tgz",
+ "integrity": "sha512-67HP6mTJU/gjRju01Z5HjeqoRiJMDlrMvMvjGBg7w5+tPNtjYqdelfe2+kcfU+Hf6dfcuqaBDwaUUGSv+RYtRQ==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -12020,9 +11531,9 @@
}
},
"node_modules/@storybook/addon-viewport": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.15.tgz",
- "integrity": "sha512-0esg0+onJftU2prD3n/sbxBTrTOIGQnZhbrKPP+/S26dVHuYaR/65XdwpRgXNY5PHK2yjU78HxiJP+Kyu75ntw==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.0.10.tgz",
+ "integrity": "sha512-NJ88Nd/tXreHLyLeF3VP+b8Fu2KtUuJ0L4JYpEMmcdaejGARTrJJOU+pcZBiUqEHFeXQ8rDY8DKXhUJZQFQ1Wg==",
"dev": true,
"dependencies": {
"memoizerific": "^1.11.3"
@@ -12032,28 +11543,42 @@
"url": "https://opencollective.com/storybook"
}
},
+ "node_modules/@storybook/addon-webpack5-compiler-babel": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-babel/-/addon-webpack5-compiler-babel-3.0.3.tgz",
+ "integrity": "sha512-rVQTTw+oxJltbVKaejIWSHwVKOBJs3au21f/pYXhV0aiNgNhxEa3vr79t/j0j8ox8uJtzM8XYOb7FlkvGfHlwQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.23.7",
+ "babel-loader": "^9.1.3"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@storybook/blocks": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.15.tgz",
- "integrity": "sha512-ODP7AVh2iIGblI5WKGokWSHbp9YQHc+Uce7JCGcnDbNavoy64Z6R6G+wXzF5jfl7xQlbhQ8yQCuSSL4GNdYTeA==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.0.10.tgz",
+ "integrity": "sha512-LOaxvcO2d4dT4YoWlQ0bq/c8qA3aHoqtyuvBjwbVn+359bjMtgj/91YuP9Y2+ggZZ4p+ttgvk39PcmJlNXlJsw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "7.6.15",
- "@storybook/client-logger": "7.6.15",
- "@storybook/components": "7.6.15",
- "@storybook/core-events": "7.6.15",
- "@storybook/csf": "^0.1.2",
- "@storybook/docs-tools": "7.6.15",
+ "@storybook/channels": "8.0.10",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/components": "8.0.10",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/csf": "^0.1.4",
+ "@storybook/docs-tools": "8.0.10",
"@storybook/global": "^5.0.0",
- "@storybook/manager-api": "7.6.15",
- "@storybook/preview-api": "7.6.15",
- "@storybook/theming": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/icons": "^1.2.5",
+ "@storybook/manager-api": "8.0.10",
+ "@storybook/preview-api": "8.0.10",
+ "@storybook/theming": "8.0.10",
+ "@storybook/types": "8.0.10",
"@types/lodash": "^4.14.167",
"color-convert": "^2.0.1",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
- "markdown-to-jsx": "^7.1.8",
+ "markdown-to-jsx": "7.3.2",
"memoizerific": "^1.11.3",
"polished": "^4.2.2",
"react-colorful": "^5.1.2",
@@ -12069,6 +11594,14 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
}
},
"node_modules/@storybook/blocks/node_modules/color-convert": {
@@ -12090,24 +11623,22 @@
"dev": true
},
"node_modules/@storybook/builder-manager": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.15.tgz",
- "integrity": "sha512-vfpfCywiasyP7vtbgLJhjssBEwUjZhBsRsubDAzumgOochPiKKPNwsSc5NU/4ZIGaC5zRO26kUaUqFIbJdTEUQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-8.0.10.tgz",
+ "integrity": "sha512-lo57jeeYuYCKYrmGOdLg25rMyiGYSTwJ+zYsQ3RvClVICjP6X0I1RCKAJDzkI0BixH6s1+w5ynD6X3PtDnhUuw==",
"dev": true,
"dependencies": {
"@fal-works/esbuild-plugin-global-externals": "^2.1.2",
- "@storybook/core-common": "7.6.15",
- "@storybook/manager": "7.6.15",
- "@storybook/node-logger": "7.6.15",
+ "@storybook/core-common": "8.0.10",
+ "@storybook/manager": "8.0.10",
+ "@storybook/node-logger": "8.0.10",
"@types/ejs": "^3.1.1",
- "@types/find-cache-dir": "^3.2.1",
"@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10",
"browser-assert": "^1.2.1",
"ejs": "^3.1.8",
- "esbuild": "^0.18.0",
+ "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0",
"esbuild-plugin-alias": "^0.2.1",
"express": "^4.17.3",
- "find-cache-dir": "^3.0.0",
"fs-extra": "^11.1.0",
"process": "^0.11.10",
"util": "^0.12.4"
@@ -12117,36 +11648,6 @@
"url": "https://opencollective.com/storybook"
}
},
- "node_modules/@storybook/builder-manager/node_modules/find-cache-dir": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
- "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
- "dev": true,
- "dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@storybook/builder-manager/node_modules/fs-extra": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
@@ -12173,99 +11674,6 @@
"graceful-fs": "^4.1.6"
}
},
- "node_modules/@storybook/builder-manager/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/@storybook/builder-manager/node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
@@ -12289,24 +11697,21 @@
}
},
"node_modules/@storybook/builder-webpack5": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.6.15.tgz",
- "integrity": "sha512-HF+TSK/eU2ld8uQ8VWgcAIzOQ2hjnEkzup363vGZkYUfsHsVbjMpZgf+foDjI4LZNfQ/RjcVEZxqJqIbpM0Sjg==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.23.2",
- "@storybook/channels": "7.6.15",
- "@storybook/client-logger": "7.6.15",
- "@storybook/core-common": "7.6.15",
- "@storybook/core-events": "7.6.15",
- "@storybook/core-webpack": "7.6.15",
- "@storybook/node-logger": "7.6.15",
- "@storybook/preview": "7.6.15",
- "@storybook/preview-api": "7.6.15",
- "@swc/core": "^1.3.82",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.0.10.tgz",
+ "integrity": "sha512-FrETNEPu9UcZD8yRIQhszcmdMMS73yXRbZFldeZzJ2b8lKNJG+tmqRwh5d5xEMzMrENYkDY+sXheOLSjKfvq9g==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "8.0.10",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/core-common": "8.0.10",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/core-webpack": "8.0.10",
+ "@storybook/node-logger": "8.0.10",
+ "@storybook/preview": "8.0.10",
+ "@storybook/preview-api": "8.0.10",
"@types/node": "^18.0.0",
"@types/semver": "^7.3.4",
- "babel-loader": "^9.0.0",
"browser-assert": "^1.2.1",
"case-sensitive-paths-webpack-plugin": "^2.4.0",
"cjs-module-lexer": "^1.2.3",
@@ -12322,14 +11727,13 @@
"process": "^0.11.10",
"semver": "^7.3.7",
"style-loader": "^3.3.1",
- "swc-loader": "^0.2.3",
"terser-webpack-plugin": "^5.3.1",
"ts-dedent": "^2.0.0",
"url": "^0.11.0",
"util": "^0.12.4",
"util-deprecate": "^1.0.2",
"webpack": "5",
- "webpack-dev-middleware": "^6.1.1",
+ "webpack-dev-middleware": "^6.1.2",
"webpack-hot-middleware": "^2.25.1",
"webpack-virtual-modules": "^0.5.0"
},
@@ -12455,15 +11859,14 @@
}
},
"node_modules/@storybook/channels": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.15.tgz",
- "integrity": "sha512-UPDYRzGkygYFa8QUpEiumWrvZm4u4RKVzgiBt9C4RmHORqkkZzL9LXhaZJp2SmIz1ND5gx6KR5ze8ZnAdwxxoQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.0.10.tgz",
+ "integrity": "sha512-3JLxfD7czlx31dAGvAYJ4J4BNE/Y2+hhj/dsV3xlQTHKVpnWknaoeYEC1a6YScyfsH6W+XmP2rzZKzH4EkLSGQ==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "7.6.15",
- "@storybook/core-events": "7.6.15",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/core-events": "8.0.10",
"@storybook/global": "^5.0.0",
- "qs": "^6.10.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
},
@@ -12473,23 +11876,22 @@
}
},
"node_modules/@storybook/cli": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.15.tgz",
- "integrity": "sha512-2QRqCyVGDSkraHxX2JPYkkFccbu5Uo+JYFaFJo4vmMXzDurjWON+Ga2B8FCTd4A8P4C02Ca/79jgQoyBB3xoew==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.0.10.tgz",
+ "integrity": "sha512-KUZEO2lyvOS2sRJEFXovt6+5b65iWsh7F8e8S1cM20fCM1rZAlWtwmoxmDVXDmyEp0wTrq4FrRxKnbo9UO518w==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.23.2",
- "@babel/preset-env": "^7.23.2",
+ "@babel/core": "^7.23.0",
"@babel/types": "^7.23.0",
"@ndelangen/get-tarball": "^3.0.7",
- "@storybook/codemod": "7.6.15",
- "@storybook/core-common": "7.6.15",
- "@storybook/core-events": "7.6.15",
- "@storybook/core-server": "7.6.15",
- "@storybook/csf-tools": "7.6.15",
- "@storybook/node-logger": "7.6.15",
- "@storybook/telemetry": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/codemod": "8.0.10",
+ "@storybook/core-common": "8.0.10",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/core-server": "8.0.10",
+ "@storybook/csf-tools": "8.0.10",
+ "@storybook/node-logger": "8.0.10",
+ "@storybook/telemetry": "8.0.10",
+ "@storybook/types": "8.0.10",
"@types/semver": "^7.3.4",
"@yarnpkg/fslib": "2.10.3",
"@yarnpkg/libzip": "2.3.0",
@@ -12499,25 +11901,22 @@
"detect-indent": "^6.1.0",
"envinfo": "^7.7.3",
"execa": "^5.0.0",
- "express": "^4.17.3",
"find-up": "^5.0.0",
"fs-extra": "^11.1.0",
"get-npm-tarball-url": "^2.0.3",
- "get-port": "^5.1.1",
"giget": "^1.0.0",
"globby": "^11.0.2",
"jscodeshift": "^0.15.1",
"leven": "^3.1.0",
"ora": "^5.4.1",
- "prettier": "^2.8.0",
+ "prettier": "^3.1.1",
"prompts": "^2.4.0",
- "puppeteer-core": "^2.1.1",
"read-pkg-up": "^7.0.1",
"semver": "^7.3.7",
"strip-json-comments": "^3.0.1",
"tempy": "^1.0.1",
- "ts-dedent": "^2.0.0",
- "util-deprecate": "^1.0.2"
+ "tiny-invariant": "^1.3.1",
+ "ts-dedent": "^2.0.0"
},
"bin": {
"getstorybook": "bin/index.js",
@@ -12528,15 +11927,6 @@
"url": "https://opencollective.com/storybook"
}
},
- "node_modules/@storybook/cli/node_modules/agent-base": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
- "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==",
- "dev": true,
- "engines": {
- "node": ">= 6.0.0"
- }
- },
"node_modules/@storybook/cli/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -12648,26 +12038,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@storybook/cli/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/@storybook/cli/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -12677,19 +12047,6 @@
"node": ">=8"
}
},
- "node_modules/@storybook/cli/node_modules/https-proxy-agent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz",
- "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==",
- "dev": true,
- "dependencies": {
- "agent-base": "5",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
"node_modules/@storybook/cli/node_modules/human-signals": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
@@ -12777,18 +12134,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@storybook/cli/node_modules/mime": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
- "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
- "dev": true,
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
"node_modules/@storybook/cli/node_modules/mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
@@ -12882,47 +12227,25 @@
}
},
"node_modules/@storybook/cli/node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
+ "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
"dev": true,
"bin": {
- "prettier": "bin-prettier.js"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/@storybook/cli/node_modules/puppeteer-core": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-2.1.1.tgz",
- "integrity": "sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==",
- "dev": true,
- "dependencies": {
- "@types/mime-types": "^2.1.0",
- "debug": "^4.1.0",
- "extract-zip": "^1.6.6",
- "https-proxy-agent": "^4.0.0",
- "mime": "^2.0.3",
- "mime-types": "^2.1.25",
- "progress": "^2.0.1",
- "proxy-from-env": "^1.0.0",
- "rimraf": "^2.6.1",
- "ws": "^6.1.0"
- },
- "engines": {
- "node": ">=8.16.0"
- }
- },
"node_modules/@storybook/cli/node_modules/recast": {
"version": "0.23.9",
"resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz",
"integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ast-types": "^0.16.1",
"esprima": "~4.0.0",
@@ -12947,18 +12270,6 @@
"node": ">=8"
}
},
- "node_modules/@storybook/cli/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
"node_modules/@storybook/cli/node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -12992,20 +12303,10 @@
"node": ">= 10.0.0"
}
},
- "node_modules/@storybook/cli/node_modules/ws": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz",
- "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "async-limiter": "~1.0.0"
- }
- },
"node_modules/@storybook/client-logger": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz",
- "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.0.10.tgz",
+ "integrity": "sha512-u38SbZNAunZzxZNHMJb9jkUwFkLyWxmvp4xtiRM3u9sMUShXoTnzbw1yKrxs+kYJjg+58UQPZ1JhEBRcHt5Oww==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -13016,25 +12317,26 @@
}
},
"node_modules/@storybook/codemod": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.15.tgz",
- "integrity": "sha512-NiEbTLCdacj6TMxC7G49IImXeMzkG8wpPr8Ayxm9HeG6q5UkiF5/DiZdqbJm2zaosOsOKWwvXg1t6Pq6Nivytg==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.0.10.tgz",
+ "integrity": "sha512-t45jKGs/eyR/nKVX6QgRtMZSAjJo5aXWWk3B24xVbW6ywr0jt1LC100FkHG4Af8cApIfh8uUmS9X05hMG5zGGA==",
"dev": true,
"dependencies": {
"@babel/core": "^7.23.2",
"@babel/preset-env": "^7.23.2",
"@babel/types": "^7.23.0",
- "@storybook/csf": "^0.1.2",
- "@storybook/csf-tools": "7.6.15",
- "@storybook/node-logger": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/csf": "^0.1.4",
+ "@storybook/csf-tools": "8.0.10",
+ "@storybook/node-logger": "8.0.10",
+ "@storybook/types": "8.0.10",
"@types/cross-spawn": "^6.0.2",
"cross-spawn": "^7.0.3",
"globby": "^11.0.2",
"jscodeshift": "^0.15.1",
"lodash": "^4.17.21",
- "prettier": "^2.8.0",
- "recast": "^0.23.1"
+ "prettier": "^3.1.1",
+ "recast": "^0.23.5",
+ "tiny-invariant": "^1.3.1"
},
"funding": {
"type": "opencollective",
@@ -13106,15 +12408,15 @@
}
},
"node_modules/@storybook/codemod/node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
+ "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
"dev": true,
"bin": {
- "prettier": "bin-prettier.js"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
@@ -13125,7 +12427,6 @@
"resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz",
"integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ast-types": "^0.16.1",
"esprima": "~4.0.0",
@@ -13150,20 +12451,19 @@
}
},
"node_modules/@storybook/components": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.15.tgz",
- "integrity": "sha512-xD+maP7+C9HeZXi2vJ+uK9hXN4S4spP4uDj9pyZ9yViKb+ztEO6WpovUMT8WRQ0mMegWyLXkx3zqu43hZvXM1g==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.0.10.tgz",
+ "integrity": "sha512-eo+oDDcm35YBB3dtDYDfcjJypNVPmRty85VWpAOBsJXpwp/fgU8csx0DM3KmhrQ4cWLf2WzcFowJwI1w+J88Sw==",
"dev": true,
"dependencies": {
- "@radix-ui/react-select": "^1.2.2",
- "@radix-ui/react-toolbar": "^1.0.4",
- "@storybook/client-logger": "7.6.15",
- "@storybook/csf": "^0.1.2",
+ "@radix-ui/react-slot": "^1.0.2",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/csf": "^0.1.4",
"@storybook/global": "^5.0.0",
- "@storybook/theming": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/icons": "^1.2.5",
+ "@storybook/theming": "8.0.10",
+ "@storybook/types": "8.0.10",
"memoizerific": "^1.11.3",
- "use-resize-observer": "^9.1.0",
"util-deprecate": "^1.0.2"
},
"funding": {
@@ -13175,36 +12475,23 @@
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/@storybook/core-client": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.15.tgz",
- "integrity": "sha512-jwWol+zo+ItKBzPm9i80bEL6seHMsV0wKSaViVMQ4TqHtEbNeFE8sFEc2NTr18VNBnQOdlQPnEWmdboXBUrGcA==",
- "dev": true,
- "dependencies": {
- "@storybook/client-logger": "7.6.15",
- "@storybook/preview-api": "7.6.15"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
"node_modules/@storybook/core-common": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.15.tgz",
- "integrity": "sha512-VGmcLJ5U1r1s8/YnLbKcyB4GnNL+/sZIPqwlcSKzDXO76HoVFv1kywf7PbASote7P3gdhLSxBdg95LH2bdIbmw==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.0.10.tgz",
+ "integrity": "sha512-hsFlPieputaDQoxstnPa3pykTc4bUwEDgCHf8U43+/Z7qmLOQ9fpG+2CFW930rsCRghYpPreOvsmhY7lsGKWLQ==",
"dev": true,
"dependencies": {
- "@storybook/core-events": "7.6.15",
- "@storybook/node-logger": "7.6.15",
- "@storybook/types": "7.6.15",
- "@types/find-cache-dir": "^3.2.1",
- "@types/node": "^18.0.0",
- "@types/node-fetch": "^2.6.4",
- "@types/pretty-hrtime": "^1.0.0",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/csf-tools": "8.0.10",
+ "@storybook/node-logger": "8.0.10",
+ "@storybook/types": "8.0.10",
+ "@yarnpkg/fslib": "2.10.3",
+ "@yarnpkg/libzip": "2.3.0",
"chalk": "^4.1.0",
- "esbuild": "^0.18.0",
+ "cross-spawn": "^7.0.3",
+ "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0",
"esbuild-register": "^3.5.0",
+ "execa": "^5.0.0",
"file-system-cache": "2.3.0",
"find-cache-dir": "^3.0.0",
"find-up": "^5.0.0",
@@ -13217,7 +12504,11 @@
"pkg-dir": "^5.0.0",
"pretty-hrtime": "^1.0.3",
"resolve-from": "^5.0.0",
- "ts-dedent": "^2.0.0"
+ "semver": "^7.3.7",
+ "tempy": "^1.0.1",
+ "tiny-invariant": "^1.3.1",
+ "ts-dedent": "^2.0.0",
+ "util": "^0.12.4"
},
"funding": {
"type": "opencollective",
@@ -13233,6 +12524,29 @@
"balanced-match": "^1.0.0"
}
},
+ "node_modules/@storybook/core-common/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
"node_modules/@storybook/core-common/node_modules/find-cache-dir": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
@@ -13344,12 +12658,23 @@
"node": ">=14.14"
}
},
+ "node_modules/@storybook/core-common/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@storybook/core-common/node_modules/glob": {
"version": "10.4.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dev": true,
- "license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
@@ -13365,6 +12690,27 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/@storybook/core-common/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/@storybook/core-common/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@storybook/core-common/node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -13407,12 +12753,29 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@storybook/core-common/node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@storybook/core-common/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@storybook/core-common/node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
- "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -13428,11 +12791,37 @@
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
- "license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/@storybook/core-common/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/core-common/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@storybook/core-common/node_modules/p-locate": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
@@ -13466,6 +12855,15 @@
"node": ">=8"
}
},
+ "node_modules/@storybook/core-common/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/core-common/node_modules/pkg-dir": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
@@ -13487,15 +12885,6 @@
"node": ">=8"
}
},
- "node_modules/@storybook/core-common/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/@storybook/core-common/node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
@@ -13505,10 +12894,23 @@
"node": ">= 10.0.0"
}
},
+ "node_modules/@storybook/core-common/node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
"node_modules/@storybook/core-events": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz",
- "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.0.10.tgz",
+ "integrity": "sha512-TuHPS6p5ZNr4vp4butLb4R98aFx0NRYCI/7VPhJEUH5rPiqNzE3PZd8DC8rnVxavsJ+jO1/y+egNKXRYkEcoPQ==",
"dev": true,
"dependencies": {
"ts-dedent": "^2.0.0"
@@ -13519,26 +12921,28 @@
}
},
"node_modules/@storybook/core-server": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.15.tgz",
- "integrity": "sha512-iIlxEAkrmKTSA3iGNqt/4QG7hf5suxBGYIB3DZAOfBo8EdZogMYaEmuCm5dbuaJr0mcVwlqwdhQiWb1VsR/NhA==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.0.10.tgz",
+ "integrity": "sha512-HYDw2QFBxg1X/d6g0rUhirOB5Jq6g90HBnyrZzxKoqKWJCNsCADSgM+h9HgtUw0jA97qBpIqmNO9n3mXFPWU/Q==",
"dev": true,
"dependencies": {
"@aw-web-design/x-default-browser": "1.4.126",
+ "@babel/core": "^7.23.9",
"@discoveryjs/json-ext": "^0.5.3",
- "@storybook/builder-manager": "7.6.15",
- "@storybook/channels": "7.6.15",
- "@storybook/core-common": "7.6.15",
- "@storybook/core-events": "7.6.15",
- "@storybook/csf": "^0.1.2",
- "@storybook/csf-tools": "7.6.15",
- "@storybook/docs-mdx": "^0.1.0",
+ "@storybook/builder-manager": "8.0.10",
+ "@storybook/channels": "8.0.10",
+ "@storybook/core-common": "8.0.10",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/csf": "^0.1.4",
+ "@storybook/csf-tools": "8.0.10",
+ "@storybook/docs-mdx": "3.0.0",
"@storybook/global": "^5.0.0",
- "@storybook/manager": "7.6.15",
- "@storybook/node-logger": "7.6.15",
- "@storybook/preview-api": "7.6.15",
- "@storybook/telemetry": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/manager": "8.0.10",
+ "@storybook/manager-api": "8.0.10",
+ "@storybook/node-logger": "8.0.10",
+ "@storybook/preview-api": "8.0.10",
+ "@storybook/telemetry": "8.0.10",
+ "@storybook/types": "8.0.10",
"@types/detect-port": "^1.3.0",
"@types/node": "^18.0.0",
"@types/pretty-hrtime": "^1.0.0",
@@ -13551,7 +12955,7 @@
"express": "^4.17.3",
"fs-extra": "^11.1.0",
"globby": "^11.0.2",
- "ip": "^2.0.0",
+ "ip": "^2.0.1",
"lodash": "^4.17.21",
"open": "^8.4.0",
"pretty-hrtime": "^1.0.3",
@@ -13659,7 +13063,6 @@
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
"integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -13673,7 +13076,6 @@
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
@@ -13691,14 +13093,14 @@
}
},
"node_modules/@storybook/core-webpack": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.6.15.tgz",
- "integrity": "sha512-6Qk/kc7OKcy4jNowQFz6TFLWM2NYeLoJ73dIbFnN2o8DYS5WwmQLZhZ+MRvr92M+w1nlnc268kaqooYmAj8Mnw==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.0.10.tgz",
+ "integrity": "sha512-nfhdhulKk0BTQA2e5cuoEpu+mdZawMr7DNnpc29gkTl8sRsED+4TR5HTjWUVCRqMb/a1UNbY4QVe7ozM/rVNdQ==",
"dev": true,
"dependencies": {
- "@storybook/core-common": "7.6.15",
- "@storybook/node-logger": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/core-common": "8.0.10",
+ "@storybook/node-logger": "8.0.10",
+ "@storybook/types": "8.0.10",
"@types/node": "^18.0.0",
"ts-dedent": "^2.0.0"
},
@@ -13718,12 +13120,12 @@
}
},
"node_modules/@storybook/csf-plugin": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.15.tgz",
- "integrity": "sha512-5Pm2B8XKNdG3fHyItWKbWnXHSRDFSvetlML+sMWGWYIjwOsnvPqt+gAvLksWhv/uJgDujGxNcPEh+/Y5C8ZAjQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.0.10.tgz",
+ "integrity": "sha512-0EsyEx/06sCjI8sn40r7cABtBU1vUKPMPD+S5mJiZymm73BgdARj0qZOlLoK2LP+t2pcaB/Cn7KX/uyhhv7M2g==",
"dev": true,
"dependencies": {
- "@storybook/csf-tools": "7.6.15",
+ "@storybook/csf-tools": "8.0.10",
"unplugin": "^1.3.1"
},
"funding": {
@@ -13732,19 +13134,19 @@
}
},
"node_modules/@storybook/csf-tools": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.15.tgz",
- "integrity": "sha512-8iKgg2cmbFTpVhRRJOqouhPcEh0c8ywabG4S8ICZvnJooSXUI9mD9p3tYCS7MYuSiHj0epa1Kkn9DtXJRo9o6g==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.0.10.tgz",
+ "integrity": "sha512-xUc6fVIKoCujf/7JZhkYjrVXeNsTSoDrZFNmqLEmtfktJVqYdXY4LuSAtlBmAIyETi09ULTuuVexrcKFwjzuBA==",
"dev": true,
"dependencies": {
"@babel/generator": "^7.23.0",
"@babel/parser": "^7.23.0",
"@babel/traverse": "^7.23.2",
"@babel/types": "^7.23.0",
- "@storybook/csf": "^0.1.2",
- "@storybook/types": "7.6.15",
+ "@storybook/csf": "^0.1.4",
+ "@storybook/types": "8.0.10",
"fs-extra": "^11.1.0",
- "recast": "^0.23.1",
+ "recast": "^0.23.5",
"ts-dedent": "^2.0.0"
},
"funding": {
@@ -13783,7 +13185,6 @@
"resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz",
"integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ast-types": "^0.16.1",
"esprima": "~4.0.0",
@@ -13817,20 +13218,21 @@
}
},
"node_modules/@storybook/docs-mdx": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz",
- "integrity": "sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-3.0.0.tgz",
+ "integrity": "sha512-NmiGXl2HU33zpwTv1XORe9XG9H+dRUC1Jl11u92L4xr062pZtrShLmD4VKIsOQujxhhOrbxpwhNOt+6TdhyIdQ==",
"dev": true
},
"node_modules/@storybook/docs-tools": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.15.tgz",
- "integrity": "sha512-npZEaI9Wpn9uJcRXFElqyiRw8bSxt95mLywPiEEGMT2kE5FfXM8d5Uj5O64kzoXdRI9IhRPEEZZidOtA/UInfQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.0.10.tgz",
+ "integrity": "sha512-rg9KS81vEh13VMr4mAgs+7L4kYqoRtG7kVfV1WHxzJxjR3wYcVR0kP9gPTWV4Xha/TA3onHu9sxKxMTWha0urQ==",
"dev": true,
"dependencies": {
- "@storybook/core-common": "7.6.15",
- "@storybook/preview-api": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/core-common": "8.0.10",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/preview-api": "8.0.10",
+ "@storybook/types": "8.0.10",
"@types/doctrine": "^0.0.3",
"assert": "^2.1.0",
"doctrine": "^3.0.0",
@@ -13885,10 +13287,55 @@
"integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==",
"dev": true
},
+ "node_modules/@storybook/icons": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.3.0.tgz",
+ "integrity": "sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+ }
+ },
+ "node_modules/@storybook/instrumenter": {
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.0.10.tgz",
+ "integrity": "sha512-6IYjWeQFA5x68xRoW5dU4yAc1Hwq1ZBkZbXVgJbr5LJw5x+y8eKdZzIaOmSsSKOI96R7J5YWWd2WA1Q0nRurtg==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "8.0.10",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/global": "^5.0.0",
+ "@storybook/preview-api": "8.0.10",
+ "@vitest/utils": "^1.3.1",
+ "util": "^0.12.4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/instrumenter/node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
"node_modules/@storybook/manager": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.15.tgz",
- "integrity": "sha512-GGV2ElV5AOIApy/FSDzoSlLUbyd2VhQVD3TdNGRxNauYRjEO8ulXHw2tNbT6ludtpYpDTAILzI6zT/iag8hmPQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-8.0.10.tgz",
+ "integrity": "sha512-bojGglUQNry48L4siURc2zQKswavLzMh69rqsfL3ZXx+i+USfRfB7593azTlaZh0q6HO4bUAjB24RfQCyifLLQ==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -13896,19 +13343,20 @@
}
},
"node_modules/@storybook/manager-api": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.15.tgz",
- "integrity": "sha512-cPBsXcnJiaO3QyaEum2JgdihYea3cI03FeV35JdrBYLIelT4oqbYFnzjznsFg9+Ia9iAbz7aOBNyyRsWnC/UKw==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.0.10.tgz",
+ "integrity": "sha512-LLu6YKQLWf5QB3h3RO8IevjLrSOew7aidIQPr9DIr9xC8wA7N2fQabr+qrJdE306p3cHZ0nzhYNYZxSjm4Dvdw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "7.6.15",
- "@storybook/client-logger": "7.6.15",
- "@storybook/core-events": "7.6.15",
- "@storybook/csf": "^0.1.2",
+ "@storybook/channels": "8.0.10",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/csf": "^0.1.4",
"@storybook/global": "^5.0.0",
- "@storybook/router": "7.6.15",
- "@storybook/theming": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/icons": "^1.2.5",
+ "@storybook/router": "8.0.10",
+ "@storybook/theming": "8.0.10",
+ "@storybook/types": "8.0.10",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
"memoizerific": "^1.11.3",
@@ -13921,26 +13369,10 @@
"url": "https://opencollective.com/storybook"
}
},
- "node_modules/@storybook/mdx2-csf": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz",
- "integrity": "sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==",
- "dev": true
- },
"node_modules/@storybook/node-logger": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.15.tgz",
- "integrity": "sha512-C+sCvRjR+5uVU3VTrfyv7/RlPBxesAjIucUAK0keGyIZ7sFQYCPdkm4m/C4s+TcubgAzVvuoUHlRrSppdA7WzQ==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/postinstall": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.15.tgz",
- "integrity": "sha512-DXQQ4kjAbQ7BSd9M4lDI/12vEEciYMP8uYFDlrPFjwD9LezsxtRiORkazjNRRX4730faO5zZsnWhXxCVkxck0g==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.0.10.tgz",
+ "integrity": "sha512-UMmaUaA3VOX/mKLsSvOnbZre2/1tZ6hazA6H0eAnClKb51jRD1AJrsBYK+uHr/CAp7t710bB5U8apPov7hayDw==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -13948,50 +13380,60 @@
}
},
"node_modules/@storybook/preset-react-webpack": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.6.15.tgz",
- "integrity": "sha512-Oo3J7RKO/tFUVnRXs16tZGcX6n90gTpHdlT2Z1fZ+y8wEd9o+VvvKFEIIeMcRxf3hHa49R6Kbc4AQaE9FAuDlw==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.0.10.tgz",
+ "integrity": "sha512-+I0x8snLl9sfc3xXh51YLXwp0Km4Jhri+JJeT2r+zSI3k/fdu5bLz5NFPcxDmRm5ZPpaQyiLc2Mge4txMkFsZw==",
"dev": true,
"dependencies": {
- "@babel/preset-flow": "^7.22.15",
- "@babel/preset-react": "^7.22.15",
- "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
- "@storybook/core-webpack": "7.6.15",
- "@storybook/docs-tools": "7.6.15",
- "@storybook/node-logger": "7.6.15",
- "@storybook/react": "7.6.15",
+ "@storybook/core-webpack": "8.0.10",
+ "@storybook/docs-tools": "8.0.10",
+ "@storybook/node-logger": "8.0.10",
+ "@storybook/react": "8.0.10",
"@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0",
"@types/node": "^18.0.0",
"@types/semver": "^7.3.4",
- "babel-plugin-add-react-displayname": "^0.0.5",
+ "find-up": "^5.0.0",
"fs-extra": "^11.1.0",
"magic-string": "^0.30.5",
"react-docgen": "^7.0.0",
- "react-refresh": "^0.14.0",
+ "resolve": "^1.22.8",
"semver": "^7.3.7",
+ "tsconfig-paths": "^4.2.0",
"webpack": "5"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "@babel/core": "^7.22.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
"typescript": {
"optional": true
}
}
},
+ "node_modules/@storybook/preset-react-webpack/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
@@ -14018,6 +13460,68 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/@storybook/preset-react-webpack/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/preset-react-webpack/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/preset-react-webpack/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/preset-react-webpack/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@storybook/preset-react-webpack/node_modules/tsconfig-paths": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
+ "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
+ "dev": true,
+ "dependencies": {
+ "json5": "^2.2.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@storybook/preset-react-webpack/node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
@@ -14028,9 +13532,9 @@
}
},
"node_modules/@storybook/preview": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.15.tgz",
- "integrity": "sha512-q8d9v0+Bo/DHLV68OyV3Klep4knf2GAbrlHhLW1X4jlPccuEDUojIfqfK7m48ayeIxJzO48fcO0JdKM1XABx7g==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.0.10.tgz",
+ "integrity": "sha512-op7gZqop8PSFyPA4tc1Zds8jG6VnskwpYUUsa44pZoEez9PKEFCf4jE+7AQwbBS3hnuCb0CKBfASN8GRyoznbw==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -14038,23 +13542,23 @@
}
},
"node_modules/@storybook/preview-api": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.15.tgz",
- "integrity": "sha512-2KN9vlizF6sFlYsJEGnFqcQaJXs4TTdawC1VazVdtaMSHANDxxDu8F1cP+u7lpPH3DkNZUmTGQDBYfYY9xR0eQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.0.10.tgz",
+ "integrity": "sha512-uZ6btF7Iloz9TnDcKLQ5ydi2YK0cnulv/8FLQhBCwSrzLLLb+T2DGz0cAeuWZEvMUNWNmkWJ9PAFQFs09/8p/Q==",
"dev": true,
"dependencies": {
- "@storybook/channels": "7.6.15",
- "@storybook/client-logger": "7.6.15",
- "@storybook/core-events": "7.6.15",
- "@storybook/csf": "^0.1.2",
+ "@storybook/channels": "8.0.10",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/csf": "^0.1.4",
"@storybook/global": "^5.0.0",
- "@storybook/types": "7.6.15",
+ "@storybook/types": "8.0.10",
"@types/qs": "^6.9.5",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
"memoizerific": "^1.11.3",
"qs": "^6.10.0",
- "synchronous-promise": "^2.0.15",
+ "tiny-invariant": "^1.3.1",
"ts-dedent": "^2.0.0",
"util-deprecate": "^1.0.2"
},
@@ -14064,18 +13568,17 @@
}
},
"node_modules/@storybook/react": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.15.tgz",
- "integrity": "sha512-oJMSh4iTGu6OqCmj0LhkuPyMkxGMTCoohN4HcDpXd96jCSyWotVebRsg9xm5ddB7f54e6DY4XDoGH0WnVoR23g==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.0.10.tgz",
+ "integrity": "sha512-/MIMc02TNmiNXDzk55dm9+ujfNE5LVNeqqK+vxXWLlCZ0aXRAd1/ZLYeRFuYLgEETB7mh7IP8AXjvM68NX5HYg==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "7.6.15",
- "@storybook/core-client": "7.6.15",
- "@storybook/docs-tools": "7.6.15",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/docs-tools": "8.0.10",
"@storybook/global": "^5.0.0",
- "@storybook/preview-api": "7.6.15",
- "@storybook/react-dom-shim": "7.6.15",
- "@storybook/types": "7.6.15",
+ "@storybook/preview-api": "8.0.10",
+ "@storybook/react-dom-shim": "8.0.10",
+ "@storybook/types": "8.0.10",
"@types/escodegen": "^0.0.6",
"@types/estree": "^0.0.51",
"@types/node": "^18.0.0",
@@ -14087,12 +13590,13 @@
"lodash": "^4.17.21",
"prop-types": "^15.7.2",
"react-element-to-jsx-string": "^15.0.0",
+ "semver": "^7.3.7",
"ts-dedent": "^2.0.0",
"type-fest": "~2.19",
"util-deprecate": "^1.0.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
},
"funding": {
"type": "opencollective",
@@ -14101,7 +13605,7 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "typescript": "*"
+ "typescript": ">= 4.2.x"
},
"peerDependenciesMeta": {
"typescript": {
@@ -14252,9 +13756,9 @@
}
},
"node_modules/@storybook/react-dom-shim": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.15.tgz",
- "integrity": "sha512-2+X0HIxIyvjfSKVyGGjSJJLEFJ2ox7Rr8FjlMiRo5QfoOJhohZuWH7p4Lw7JMwm5PotnjrwlfsZI3cCilYJeYA==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.0.10.tgz",
+ "integrity": "sha512-3x8EWEkZebpWpp1pwXEzdabGINwOQt8odM5+hsOlDRtFZBmUqmmzK0rtn7orlcGlOXO4rd6QuZj4Tc5WV28dVQ==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -14266,33 +13770,29 @@
}
},
"node_modules/@storybook/react-webpack5": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.6.15.tgz",
- "integrity": "sha512-TyYYSDho+4cQRBCVMKu7XDTCrAsLWaeldCoZm910e4DTXZUV3NDG8hVJIXzweaCu1o7JtDOelxsA6iizR/22GQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.0.10.tgz",
+ "integrity": "sha512-KqQTYiFBTfWJOKP4SxirXRNLYCaLxFlDmEyUjQHuBbA03fEnvTYlCR7Kv5leArvBTiMpat2IfPqXlc048PKFRw==",
"dev": true,
"dependencies": {
- "@storybook/builder-webpack5": "7.6.15",
- "@storybook/preset-react-webpack": "7.6.15",
- "@storybook/react": "7.6.15",
+ "@storybook/builder-webpack5": "8.0.10",
+ "@storybook/preset-react-webpack": "8.0.10",
+ "@storybook/react": "8.0.10",
"@types/node": "^18.0.0"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "@babel/core": "^7.22.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "typescript": "*"
+ "typescript": ">= 4.2.x"
},
"peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
"typescript": {
"optional": true
}
@@ -14329,12 +13829,12 @@
}
},
"node_modules/@storybook/router": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.15.tgz",
- "integrity": "sha512-5yhXXoVZ1iKUgeZoO8PGqBclrLgoJisxIYVK/Y1iJMXZ2ZvwUiTswLALT6lu97tSrcoBVxmqSghg0+U0YEU4Fg==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-8.0.10.tgz",
+ "integrity": "sha512-AZhgiet+EK0ZsPbaDgbbVTAHW2LAMCP1z/Un2uMBbdDeD0Ys29Af47AbEj/Ome5r1cqasLvzq2WXJlVXPNB0Zw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "7.6.15",
+ "@storybook/client-logger": "8.0.10",
"memoizerific": "^1.11.3",
"qs": "^6.10.0"
},
@@ -14344,16 +13844,16 @@
}
},
"node_modules/@storybook/source-loader": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-7.6.15.tgz",
- "integrity": "sha512-E7LqjfvEUs2dn8ZWc1OfqzXU3vyi2/yP7rPHPRFjDUIpz1QI4IUCUIFY+n3YWkbk8wlmf6dV/2QYzYZPp6RD0g==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-8.0.10.tgz",
+ "integrity": "sha512-bv9FRPzELjcoMJLWLDqkUNh1zY0DiCgcvM+9qsZva8pxAD4fzrX+mgCS2vZVJHRg8wMAhw/ymdXixDUodHAvsw==",
"dev": true,
"dependencies": {
- "@storybook/csf": "^0.1.2",
- "@storybook/types": "7.6.15",
+ "@storybook/csf": "^0.1.4",
+ "@storybook/types": "8.0.10",
"estraverse": "^5.2.0",
"lodash": "^4.17.21",
- "prettier": "^2.8.0"
+ "prettier": "^3.1.1"
},
"funding": {
"type": "opencollective",
@@ -14370,29 +13870,29 @@
}
},
"node_modules/@storybook/source-loader/node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
+ "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
"dev": true,
"bin": {
- "prettier": "bin-prettier.js"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"node_modules/@storybook/telemetry": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.15.tgz",
- "integrity": "sha512-klhKXLUS3OXozGEtMbbhKZLDfm+m3nNk2jvGwD6kkBenzFUzb0P2m8awxU7h1pBcKZKH/27U9t3KVzNFzWoWPw==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-8.0.10.tgz",
+ "integrity": "sha512-s4Uc+KZQkdmD2d+64Qf8wYknhQZwmjf2CxjIjv9b4KLsU/nyfDheK7Fzd1jhBKb2UQUlLW5HhZkBgs1RsZcDHA==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "7.6.15",
- "@storybook/core-common": "7.6.15",
- "@storybook/csf-tools": "7.6.15",
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/core-common": "8.0.10",
+ "@storybook/csf-tools": "8.0.10",
"chalk": "^4.1.0",
"detect-package-manager": "^2.0.1",
"fetch-retry": "^5.0.2",
@@ -14439,14 +13939,131 @@
"node": ">= 10.0.0"
}
},
+ "node_modules/@storybook/test": {
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.0.10.tgz",
+ "integrity": "sha512-VqjzKJiOCjaZ0CjLeKygYk8uetiaiKbpIox+BrND9GtpEBHcRZA5AeFY2P1aSCOhsaDwuh4KRBxJWFug7DhWGQ==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "8.0.10",
+ "@storybook/core-events": "8.0.10",
+ "@storybook/instrumenter": "8.0.10",
+ "@storybook/preview-api": "8.0.10",
+ "@testing-library/dom": "^9.3.4",
+ "@testing-library/jest-dom": "^6.4.2",
+ "@testing-library/user-event": "^14.5.2",
+ "@vitest/expect": "1.3.1",
+ "@vitest/spy": "^1.3.1",
+ "util": "^0.12.4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": {
+ "version": "6.6.3",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz",
+ "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==",
+ "dev": true,
+ "dependencies": {
+ "@adobe/css-tools": "^4.4.0",
+ "aria-query": "^5.0.0",
+ "chalk": "^3.0.0",
+ "css.escape": "^1.5.1",
+ "dom-accessibility-api": "^0.6.3",
+ "lodash": "^4.17.21",
+ "redent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "node_modules/@storybook/test/node_modules/@testing-library/user-event": {
+ "version": "14.5.2",
+ "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz",
+ "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "@testing-library/dom": ">=7.21.4"
+ }
+ },
+ "node_modules/@storybook/test/node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/@storybook/test/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/test/node_modules/dom-accessibility-api": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz",
+ "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==",
+ "dev": true
+ },
+ "node_modules/@storybook/test/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/test/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/test/node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
"node_modules/@storybook/theming": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.15.tgz",
- "integrity": "sha512-9PpsHAbUf6o0w33/P3mnb7QheTmfGlTYCismj5HMM1O2/zY0kQK9XcG9W+Cyvu56D/lFC19fz9YHQY8W4AbfnQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.0.10.tgz",
+ "integrity": "sha512-7NHt7bMC7lPkwz9KdDpa6DkLoQZz5OV6jsx/qY91kcdLo1rpnRPAiVlJvmWesFxi1oXOpVDpHHllWzf8KDBv8A==",
"dev": true,
"dependencies": {
- "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
- "@storybook/client-logger": "7.6.15",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+ "@storybook/client-logger": "8.0.10",
"@storybook/global": "^5.0.0",
"memoizerific": "^1.11.3"
},
@@ -14457,16 +14074,23 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
}
},
"node_modules/@storybook/types": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.15.tgz",
- "integrity": "sha512-tLH0lK6SXECSfMpKin9bge+7XiHZII17n6jc9ZI1TfSBZJyq3M6VzWh2r1C2lC97FlkcKXjIwM3n8h1xNjnI+A==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.0.10.tgz",
+ "integrity": "sha512-S/hKS7+SqNnYIehwxdQ4M2nnlfGDdYWAXdtPCVJCmS+YF2amgAxeuisiHbUg7eypds6VL0Oxk/j2nPEHOHk9pg==",
"dev": true,
"dependencies": {
- "@storybook/channels": "7.6.15",
- "@types/babel__core": "^7.0.0",
+ "@storybook/channels": "8.0.10",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -14864,216 +14488,6 @@
"url": "https://github.com/sponsors/gregberge"
}
},
- "node_modules/@swc/core": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.1.tgz",
- "integrity": "sha512-3y+Y8js+e7BbM16iND+6Rcs3jdiL28q3iVtYsCviYSSpP2uUVKkp5sJnCY4pg8AaVvyN7CGQHO7gLEZQ5ByozQ==",
- "dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "@swc/counter": "^0.1.2",
- "@swc/types": "^0.1.5"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/swc"
- },
- "optionalDependencies": {
- "@swc/core-darwin-arm64": "1.4.1",
- "@swc/core-darwin-x64": "1.4.1",
- "@swc/core-linux-arm-gnueabihf": "1.4.1",
- "@swc/core-linux-arm64-gnu": "1.4.1",
- "@swc/core-linux-arm64-musl": "1.4.1",
- "@swc/core-linux-x64-gnu": "1.4.1",
- "@swc/core-linux-x64-musl": "1.4.1",
- "@swc/core-win32-arm64-msvc": "1.4.1",
- "@swc/core-win32-ia32-msvc": "1.4.1",
- "@swc/core-win32-x64-msvc": "1.4.1"
- },
- "peerDependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependenciesMeta": {
- "@swc/helpers": {
- "optional": true
- }
- }
- },
- "node_modules/@swc/core-darwin-arm64": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.1.tgz",
- "integrity": "sha512-ePyfx0348UbR4DOAW24TedeJbafnzha8liXFGuQ4bdXtEVXhLfPngprrxKrAddCuv42F9aTxydlF6+adD3FBhA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-darwin-x64": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.1.tgz",
- "integrity": "sha512-eLf4JSe6VkCMdDowjM8XNC5rO+BrgfbluEzAVtKR8L2HacNYukieumN7EzpYCi0uF1BYwu1ku6tLyG2r0VcGxA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-arm-gnueabihf": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.1.tgz",
- "integrity": "sha512-K8VtTLWMw+rkN/jDC9o/Q9SMmzdiHwYo2CfgkwVT29NsGccwmNhCQx6XoYiPKyKGIFKt4tdQnJHKUFzxUqQVtQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-arm64-gnu": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.1.tgz",
- "integrity": "sha512-0e8p4g0Bfkt8lkiWgcdiENH3RzkcqKtpRXIVNGOmVc0OBkvc2tpm2WTx/eoCnes2HpTT4CTtR3Zljj4knQ4Fvw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-arm64-musl": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.1.tgz",
- "integrity": "sha512-b/vWGQo2n7lZVUnSQ7NBq3Qrj85GrAPPiRbpqaIGwOytiFSk8VULFihbEUwDe0rXgY4LDm8z8wkgADZcLnmdUA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-x64-gnu": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.1.tgz",
- "integrity": "sha512-AFMQlvkKEdNi1Vk2GFTxxJzbICttBsOQaXa98kFTeWTnFFIyiIj2w7Sk8XRTEJ/AjF8ia8JPKb1zddBWr9+bEQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-x64-musl": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.1.tgz",
- "integrity": "sha512-QX2MxIECX1gfvUVZY+jk528/oFkS9MAl76e3ZRvG2KC/aKlCQL0KSzcTSm13mOxkDKS30EaGRDRQWNukGpMeRg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-win32-arm64-msvc": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.1.tgz",
- "integrity": "sha512-OklkJYXXI/tntD2zaY8i3iZldpyDw5q+NAP3k9OlQ7wXXf37djRsHLV0NW4+ZNHBjE9xp2RsXJ0jlOJhfgGoFA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-win32-ia32-msvc": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.1.tgz",
- "integrity": "sha512-MBuc3/QfKX9FnLOU7iGN+6yHRTQaPQ9WskiC8s8JFiKQ+7I2p25tay2RplR9dIEEGgVAu6L7auv96LbNTh+FaA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-win32-x64-msvc": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.1.tgz",
- "integrity": "sha512-lu4h4wFBb/bOK6N2MuZwg7TrEpwYXgpQf5R7ObNSXL65BwZ9BG8XRzD+dLJmALu8l5N08rP/TrpoKRoGT4WSxw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/counter": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
- "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
- "dev": true
- },
- "node_modules/@swc/types": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz",
- "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==",
- "dev": true
- },
"node_modules/@szmarczak/http-timer": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
@@ -15113,9 +14527,9 @@
"integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw=="
},
"node_modules/@testing-library/dom": {
- "version": "9.3.1",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.1.tgz",
- "integrity": "sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==",
+ "version": "9.3.4",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz",
+ "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.10.4",
@@ -15563,9 +14977,9 @@
"dev": true
},
"node_modules/@types/emscripten": {
- "version": "1.39.10",
- "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz",
- "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==",
+ "version": "1.39.13",
+ "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz",
+ "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==",
"dev": true
},
"node_modules/@types/escodegen": {
@@ -15631,12 +15045,6 @@
"integrity": "sha512-g39Vp8ZJ3D0gXhhkhDidVvdy4QajkF7/PV6HGn23FMaMqE/tLC1JNHUeQ7SshKLsBjucakZsXBLkWULbGLdL5g==",
"dev": true
},
- "node_modules/@types/find-cache-dir": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz",
- "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==",
- "dev": true
- },
"node_modules/@types/find-root": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@types/find-root/-/find-root-1.1.2.tgz",
@@ -15667,6 +15075,15 @@
"resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.45.tgz",
"integrity": "sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ=="
},
+ "node_modules/@types/hast": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
"node_modules/@types/highlight-words-core": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@types/highlight-words-core/-/highlight-words-core-1.2.1.tgz",
@@ -15790,9 +15207,9 @@
"license": "MIT"
},
"node_modules/@types/mdx": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.6.tgz",
- "integrity": "sha512-sVcwEG10aFU2KcM7cIA0M410UPv/DesOPyG8zMVk0QUDexHA3lYmGucpEpZ2dtWWhi2ip3CG+5g/iH0PwoW4Fw==",
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz",
+ "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==",
"dev": true
},
"node_modules/@types/method-override": {
@@ -15811,12 +15228,6 @@
"integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==",
"dev": true
},
- "node_modules/@types/mime-types": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz",
- "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==",
- "dev": true
- },
"node_modules/@types/minimatch": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
@@ -15858,16 +15269,6 @@
"undici-types": "~5.26.4"
}
},
- "node_modules/@types/node-fetch": {
- "version": "2.6.11",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz",
- "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "form-data": "^4.0.0"
- }
- },
"node_modules/@types/node-forge": {
"version": "1.3.11",
"resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
@@ -16763,6 +16164,12 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz",
+ "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==",
+ "dev": true
+ },
"node_modules/@use-gesture/core": {
"version": "10.3.1",
"resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz",
@@ -16779,6 +16186,47 @@
"react": ">= 16.8.0"
}
},
+ "node_modules/@vitest/expect": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.3.1.tgz",
+ "integrity": "sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==",
+ "dev": true,
+ "dependencies": {
+ "@vitest/spy": "1.3.1",
+ "@vitest/utils": "1.3.1",
+ "chai": "^4.3.10"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/spy": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.3.1.tgz",
+ "integrity": "sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==",
+ "dev": true,
+ "dependencies": {
+ "tinyspy": "^2.2.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/utils": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.3.1.tgz",
+ "integrity": "sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==",
+ "dev": true,
+ "dependencies": {
+ "diff-sequences": "^29.6.3",
+ "estree-walker": "^3.0.3",
+ "loupe": "^2.3.7",
+ "pretty-format": "^29.7.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
"node_modules/@wdio/config": {
"version": "8.16.20",
"resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.16.20.tgz",
@@ -19412,6 +18860,15 @@
"inherits": "2.0.3"
}
},
+ "node_modules/assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
@@ -19827,12 +19284,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/babel-plugin-add-react-displayname": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz",
- "integrity": "sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==",
- "dev": true
- },
"node_modules/babel-plugin-inline-json-import": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/babel-plugin-inline-json-import/-/babel-plugin-inline-json-import-0.3.2.tgz",
@@ -21108,6 +20559,33 @@
"resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz",
"integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw=="
},
+ "node_modules/chai": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz",
+ "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==",
+ "dev": true,
+ "dependencies": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.3",
+ "deep-eql": "^4.1.3",
+ "get-func-name": "^2.0.2",
+ "loupe": "^2.3.6",
+ "pathval": "^1.1.1",
+ "type-detect": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chai/node_modules/type-detect": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz",
+ "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/chalk": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
@@ -21194,6 +20672,18 @@
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
},
+ "node_modules/check-error": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
+ "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+ "dev": true,
+ "dependencies": {
+ "get-func-name": "^2.0.2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/check-node-version": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4.1.0.tgz",
@@ -21575,9 +21065,9 @@
}
},
"node_modules/cli-table3": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz",
- "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==",
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
+ "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0"
@@ -22235,6 +21725,12 @@
"node": ">=0.8.0"
}
},
+ "node_modules/confbox": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
+ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
+ "dev": true
+ },
"node_modules/configstore": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
@@ -24010,6 +23506,18 @@
"integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
"dev": true
},
+ "node_modules/deep-eql": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
+ "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
@@ -24724,9 +24232,9 @@
}
},
"node_modules/detect-port": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz",
- "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz",
+ "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==",
"dev": true,
"dependencies": {
"address": "^1.0.1",
@@ -24735,6 +24243,9 @@
"bin": {
"detect": "bin/detect-port.js",
"detect-port": "bin/detect-port.js"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
}
},
"node_modules/devtools-protocol": {
@@ -25598,9 +25109,9 @@
"dev": true
},
"node_modules/esbuild-register": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz",
- "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz",
+ "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==",
"dev": true,
"dependencies": {
"debug": "^4.3.4"
@@ -26452,6 +25963,15 @@
"node": ">=4.0"
}
},
+ "node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
"node_modules/esutils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
@@ -28336,6 +27856,15 @@
"node": "6.* || 8.* || >= 10.*"
}
},
+ "node_modules/get-func-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/get-intrinsic": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
@@ -28581,18 +28110,18 @@
}
},
"node_modules/giget": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.1.tgz",
- "integrity": "sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz",
+ "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==",
"dev": true,
"dependencies": {
- "citty": "^0.1.5",
+ "citty": "^0.1.6",
"consola": "^3.2.3",
- "defu": "^6.1.3",
- "node-fetch-native": "^1.6.1",
- "nypm": "^0.3.3",
+ "defu": "^6.1.4",
+ "node-fetch-native": "^1.6.3",
+ "nypm": "^0.3.8",
"ohash": "^1.1.3",
- "pathe": "^1.1.1",
+ "pathe": "^1.1.2",
"tar": "^6.2.0"
},
"bin": {
@@ -28707,9 +28236,9 @@
"optional": true
},
"node_modules/github-slugger": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz",
- "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
+ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==",
"dev": true
},
"node_modules/glob": {
@@ -29226,6 +28755,45 @@
"node": ">= 0.4"
}
},
+ "node_modules/hast-util-heading-rank": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz",
+ "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==",
+ "dev": true,
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-is-element": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
+ "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
+ "dev": true,
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-string": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz",
+ "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==",
+ "dev": true,
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -29430,9 +28998,9 @@
}
},
"node_modules/html-webpack-plugin": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz",
- "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==",
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz",
+ "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==",
"dev": true,
"dependencies": {
"@types/html-minifier-terser": "^6.0.0",
@@ -30304,12 +29872,15 @@
}
},
"node_modules/is-absolute-url": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
- "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz",
+ "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-accessor-descriptor": {
@@ -35045,6 +34616,15 @@
"loose-envify": "cli.js"
}
},
+ "node_modules/loupe": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
+ "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
+ "dev": true,
+ "dependencies": {
+ "get-func-name": "^2.0.1"
+ }
+ },
"node_modules/lower-case": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
@@ -35092,15 +34672,12 @@
}
},
"node_modules/magic-string": {
- "version": "0.30.7",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
- "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
+ "version": "0.30.15",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.15.tgz",
+ "integrity": "sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==",
"dev": true,
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15"
- },
- "engines": {
- "node": ">=12"
+ "@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/make-dir": {
@@ -35628,9 +35205,9 @@
"integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q=="
},
"node_modules/markdown-to-jsx": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.1.tgz",
- "integrity": "sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A==",
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz",
+ "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==",
"dev": true,
"engines": {
"node": ">= 10"
@@ -35812,58 +35389,6 @@
"unist-util-visit": "^1.1.0"
}
},
- "node_modules/mdast-util-definitions": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz",
- "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==",
- "dev": true,
- "dependencies": {
- "unist-util-visit": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-definitions/node_modules/unist-util-is": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
- "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-definitions/node_modules/unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "dev": true,
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "dev": true,
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/mdast-util-inject": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz",
@@ -37017,6 +36542,30 @@
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
"dev": true
},
+ "node_modules/mlly": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz",
+ "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "pathe": "^1.1.2",
+ "pkg-types": "^1.2.1",
+ "ufo": "^1.5.4"
+ }
+ },
+ "node_modules/mlly/node_modules/acorn": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/mock-match-media": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/mock-match-media/-/mock-match-media-0.4.2.tgz",
@@ -37641,9 +37190,9 @@
}
},
"node_modules/node-fetch-native": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.2.tgz",
- "integrity": "sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==",
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
+ "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==",
"dev": true
},
"node_modules/node-forge": {
@@ -38924,15 +38473,17 @@
}
},
"node_modules/nypm": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.6.tgz",
- "integrity": "sha512-2CATJh3pd6CyNfU5VZM7qSwFu0ieyabkEdnogE30Obn1czrmOYiZ8DOZLe1yBdLKWoyD3Mcy2maUs+0MR3yVjQ==",
+ "version": "0.3.12",
+ "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.12.tgz",
+ "integrity": "sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==",
"dev": true,
"dependencies": {
- "citty": "^0.1.5",
+ "citty": "^0.1.6",
+ "consola": "^3.2.3",
"execa": "^8.0.1",
"pathe": "^1.1.2",
- "ufo": "^1.3.2"
+ "pkg-types": "^1.2.0",
+ "ufo": "^1.5.4"
},
"bin": {
"nypm": "dist/cli.mjs"
@@ -38941,6 +38492,15 @@
"node": "^14.16.0 || >=16.10.0"
}
},
+ "node_modules/nypm/node_modules/consola": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
+ "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
"node_modules/nypm/node_modules/execa": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
@@ -39024,11 +38584,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/nypm/node_modules/npm-run-path/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "node_modules/nypm/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
"dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
"engines": {
"node": ">=12"
},
@@ -39036,14 +38599,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/nypm/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "node_modules/nypm/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
"engines": {
"node": ">=12"
},
@@ -39282,9 +38842,9 @@
"dev": true
},
"node_modules/ohash": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz",
- "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz",
+ "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==",
"dev": true
},
"node_modules/on-finished": {
@@ -40526,6 +40086,15 @@
"integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
"dev": true
},
+ "node_modules/pathval": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/pbkdf2": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
@@ -40657,6 +40226,17 @@
"node": ">=4"
}
},
+ "node_modules/pkg-types": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz",
+ "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==",
+ "dev": true,
+ "dependencies": {
+ "confbox": "^0.1.8",
+ "mlly": "^1.7.2",
+ "pathe": "^1.1.2"
+ }
+ },
"node_modules/platform": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz",
@@ -42338,9 +41918,9 @@
}
},
"node_modules/react-docgen": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz",
- "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.0.tgz",
+ "integrity": "sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==",
"dev": true,
"dependencies": {
"@babel/core": "^7.18.9",
@@ -43507,155 +43087,176 @@
"regjsparser": "bin/parser"
}
},
- "node_modules/relateurl": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
- "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "node_modules/rehype-external-links": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz",
+ "integrity": "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==",
"dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/remark": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz",
- "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==",
"dependencies": {
- "remark-parse": "^6.0.0",
- "remark-stringify": "^6.0.0",
- "unified": "^7.0.0"
+ "@types/hast": "^3.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "hast-util-is-element": "^3.0.0",
+ "is-absolute-url": "^4.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-external-links": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz",
- "integrity": "sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==",
+ "node_modules/rehype-external-links/node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "dev": true
+ },
+ "node_modules/rehype-external-links/node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
"dev": true,
"dependencies": {
- "extend": "^3.0.0",
- "is-absolute-url": "^3.0.0",
- "mdast-util-definitions": "^4.0.0",
- "space-separated-tokens": "^1.0.0",
- "unist-util-visit": "^2.0.0"
+ "@types/unist": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-external-links/node_modules/unist-util-is": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
- "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
+ "node_modules/rehype-external-links/node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
"dev": true,
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-external-links/node_modules/unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
+ "node_modules/rehype-external-links/node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
"dev": true,
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-external-links/node_modules/unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
+ "node_modules/rehype-slug": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz",
+ "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==",
"dev": true,
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
+ "@types/hast": "^3.0.0",
+ "github-slugger": "^2.0.0",
+ "hast-util-heading-rank": "^3.0.0",
+ "hast-util-to-string": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-parse": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz",
- "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==",
- "dependencies": {
- "collapse-white-space": "^1.0.2",
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-whitespace-character": "^1.0.0",
- "is-word-character": "^1.0.0",
- "markdown-escapes": "^1.0.0",
- "parse-entities": "^1.1.0",
- "repeat-string": "^1.5.4",
- "state-toggle": "^1.0.0",
- "trim": "0.0.1",
- "trim-trailing-lines": "^1.0.0",
- "unherit": "^1.0.4",
- "unist-util-remove-position": "^1.0.0",
- "vfile-location": "^2.0.0",
- "xtend": "^4.0.1"
- }
+ "node_modules/rehype-slug/node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "dev": true
},
- "node_modules/remark-slug": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz",
- "integrity": "sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==",
+ "node_modules/rehype-slug/node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
"dev": true,
"dependencies": {
- "github-slugger": "^1.0.0",
- "mdast-util-to-string": "^1.0.0",
- "unist-util-visit": "^2.0.0"
+ "@types/unist": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-slug/node_modules/unist-util-is": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
- "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
+ "node_modules/rehype-slug/node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
"dev": true,
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-slug/node_modules/unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
+ "node_modules/rehype-slug/node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
"dev": true,
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-slug/node_modules/unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
+ "node_modules/relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
"dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/remark": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz",
+ "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "remark-parse": "^6.0.0",
+ "remark-stringify": "^6.0.0",
+ "unified": "^7.0.0"
+ }
+ },
+ "node_modules/remark-parse": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz",
+ "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==",
+ "dependencies": {
+ "collapse-white-space": "^1.0.2",
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-whitespace-character": "^1.0.0",
+ "is-word-character": "^1.0.0",
+ "markdown-escapes": "^1.0.0",
+ "parse-entities": "^1.1.0",
+ "repeat-string": "^1.5.4",
+ "state-toggle": "^1.0.0",
+ "trim": "0.0.1",
+ "trim-trailing-lines": "^1.0.0",
+ "unherit": "^1.0.4",
+ "unist-util-remove-position": "^1.0.0",
+ "vfile-location": "^2.0.0",
+ "xtend": "^4.0.1"
}
},
"node_modules/remark-stringify": {
@@ -45808,9 +45409,9 @@
"deprecated": "See https://github.com/lydell/source-map-url#deprecated"
},
"node_modules/space-separated-tokens": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
- "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
"dev": true,
"funding": {
"type": "github",
@@ -46131,18 +45732,18 @@
}
},
"node_modules/store2": {
- "version": "2.14.2",
- "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz",
- "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==",
+ "version": "2.14.3",
+ "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz",
+ "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==",
"dev": true
},
"node_modules/storybook": {
- "version": "7.6.15",
- "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.15.tgz",
- "integrity": "sha512-Ybezq9JRk5CBhzjgzZ/oT7mnU45UwhyVSGKW+PUKZGGUG9VH2hCrTEES9f/zEF82kj/5COVPyqR/5vlXuuS39A==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.0.10.tgz",
+ "integrity": "sha512-9/4oxISopLyr5xz7Du27mmQgcIfB7UTLlNzkK4IklWTiSgsOgYgZpsmIwymoXNtkrvh+QsqskdcUP1C7nNiEtw==",
"dev": true,
"dependencies": {
- "@storybook/cli": "7.6.15"
+ "@storybook/cli": "8.0.10"
},
"bin": {
"sb": "index.js",
@@ -47102,19 +46703,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/swc-loader": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz",
- "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==",
- "dev": true,
- "dependencies": {
- "@swc/counter": "^0.1.3"
- },
- "peerDependencies": {
- "@swc/core": "^1.2.147",
- "webpack": ">=2"
- }
- },
"node_modules/symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
@@ -47129,12 +46717,6 @@
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
},
- "node_modules/synchronous-promise": {
- "version": "2.0.17",
- "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz",
- "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==",
- "dev": true
- },
"node_modules/synckit": {
"version": "0.8.5",
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz",
@@ -47494,7 +47076,6 @@
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
- "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -47537,7 +47118,6 @@
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"deprecated": "Rimraf versions prior to v4 are no longer supported",
"dev": true,
- "license": "ISC",
"dependencies": {
"glob": "^7.1.3"
},
@@ -47829,6 +47409,15 @@
"integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
"dev": true
},
+ "node_modules/tinyspy": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz",
+ "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/titleize": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
@@ -47941,9 +47530,9 @@
}
},
"node_modules/tocbot": {
- "version": "4.25.0",
- "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.25.0.tgz",
- "integrity": "sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==",
+ "version": "4.32.2",
+ "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.32.2.tgz",
+ "integrity": "sha512-UbVZNXX79LUqMzsnSTwE/YF/PYc2pg3G77D/jcolHd6lmw+oklzfcLtHSsmWBhOf1wfWD1HfYzdjGQef1VcQgg==",
"dev": true
},
"node_modules/toidentifier": {
@@ -48410,9 +47999,9 @@
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
},
"node_modules/ufo": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz",
- "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
+ "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
"dev": true
},
"node_modules/uglify-js": {
@@ -48688,23 +48277,23 @@
}
},
"node_modules/unplugin": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.7.1.tgz",
- "integrity": "sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.0.tgz",
+ "integrity": "sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==",
"dev": true,
"dependencies": {
- "acorn": "^8.11.3",
- "chokidar": "^3.5.3",
- "webpack-sources": "^3.2.3",
- "webpack-virtual-modules": "^0.6.1"
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
}
},
"node_modules/unplugin/node_modules/acorn": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz",
- "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==",
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"dev": true,
- "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -48716,8 +48305,7 @@
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
"integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
- "dev": true,
- "license": "MIT"
+ "dev": true
},
"node_modules/unset-value": {
"version": "1.0.0",
@@ -48981,19 +48569,6 @@
"react": "^16.8.0"
}
},
- "node_modules/use-resize-observer": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz",
- "integrity": "sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==",
- "dev": true,
- "dependencies": {
- "@juggle/resize-observer": "^3.3.1"
- },
- "peerDependencies": {
- "react": "16.8.0 - 18",
- "react-dom": "16.8.0 - 18"
- }
- },
"node_modules/use-sidecar": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
@@ -50505,7 +50080,6 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
diff --git a/package.json b/package.json
index b4fd877c826905..ce20056deb5ce9 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
"@emotion/babel-plugin": "11.11.0",
"@emotion/jest": "11.7.1",
"@emotion/native": "11.0.0",
- "@geometricpanda/storybook-addon-badges": "2.0.1",
+ "@geometricpanda/storybook-addon-badges": "2.0.5",
"@octokit/rest": "16.26.0",
"@octokit/types": "6.34.0",
"@octokit/webhooks-types": "5.8.0",
@@ -42,16 +42,18 @@
"@react-native/babel-preset": "0.73.10",
"@react-native/metro-babel-transformer": "0.73.10",
"@react-native/metro-config": "0.73.4",
- "@storybook/addon-a11y": "7.6.15",
- "@storybook/addon-actions": "7.6.15",
- "@storybook/addon-controls": "7.6.15",
- "@storybook/addon-docs": "7.6.15",
- "@storybook/addon-toolbars": "7.6.15",
- "@storybook/addon-viewport": "7.6.15",
- "@storybook/react": "7.6.15",
- "@storybook/react-webpack5": "7.6.15",
- "@storybook/source-loader": "7.6.15",
- "@storybook/theming": "7.6.15",
+ "@storybook/addon-a11y": "8.0.10",
+ "@storybook/addon-actions": "8.0.10",
+ "@storybook/addon-controls": "8.0.10",
+ "@storybook/addon-docs": "8.0.10",
+ "@storybook/addon-toolbars": "8.0.10",
+ "@storybook/addon-viewport": "8.0.10",
+ "@storybook/addon-webpack5-compiler-babel": "3.0.3",
+ "@storybook/react": "8.0.10",
+ "@storybook/react-webpack5": "8.0.10",
+ "@storybook/source-loader": "8.0.10",
+ "@storybook/test": "8.0.10",
+ "@storybook/theming": "8.0.10",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "14.3.0",
"@testing-library/react-native": "12.4.3",
@@ -156,7 +158,7 @@
"snapshot-diff": "0.10.0",
"source-map-loader": "3.0.0",
"sprintf-js": "1.1.1",
- "storybook": "7.6.15",
+ "storybook": "8.0.10",
"storybook-source-link": "2.0.9",
"strip-json-comments": "5.0.0",
"style-loader": "3.2.1",
diff --git a/packages/components/src/custom-select-control-v2/stories/index.story.tsx b/packages/components/src/custom-select-control-v2/stories/index.story.tsx
index 75226314af8dbd..b65c599ec9997c 100644
--- a/packages/components/src/custom-select-control-v2/stories/index.story.tsx
+++ b/packages/components/src/custom-select-control-v2/stories/index.story.tsx
@@ -2,6 +2,7 @@
* External dependencies
*/
import type { Meta, StoryFn } from '@storybook/react';
+import { fn } from '@storybook/test';
/**
* WordPress dependencies
@@ -44,6 +45,9 @@ const meta: Meta< typeof CustomSelectControlV2 > = {
),
],
+ args: {
+ onChange: fn(),
+ },
};
export default meta;
diff --git a/packages/components/src/tab-panel/stories/index.story.tsx b/packages/components/src/tab-panel/stories/index.story.tsx
index 57a3cc311f863c..8f40c61beb5239 100644
--- a/packages/components/src/tab-panel/stories/index.story.tsx
+++ b/packages/components/src/tab-panel/stories/index.story.tsx
@@ -2,6 +2,7 @@
* External dependencies
*/
import type { Meta, StoryFn } from '@storybook/react';
+import { fn } from '@storybook/test';
/**
* WordPress dependencies
@@ -22,6 +23,9 @@ const meta: Meta< typeof TabPanel > = {
controls: { expanded: true },
docs: { canvas: { sourceState: 'shown' } },
},
+ args: {
+ onSelect: fn(),
+ },
};
export default meta;
diff --git a/packages/components/src/tabs/stories/index.story.tsx b/packages/components/src/tabs/stories/index.story.tsx
index 5b2fd621bbb436..e434bb501d85c9 100644
--- a/packages/components/src/tabs/stories/index.story.tsx
+++ b/packages/components/src/tabs/stories/index.story.tsx
@@ -2,6 +2,7 @@
* External dependencies
*/
import type { Meta, StoryFn } from '@storybook/react';
+import { fn } from '@storybook/test';
/**
* WordPress dependencies
@@ -39,6 +40,10 @@ const meta: Meta< typeof Tabs > = {
controls: { expanded: true },
docs: { canvas: { sourceState: 'shown' } },
},
+ args: {
+ onActiveTabIdChange: fn(),
+ onSelect: fn(),
+ },
};
export default meta;
diff --git a/patches/storybook-source-link+2.0.9.patch b/patches/storybook-source-link+2.0.9.patch
new file mode 100644
index 00000000000000..c1db218d953a90
--- /dev/null
+++ b/patches/storybook-source-link+2.0.9.patch
@@ -0,0 +1,55 @@
+diff --git a/node_modules/storybook-source-link/dist/esm/Tool.js b/node_modules/storybook-source-link/dist/esm/Tool.js
+index 100099e..53d37c4 100644
+--- a/node_modules/storybook-source-link/dist/esm/Tool.js
++++ b/node_modules/storybook-source-link/dist/esm/Tool.js
+@@ -1,7 +1,8 @@
+ import React from "react";
+-import { Icons, IconButton, TooltipMessage, WithTooltip } from "@storybook/components";
+-import { PARAM_KEY, PREFIX_PARAM_KEY, ICON_PARAM_KEY, INFO_LINK, TOOL_ID } from "./constants";
+-import { useParameter } from '@storybook/api';
++import { IconButton, TooltipMessage, WithTooltip } from "@storybook/components";
++import { RepoIcon } from '@storybook/icons';
++import { PARAM_KEY, PREFIX_PARAM_KEY, INFO_LINK, TOOL_ID } from "./constants";
++import { useParameter } from '@storybook/manager-api';
+
+ var Tooltip = function Tooltip() {
+ return /*#__PURE__*/React.createElement(TooltipMessage, {
+@@ -24,7 +25,6 @@ export var getLink = function getLink(prefix, link) {
+ export var Tool = function Tool() {
+ var param_link = useParameter(PARAM_KEY, null);
+ var param_prefix = useParameter(PREFIX_PARAM_KEY, null);
+- var param_icon = useParameter(ICON_PARAM_KEY, "repository");
+ var link = getLink(param_prefix, param_link);
+ return link ? /*#__PURE__*/React.createElement(IconButton, {
+ key: TOOL_ID,
+@@ -35,9 +35,7 @@ export var Tool = function Tool() {
+ window.open(link);
+ }
+ }
+- }, /*#__PURE__*/React.createElement(Icons, {
+- icon: param_icon
+- })) : /*#__PURE__*/React.createElement(WithTooltip, {
++ }, /*#__PURE__*/React.createElement(RepoIcon)) : /*#__PURE__*/React.createElement(WithTooltip, {
+ placement: "top",
+ trigger: "click",
+ tooltip: /*#__PURE__*/React.createElement(Tooltip, null)
+@@ -45,7 +43,5 @@ export var Tool = function Tool() {
+ key: TOOL_ID,
+ title: "View Source Repository",
+ active: false
+- }, /*#__PURE__*/React.createElement(Icons, {
+- icon: param_icon
+- })));
++ }, /*#__PURE__*/React.createElement(RepoIcon)));
+ };
+\ No newline at end of file
+diff --git a/node_modules/storybook-source-link/dist/esm/preset/manager.js b/node_modules/storybook-source-link/dist/esm/preset/manager.js
+index 845f81d..ca1d066 100644
+--- a/node_modules/storybook-source-link/dist/esm/preset/manager.js
++++ b/node_modules/storybook-source-link/dist/esm/preset/manager.js
+@@ -1,4 +1,4 @@
+-import { addons, types } from "@storybook/addons";
++import { addons, types } from "@storybook/manager-api";
+ import { ADDON_ID, TOOL_ID } from "../constants";
+ import { Tool } from "../Tool"; // Register the addon
+
diff --git a/storybook/main.js b/storybook/main.js
index 5261fbbf4726ab..8a1203938fba59 100644
--- a/storybook/main.js
+++ b/storybook/main.js
@@ -54,6 +54,7 @@ module.exports = {
'@storybook/addon-a11y',
'@storybook/addon-toolbars',
'@storybook/addon-actions',
+ '@storybook/addon-webpack5-compiler-babel',
'storybook-source-link',
'@geometricpanda/storybook-addon-badges',
],
@@ -64,6 +65,9 @@ module.exports = {
docs: {
autodocs: true,
},
+ typescript: {
+ reactDocgen: 'react-docgen-typescript',
+ },
webpackFinal: async ( config ) => {
return {
...config,
diff --git a/storybook/preview.js b/storybook/preview.js
index a7c9aa0c085fc1..e173ab3ed1e268 100644
--- a/storybook/preview.js
+++ b/storybook/preview.js
@@ -2,7 +2,7 @@
* External dependencies
*/
import {
- ArgsTable,
+ Controls,
Description,
Primary,
Stories,
@@ -114,8 +114,7 @@ export const parameters = {
- { /* `story="^"` enables Controls for the primary props table */ }
-
+
>
),
diff --git a/storybook/sidebar.js b/storybook/sidebar.js
index d8ff2ba777dd7d..ab438440e3b834 100644
--- a/storybook/sidebar.js
+++ b/storybook/sidebar.js
@@ -28,7 +28,9 @@ const Title = styled.span( {
const Icons = styled.span( {} );
-const Icon = styled.span( {} );
+const Icon = styled.span( {
+ lineHeight: 1,
+} );
/**
* Fetches tags from the Storybook API, and returns Icon
@@ -41,7 +43,7 @@ function useIcons( item ) {
return useMemo( () => {
let data = {};
- if ( item.isComponent && item.children?.length ) {
+ if ( item.type === 'component' && item.children?.length ) {
data = api.getData( item.children[ 0 ] ) ?? {};
}
diff --git a/storybook/stories/docs/inline-icon.js b/storybook/stories/docs/inline-icon.js
index d7d1fafc28723d..b947dbd534a00d 100644
--- a/storybook/stories/docs/inline-icon.js
+++ b/storybook/stories/docs/inline-icon.js
@@ -2,11 +2,13 @@
* External dependencies
*/
import styled from '@emotion/styled';
-import { Icons } from '@storybook/components';
-const StyledIcons = styled( Icons )`
+const IconWrapper = ( { icon, ...props } ) => {
+ const IconComponent = icon;
+ return ;
+};
+
+export const InlineIcon = styled( IconWrapper )`
display: inline-block !important;
width: 14px;
`;
-
-export const InlineIcon = ( props ) => ;
diff --git a/storybook/stories/docs/introduction.mdx b/storybook/stories/docs/introduction.mdx
index 731c570942f6b8..cff649d189bd42 100644
--- a/storybook/stories/docs/introduction.mdx
+++ b/storybook/stories/docs/introduction.mdx
@@ -1,4 +1,5 @@
import { Meta } from '@storybook/blocks';
+import { RepoIcon } from '@storybook/icons';
import { InlineIcon } from './inline-icon';
@@ -28,7 +29,7 @@ The site shows the individual components in the sidebar and the Canvas on the ri
To view the documentation for each component use the **Docs** menu item in the top toolbar.
-To view the source code for the component and its stories on GitHub, click the View Source Repository button in the top right corner.
+To view the source code for the component and its stories on GitHub, click the View Source Repository button in the top right corner.
To use it in your local development environment run the following command in the top level Gutenberg directory:
From 1a8771bc6c27721c7dfccabc807bca14c527801c Mon Sep 17 00:00:00 2001
From: Mitchell Austin
Date: Wed, 11 Dec 2024 08:05:40 -0800
Subject: [PATCH 017/163] Update platform docs intro so following it actually
works (#61341)
Unlinked contributors: aks30498.
Co-authored-by: youknowriad
Co-authored-by: michalczaplinski
Co-authored-by: ramonjd
---
platform-docs/docs/intro.md | 83 +++++++++++++++++++++----------------
1 file changed, 48 insertions(+), 35 deletions(-)
diff --git a/platform-docs/docs/intro.md b/platform-docs/docs/intro.md
index 05cfa103492f33..48f1410871ccef 100644
--- a/platform-docs/docs/intro.md
+++ b/platform-docs/docs/intro.md
@@ -4,17 +4,16 @@ sidebar_position: 1
# Getting Started
-Let's discover how to use the **Gutenberg Block Editor** to build your own block editor in less than 10 minutes**.
-
+Let's discover how to use the **Gutenberg Block Editor** to build your own block editor in less than 10 minutes.
## What you'll need
- [Node.js](https://nodejs.org/en/download/) version 20.10 or above.
-- We're going to be using "vite" to setup our single page application (SPA) that contains a block editor. You can use your own setup, and your own application for this.
+- We're going to be using "Vite" to setup our single page application (SPA) that contains a block editor. You can use your own setup, and your own application for this.
## Preparing the SPA powered by Vite.
-First bootstrap a vite project using `npm create vite@latest` and pick `Vanilla` variant and `JavaScript` as a language.
+First bootstrap a Vite project using `npm create vite@latest` and pick `React` variant and `JavaScript` as a language.
Once done, you can navigate to your application folder and run it locally using `npm run dev`. Open the displayed local URL in a browser.
@@ -28,58 +27,72 @@ To build a block editor, you need to install the following dependencies:
## JSX
-We're going to be using JSX to write our UI and components. So one of the first steps we need to do is to configure our build tooling, By default vite supports JSX and and outputs the result as a React pragma. The Block editor uses React so there's no need to configure anything here but if you're using a different bundler/build tool, make sure the JSX transpilation is setup properly.
+We're going to be using JSX to write our UI and components as the block editor is built with React. Using the Vite bootstrap described above there’s no need to configure anything as it outputs the result as a React pragma. If you're using a different bundler/build tool, you may need to configure the JSX transpilation to do the same.
## Bootstrap your block editor
-It's time to render our first block editor.
+It's time to render our first block editor. We’ll do this with changes to three files – `index.html`, `src/main.jsx`, and `src/App.jsx`.
+
+First, we’ll add the base styles are for the editor UI. In `index.html` add these styles in the ``:
+```html
+
+
+```
+:::note
+
+There are more styles needed but can’t be added here because they are for the editor’s content which is in a separate document within an `
-
+
Close Modal
diff --git a/packages/components/src/number-control/index.tsx b/packages/components/src/number-control/index.tsx
index efa84879b8ff3c..6dd1af4024af7f 100644
--- a/packages/components/src/number-control/index.tsx
+++ b/packages/components/src/number-control/index.tsx
@@ -242,6 +242,7 @@ function UnforwardedNumberControl(
return stateReducerProp?.( baseState, action ) ?? baseState;
} }
size={ size }
+ __shouldNotWarnDeprecated36pxSize
suffix={
spinControls === 'custom' ? (
<>
diff --git a/packages/components/src/palette-edit/index.tsx b/packages/components/src/palette-edit/index.tsx
index a58ecbb685e514..2eb6e3bbe3b6fc 100644
--- a/packages/components/src/palette-edit/index.tsx
+++ b/packages/components/src/palette-edit/index.tsx
@@ -60,6 +60,7 @@ const DEFAULT_COLOR = '#000';
function NameInput( { value, onChange, label }: NameInputProps ) {
return (
-
-
+
+
-
+
diff --git a/packages/components/src/tree-grid/stories/index.story.tsx b/packages/components/src/tree-grid/stories/index.story.tsx
index f91ba4631d3209..e113103897dbdb 100644
--- a/packages/components/src/tree-grid/stories/index.story.tsx
+++ b/packages/components/src/tree-grid/stories/index.story.tsx
@@ -111,6 +111,7 @@ const Rows = ( {
label="Description"
hideLabelFromVision
placeholder="Description"
+ __next40pxDefaultSize
{ ...props }
/>
) }
@@ -121,6 +122,7 @@ const Rows = ( {
label="Notes"
hideLabelFromVision
placeholder="Notes"
+ __next40pxDefaultSize
{ ...props }
/>
) }
From 1168fa55ad5af9034d3d29b500d2990aae589eea Mon Sep 17 00:00:00 2001
From: Yogesh Bhutkar
Date: Thu, 12 Dec 2024 13:03:58 +0530
Subject: [PATCH 023/163] CustomSelectControl: Refactor to use Ariakit store
state for current value (#67815)
Co-authored-by: yogeshbhutkar
Co-authored-by: Mamaduka
Co-authored-by: tyxla
Co-authored-by: mirka <0mirka00@git.wordpress.org>
---
packages/components/CHANGELOG.md | 1 +
packages/components/src/custom-select-control/index.tsx | 6 +++---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index 5c8643dc08cf6c..3525216fcc4322 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -54,6 +54,7 @@
- `ResizableBox`: Make drag handles focusable ([#67305](https://github.com/WordPress/gutenberg/pull/67305)).
- `CustomSelectControl`: Update correctly when `showSelectedHint` is enabled ([#67733](https://github.com/WordPress/gutenberg/pull/67733)).
+- `CustomSelectControl`: Use `useStoreState` to get `currentValue` and avoid stale values ([#67815](https://github.com/WordPress/gutenberg/pull/67815)).
## 28.13.0 (2024-11-27)
diff --git a/packages/components/src/custom-select-control/index.tsx b/packages/components/src/custom-select-control/index.tsx
index 339944f4198722..e014e4bc642eef 100644
--- a/packages/components/src/custom-select-control/index.tsx
+++ b/packages/components/src/custom-select-control/index.tsx
@@ -149,16 +149,16 @@ function CustomSelectControl< T extends CustomSelectOption >(
);
} );
- const { value: currentValue } = store.getState();
+ const currentValue = Ariakit.useStoreState( store, 'value' );
const renderSelectedValueHint = () => {
const selectedOptionHint = options
?.map( applyOptionDeprecations )
- ?.find( ( { name } ) => store.getState().value === name )?.hint;
+ ?.find( ( { name } ) => currentValue === name )?.hint;
return (
- { store.getState().value }
+ { currentValue }
{ selectedOptionHint && (
Date: Thu, 12 Dec 2024 13:27:41 +0530
Subject: [PATCH 024/163] Visual Refactor: Add Chevron Icon for Shadows in
Global Styles (#67720)
Co-authored-by: yogeshbhutkar
Co-authored-by: Mamaduka
Co-authored-by: afercia
Co-authored-by: richtabor
Co-authored-by: jameskoster
---
.../global-styles/font-sizes/font-sizes.js | 24 +++++++------------
.../components/global-styles/shadows-panel.js | 12 ++++++----
2 files changed, 17 insertions(+), 19 deletions(-)
diff --git a/packages/edit-site/src/components/global-styles/font-sizes/font-sizes.js b/packages/edit-site/src/components/global-styles/font-sizes/font-sizes.js
index 4bda7a7b3266b5..7498dd7c78fb30 100644
--- a/packages/edit-site/src/components/global-styles/font-sizes/font-sizes.js
+++ b/packages/edit-site/src/components/global-styles/font-sizes/font-sizes.js
@@ -11,7 +11,6 @@ import {
__experimentalVStack as VStack,
__experimentalHStack as HStack,
FlexItem,
- FlexBlock,
Button,
} from '@wordpress/components';
import {
@@ -111,23 +110,18 @@ function FontSizeGroup( {
key={ size.slug }
path={ `/typography/font-sizes/${ origin }/${ size.slug }` }
>
-
+
{ size.name }
-
-
-
- { size.size }
-
-
-
+
+
diff --git a/packages/edit-site/src/components/global-styles/shadows-panel.js b/packages/edit-site/src/components/global-styles/shadows-panel.js
index 43e0c063f492b8..5df8208ebdb092 100644
--- a/packages/edit-site/src/components/global-styles/shadows-panel.js
+++ b/packages/edit-site/src/components/global-styles/shadows-panel.js
@@ -9,9 +9,9 @@ import {
Flex,
FlexItem,
} from '@wordpress/components';
-import { __, sprintf } from '@wordpress/i18n';
+import { __, sprintf, isRTL } from '@wordpress/i18n';
import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
-import { plus, shadow as shadowIcon } from '@wordpress/icons';
+import { plus, Icon, chevronLeft, chevronRight } from '@wordpress/icons';
/**
* Internal dependencies
@@ -135,9 +135,13 @@ function ShadowItem( { shadow, category } ) {
return (
- { shadow.name }
+
+ { shadow.name }
+
+
+
+
);
}
From 29978b7c3e68f14ec62bf985e7e59ef61b9be0d1 Mon Sep 17 00:00:00 2001
From: Christian Leucht
Date: Thu, 12 Dec 2024 10:28:14 +0100
Subject: [PATCH 025/163] Introduce new filter
"render_block_core_navigation_link_allowed_post_status" (#63181)
* navigation-link // introduce new filter "render_block_core_navigation_link_allowed_post_status" to align with WP_Query whitelisting post_status in frontend.
* navigation-link // add $attributes and $block as filter params.
* Update @since comment
---------
Co-authored-by: Chrico
Co-authored-by: getdave
Co-authored-by: draganescu
---
.../block-library/src/navigation-link/index.php | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/packages/block-library/src/navigation-link/index.php b/packages/block-library/src/navigation-link/index.php
index 5653e04fca88a3..81df2099dfc188 100644
--- a/packages/block-library/src/navigation-link/index.php
+++ b/packages/block-library/src/navigation-link/index.php
@@ -177,7 +177,22 @@ function render_block_core_navigation_link( $attributes, $content, $block ) {
// Don't render the block's subtree if it is a draft or if the ID does not exist.
if ( $is_post_type && $navigation_link_has_id ) {
$post = get_post( $attributes['id'] );
- if ( ! $post || 'publish' !== $post->post_status ) {
+ /**
+ * Filter allowed post_status for navigation link block to render.
+ *
+ * @since 6.8.0
+ *
+ * @param array $post_status
+ * @param array $attributes
+ * @param WP_Block $block
+ */
+ $allowed_post_status = (array) apply_filters(
+ 'render_block_core_navigation_link_allowed_post_status',
+ array( 'publish' ),
+ $attributes,
+ $block
+ );
+ if ( ! $post || ! in_array( $post->post_status, $allowed_post_status, true ) ) {
return '';
}
}
From 8277a741d81998a97f444a796e9c1757368e160e Mon Sep 17 00:00:00 2001
From: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
Date: Thu, 12 Dec 2024 18:35:18 +0900
Subject: [PATCH 026/163] Fix: Script with glob option doesn't work on Windows
(#67862)
Co-authored-by: t-hamano
Co-authored-by: sirreal
---
package.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index 4d6dc94d58a661..b799ee7aed99ba 100644
--- a/package.json
+++ b/package.json
@@ -182,8 +182,8 @@
"build:packages": "npm run --silent build:package-types && node ./bin/packages/build.js",
"postbuild:packages": " npm run --if-present --workspaces build:wp",
"build:plugin-zip": "bash ./bin/build-plugin-zip.sh",
- "clean:package-types": "tsc --build --clean && rimraf --glob './packages/*/build-types'",
- "clean:packages": "rimraf --glob './packages/*/{build,build-module,build-wp,build-style}'",
+ "clean:package-types": "tsc --build --clean && rimraf --glob \"./packages/*/build-types\"",
+ "clean:packages": "rimraf --glob \"./packages/*/{build,build-module,build-wp,build-style}\"",
"component-usage-stats": "node ./node_modules/react-scanner/bin/react-scanner -c ./react-scanner.config.js",
"dev": "cross-env NODE_ENV=development npm run build:packages && concurrently \"wp-scripts start\" \"npm run dev:packages\"",
"dev:packages": "cross-env NODE_ENV=development concurrently \"node ./bin/packages/watch.js\" \"tsc --build --watch\"",
@@ -195,7 +195,7 @@
"docs:gen": "node ./docs/tool/index.js",
"docs:theme-ref": "node ./bin/api-docs/gen-theme-reference.mjs",
"env": "wp-env",
- "fixtures:clean": "rimraf --glob 'test/integration/fixtures/blocks/*.{json,serialized.html}'",
+ "fixtures:clean": "rimraf --glob \"test/integration/fixtures/blocks/*.{json,serialized.html}\"",
"fixtures:generate": "cross-env GENERATE_MISSING_FIXTURES=y npm run test:unit test/integration/full-content/ && npm run format test/integration/fixtures/blocks/*.json",
"fixtures:regenerate": "npm-run-all fixtures:clean fixtures:generate",
"format": "wp-scripts format",
From 40022a360e19febca1067cdc26af4c9df65caba5 Mon Sep 17 00:00:00 2001
From: George Mamadashvili
Date: Thu, 12 Dec 2024 14:51:49 +0400
Subject: [PATCH 027/163] Image: Avoid link class loss when pasting for raw
transformation (#67803)
Unlinked contributors: designsimply.
Co-authored-by: Mamaduka
Co-authored-by: t-hamano
Co-authored-by: paaljoachim
Co-authored-by: talldan
Co-authored-by: greatislander
---
packages/block-library/src/image/transforms.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/block-library/src/image/transforms.js b/packages/block-library/src/image/transforms.js
index 347d2408280170..32824c372efdcb 100644
--- a/packages/block-library/src/image/transforms.js
+++ b/packages/block-library/src/image/transforms.js
@@ -59,6 +59,7 @@ const schema = ( { phrasingContentSchema } ) => ( {
...imageSchema,
a: {
attributes: [ 'href', 'rel', 'target' ],
+ classes: [ /[\w-]*/ ],
children: imageSchema,
},
figcaption: {
From 9e3bdebbc37f9abff1cd2756dae77befce6e3ddf Mon Sep 17 00:00:00 2001
From: Riad Benguella
Date: Thu, 12 Dec 2024 11:57:22 +0100
Subject: [PATCH 028/163] BoxControl: Better minimum value support (#67819)
Co-authored-by: youknowriad
Co-authored-by: jorgefilipecosta
---
packages/components/CHANGELOG.md | 4 ++++
packages/components/src/box-control/input-control.tsx | 4 +++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index 3525216fcc4322..e8ae2bc7ba6092 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -7,6 +7,10 @@
- `SelectControl`: Deprecate 36px default size ([#66898](https://github.com/WordPress/gutenberg/pull/66898)).
- `InputControl`: Deprecate 36px default size ([#66897](https://github.com/WordPress/gutenberg/pull/66897)).
+### Bug Fixes
+
+- `BoxControl`: Better respect for the `min` prop in the Range Slider ([#67819](https://github.com/WordPress/gutenberg/pull/67819)).
+
## 29.0.0 (2024-12-11)
### Breaking Changes
diff --git a/packages/components/src/box-control/input-control.tsx b/packages/components/src/box-control/input-control.tsx
index 9086cebedc2749..2e1765f518a57d 100644
--- a/packages/components/src/box-control/input-control.tsx
+++ b/packages/components/src/box-control/input-control.tsx
@@ -78,6 +78,7 @@ export default function BoxInputControl( {
setSelectedUnits,
sides,
side,
+ min = 0,
...props
}: BoxControlInputControlProps ) {
const defaultValuesToModify = getSidesToModify( side, sides );
@@ -154,6 +155,7 @@ export default function BoxInputControl( {
Date: Thu, 12 Dec 2024 12:45:06 +0100
Subject: [PATCH 029/163] Update "Call to Action" to "Call to action" (#67876)
Update "Call to Action" to "Call to action".
Co-authored-by: juanfra
Co-authored-by: jasmussen
---
.../editor/src/components/editor-help/intro-to-blocks.native.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/editor/src/components/editor-help/intro-to-blocks.native.js b/packages/editor/src/components/editor-help/intro-to-blocks.native.js
index 3dc23ec2619172..9e23a70936d4e9 100644
--- a/packages/editor/src/components/editor-help/intro-to-blocks.native.js
+++ b/packages/editor/src/components/editor-help/intro-to-blocks.native.js
@@ -71,7 +71,7 @@ const IntroToBlocks = () => {
Date: Thu, 12 Dec 2024 14:13:58 +0200
Subject: [PATCH 030/163] Storybook: Upgrade to the latest version (v8.4.7)
(#67863)
* Bump dependencies to v8.1.11
* 8.1: Move autodocs to preview tags
* Bump dependencies to v8.2.10
* Bump dependencies to v8.3.7
* Bump dependencies to v8.4.7
Co-authored-by: tyxla
Co-authored-by: ciampo
---
package-lock.json | 3883 ++++++------------------------------------
package.json | 25 +-
storybook/main.js | 4 +-
storybook/preview.js | 2 +
4 files changed, 555 insertions(+), 3359 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index de4627eb245adb..32ff2db4986512 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -33,18 +33,19 @@
"@react-native/babel-preset": "0.73.10",
"@react-native/metro-babel-transformer": "0.73.10",
"@react-native/metro-config": "0.73.4",
- "@storybook/addon-a11y": "8.0.10",
- "@storybook/addon-actions": "8.0.10",
- "@storybook/addon-controls": "8.0.10",
- "@storybook/addon-docs": "8.0.10",
- "@storybook/addon-toolbars": "8.0.10",
- "@storybook/addon-viewport": "8.0.10",
+ "@storybook/addon-a11y": "8.4.7",
+ "@storybook/addon-actions": "8.4.7",
+ "@storybook/addon-controls": "8.4.7",
+ "@storybook/addon-docs": "8.4.7",
+ "@storybook/addon-toolbars": "8.4.7",
+ "@storybook/addon-viewport": "8.4.7",
"@storybook/addon-webpack5-compiler-babel": "3.0.3",
- "@storybook/react": "8.0.10",
- "@storybook/react-webpack5": "8.0.10",
- "@storybook/source-loader": "8.0.10",
- "@storybook/test": "8.0.10",
- "@storybook/theming": "8.0.10",
+ "@storybook/react": "8.4.7",
+ "@storybook/react-webpack5": "8.4.7",
+ "@storybook/source-loader": "8.4.7",
+ "@storybook/test": "8.4.7",
+ "@storybook/theming": "8.4.7",
+ "@storybook/types": "8.4.7",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "14.3.0",
"@testing-library/react-native": "12.4.3",
@@ -149,7 +150,7 @@
"snapshot-diff": "0.10.0",
"source-map-loader": "3.0.0",
"sprintf-js": "1.1.1",
- "storybook": "8.0.10",
+ "storybook": "8.4.7",
"storybook-source-link": "2.0.9",
"strip-json-comments": "5.0.0",
"style-loader": "3.2.1",
@@ -1447,18 +1448,6 @@
}
}
},
- "node_modules/@aw-web-design/x-default-browser": {
- "version": "1.4.126",
- "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz",
- "integrity": "sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==",
- "dev": true,
- "dependencies": {
- "default-browser-id": "3.0.0"
- },
- "bin": {
- "x-default-browser": "bin/x-default-browser.js"
- }
- },
"node_modules/@axe-core/puppeteer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@axe-core/puppeteer/-/puppeteer-4.0.0.tgz",
@@ -4162,12 +4151,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/@base2/pretty-print-object": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz",
- "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==",
- "dev": true
- },
"node_modules/@bcoe/v8-coverage": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
@@ -4653,15 +4636,6 @@
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
"integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
},
- "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz",
- "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==",
- "dev": true,
- "peerDependencies": {
- "react": ">=16.8.0"
- }
- },
"node_modules/@emotion/utils": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz",
@@ -5139,12 +5113,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@fal-works/esbuild-plugin-global-externals": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz",
- "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==",
- "dev": true
- },
"node_modules/@fastify/busboy": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
@@ -6948,27 +6916,6 @@
"@tybys/wasm-util": "^0.9.0"
}
},
- "node_modules/@ndelangen/get-tarball": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz",
- "integrity": "sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==",
- "dev": true,
- "dependencies": {
- "gunzip-maybe": "^1.4.2",
- "pump": "^3.0.0",
- "tar-fs": "^2.1.1"
- }
- },
- "node_modules/@ndelangen/get-tarball/node_modules/pump": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
- "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
"node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
"version": "5.1.1-v1",
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -11388,26 +11335,28 @@
}
},
"node_modules/@storybook/addon-a11y": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.0.10.tgz",
- "integrity": "sha512-ymeTRE1uWplifWUMc3tO5lLGn4buS/hUVWKRM11SqugmxRym55B4thCJU089HAEMY+V/imiCeOE63TT+DGsk8g==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.4.7.tgz",
+ "integrity": "sha512-GpUvXp6n25U1ZSv+hmDC+05BEqxWdlWjQTb/GaboRXZQeMBlze6zckpVb66spjmmtQAIISo0eZxX1+mGcVR7lA==",
"dev": true,
"dependencies": {
- "@storybook/addon-highlight": "8.0.10",
+ "@storybook/addon-highlight": "8.4.7",
"axe-core": "^4.2.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
"node_modules/@storybook/addon-actions": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.0.10.tgz",
- "integrity": "sha512-IEuc30UAFl7Ws0GwaY/whjBnGaViVEVjmPc+MXUym2wwwJbnCbI+BKJxPoYi/I7QJb5aUNToAE6pl2pDda2g3Q==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.4.7.tgz",
+ "integrity": "sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA==",
"dev": true,
"dependencies": {
- "@storybook/core-events": "8.0.10",
"@storybook/global": "^5.0.0",
"@types/uuid": "^9.0.1",
"dequal": "^2.0.2",
@@ -11417,6 +11366,9 @@
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
"node_modules/@storybook/addon-actions/node_modules/@types/uuid": {
@@ -11426,91 +11378,49 @@
"dev": true
},
"node_modules/@storybook/addon-controls": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.0.10.tgz",
- "integrity": "sha512-MAUtIJGayNSsfn3VZ6SjQwpRkb4ky+10oVfos+xX9GQ5+7RCs+oYMuE4+aiQvvfXNdV8v0pUGPUPeUzqfJmhOA==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.7.tgz",
+ "integrity": "sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==",
"dev": true,
"dependencies": {
- "@storybook/blocks": "8.0.10",
- "lodash": "^4.17.21",
+ "@storybook/global": "^5.0.0",
+ "dequal": "^2.0.2",
"ts-dedent": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
"node_modules/@storybook/addon-docs": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.0.10.tgz",
- "integrity": "sha512-y+Agoez/hXZHKUMIZHU96T5V1v0cs4ArSNfjqDg9DPYcyQ88ihJNb6ZabIgzmEaJF/NncCW+LofWeUtkTwalkw==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.4.7.tgz",
+ "integrity": "sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.12.3",
"@mdx-js/react": "^3.0.0",
- "@storybook/blocks": "8.0.10",
- "@storybook/client-logger": "8.0.10",
- "@storybook/components": "8.0.10",
- "@storybook/csf-plugin": "8.0.10",
- "@storybook/csf-tools": "8.0.10",
- "@storybook/global": "^5.0.0",
- "@storybook/node-logger": "8.0.10",
- "@storybook/preview-api": "8.0.10",
- "@storybook/react-dom-shim": "8.0.10",
- "@storybook/theming": "8.0.10",
- "@storybook/types": "8.0.10",
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "fs-extra": "^11.1.0",
+ "@storybook/blocks": "8.4.7",
+ "@storybook/csf-plugin": "8.4.7",
+ "@storybook/react-dom-shim": "8.4.7",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "rehype-external-links": "^3.0.0",
- "rehype-slug": "^6.0.0",
"ts-dedent": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/addon-docs/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@storybook/addon-docs/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
},
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@storybook/addon-docs/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
"node_modules/@storybook/addon-highlight": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.0.10.tgz",
- "integrity": "sha512-40GB82t1e2LCCjqXcC6Z5lq1yIpA1+Yl5E2tKeggOVwg5HHAX02ESNDdBaIOlCqMkU3WKzjGPurDNOLUAbsV2g==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.4.7.tgz",
+ "integrity": "sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -11518,22 +11428,28 @@
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
"node_modules/@storybook/addon-toolbars": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.0.10.tgz",
- "integrity": "sha512-67HP6mTJU/gjRju01Z5HjeqoRiJMDlrMvMvjGBg7w5+tPNtjYqdelfe2+kcfU+Hf6dfcuqaBDwaUUGSv+RYtRQ==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.4.7.tgz",
+ "integrity": "sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==",
"dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
"node_modules/@storybook/addon-viewport": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.0.10.tgz",
- "integrity": "sha512-NJ88Nd/tXreHLyLeF3VP+b8Fu2KtUuJ0L4JYpEMmcdaejGARTrJJOU+pcZBiUqEHFeXQ8rDY8DKXhUJZQFQ1Wg==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.7.tgz",
+ "integrity": "sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==",
"dev": true,
"dependencies": {
"memoizerific": "^1.11.3"
@@ -11541,6 +11457,9 @@
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
"node_modules/@storybook/addon-webpack5-compiler-babel": {
@@ -11557,43 +11476,23 @@
}
},
"node_modules/@storybook/blocks": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.0.10.tgz",
- "integrity": "sha512-LOaxvcO2d4dT4YoWlQ0bq/c8qA3aHoqtyuvBjwbVn+359bjMtgj/91YuP9Y2+ggZZ4p+ttgvk39PcmJlNXlJsw==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.4.7.tgz",
+ "integrity": "sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.0.10",
- "@storybook/client-logger": "8.0.10",
- "@storybook/components": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/csf": "^0.1.4",
- "@storybook/docs-tools": "8.0.10",
- "@storybook/global": "^5.0.0",
- "@storybook/icons": "^1.2.5",
- "@storybook/manager-api": "8.0.10",
- "@storybook/preview-api": "8.0.10",
- "@storybook/theming": "8.0.10",
- "@storybook/types": "8.0.10",
- "@types/lodash": "^4.14.167",
- "color-convert": "^2.0.1",
- "dequal": "^2.0.2",
- "lodash": "^4.17.21",
- "markdown-to-jsx": "7.3.2",
- "memoizerific": "^1.11.3",
- "polished": "^4.2.2",
- "react-colorful": "^5.1.2",
- "telejson": "^7.2.0",
- "tocbot": "^4.20.1",
- "ts-dedent": "^2.0.0",
- "util-deprecate": "^1.0.2"
+ "@storybook/csf": "^0.1.11",
+ "@storybook/icons": "^1.2.12",
+ "ts-dedent": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "storybook": "^8.4.7"
},
"peerDependenciesMeta": {
"react": {
@@ -11604,123 +11503,22 @@
}
}
},
- "node_modules/@storybook/blocks/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@storybook/blocks/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@storybook/builder-manager": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-8.0.10.tgz",
- "integrity": "sha512-lo57jeeYuYCKYrmGOdLg25rMyiGYSTwJ+zYsQ3RvClVICjP6X0I1RCKAJDzkI0BixH6s1+w5ynD6X3PtDnhUuw==",
- "dev": true,
- "dependencies": {
- "@fal-works/esbuild-plugin-global-externals": "^2.1.2",
- "@storybook/core-common": "8.0.10",
- "@storybook/manager": "8.0.10",
- "@storybook/node-logger": "8.0.10",
- "@types/ejs": "^3.1.1",
- "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10",
- "browser-assert": "^1.2.1",
- "ejs": "^3.1.8",
- "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0",
- "esbuild-plugin-alias": "^0.2.1",
- "express": "^4.17.3",
- "fs-extra": "^11.1.0",
- "process": "^0.11.10",
- "util": "^0.12.4"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@storybook/builder-manager/node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "node_modules/@storybook/builder-webpack5": {
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.7.tgz",
+ "integrity": "sha512-O8LpsQ+4g2x5kh7rI9+jEUdX8k1a5egBQU1lbudmHchqsV0IKiVqBD9LL5Gj3wpit4vB8coSW4ZWTFBw8FQb4Q==",
"dev": true,
"dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
- }
- },
- "node_modules/@storybook/builder-webpack5": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.0.10.tgz",
- "integrity": "sha512-FrETNEPu9UcZD8yRIQhszcmdMMS73yXRbZFldeZzJ2b8lKNJG+tmqRwh5d5xEMzMrENYkDY+sXheOLSjKfvq9g==",
- "dev": true,
- "dependencies": {
- "@storybook/channels": "8.0.10",
- "@storybook/client-logger": "8.0.10",
- "@storybook/core-common": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/core-webpack": "8.0.10",
- "@storybook/node-logger": "8.0.10",
- "@storybook/preview": "8.0.10",
- "@storybook/preview-api": "8.0.10",
- "@types/node": "^18.0.0",
+ "@storybook/core-webpack": "8.4.7",
+ "@types/node": "^22.0.0",
"@types/semver": "^7.3.4",
"browser-assert": "^1.2.1",
"case-sensitive-paths-webpack-plugin": "^2.4.0",
"cjs-module-lexer": "^1.2.3",
"constants-browserify": "^1.0.0",
"css-loader": "^6.7.1",
- "es-module-lexer": "^1.4.1",
- "express": "^4.17.3",
+ "es-module-lexer": "^1.5.0",
"fork-ts-checker-webpack-plugin": "^8.0.0",
- "fs-extra": "^11.1.0",
"html-webpack-plugin": "^5.5.0",
"magic-string": "^0.30.5",
"path-browserify": "^1.0.1",
@@ -11735,12 +11533,15 @@
"webpack": "5",
"webpack-dev-middleware": "^6.1.2",
"webpack-hot-middleware": "^2.25.1",
- "webpack-virtual-modules": "^0.5.0"
+ "webpack-virtual-modules": "^0.6.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
},
+ "peerDependencies": {
+ "storybook": "^8.4.7"
+ },
"peerDependenciesMeta": {
"typescript": {
"optional": true
@@ -11782,32 +11583,6 @@
}
}
},
- "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@storybook/builder-webpack5/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
"node_modules/@storybook/builder-webpack5/node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
@@ -11836,15 +11611,6 @@
"webpack": "^5.0.0"
}
},
- "node_modules/@storybook/builder-webpack5/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
"node_modules/@storybook/builder-webpack5/node_modules/util": {
"version": "0.12.5",
"resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
@@ -11858,333 +11624,302 @@
"which-typed-array": "^1.1.2"
}
},
- "node_modules/@storybook/channels": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.0.10.tgz",
- "integrity": "sha512-3JLxfD7czlx31dAGvAYJ4J4BNE/Y2+hhj/dsV3xlQTHKVpnWknaoeYEC1a6YScyfsH6W+XmP2rzZKzH4EkLSGQ==",
+ "node_modules/@storybook/components": {
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.7.tgz",
+ "integrity": "sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==",
"dev": true,
- "dependencies": {
- "@storybook/client-logger": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/global": "^5.0.0",
- "telejson": "^7.2.0",
- "tiny-invariant": "^1.3.1"
- },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0"
}
},
- "node_modules/@storybook/cli": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.0.10.tgz",
- "integrity": "sha512-KUZEO2lyvOS2sRJEFXovt6+5b65iWsh7F8e8S1cM20fCM1rZAlWtwmoxmDVXDmyEp0wTrq4FrRxKnbo9UO518w==",
+ "node_modules/@storybook/core": {
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.7.tgz",
+ "integrity": "sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.23.0",
- "@babel/types": "^7.23.0",
- "@ndelangen/get-tarball": "^3.0.7",
- "@storybook/codemod": "8.0.10",
- "@storybook/core-common": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/core-server": "8.0.10",
- "@storybook/csf-tools": "8.0.10",
- "@storybook/node-logger": "8.0.10",
- "@storybook/telemetry": "8.0.10",
- "@storybook/types": "8.0.10",
- "@types/semver": "^7.3.4",
- "@yarnpkg/fslib": "2.10.3",
- "@yarnpkg/libzip": "2.3.0",
- "chalk": "^4.1.0",
- "commander": "^6.2.1",
- "cross-spawn": "^7.0.3",
- "detect-indent": "^6.1.0",
- "envinfo": "^7.7.3",
- "execa": "^5.0.0",
- "find-up": "^5.0.0",
- "fs-extra": "^11.1.0",
- "get-npm-tarball-url": "^2.0.3",
- "giget": "^1.0.0",
- "globby": "^11.0.2",
- "jscodeshift": "^0.15.1",
- "leven": "^3.1.0",
- "ora": "^5.4.1",
- "prettier": "^3.1.1",
- "prompts": "^2.4.0",
- "read-pkg-up": "^7.0.1",
- "semver": "^7.3.7",
- "strip-json-comments": "^3.0.1",
- "tempy": "^1.0.1",
- "tiny-invariant": "^1.3.1",
- "ts-dedent": "^2.0.0"
- },
- "bin": {
- "getstorybook": "bin/index.js",
- "sb": "bin/index.js"
+ "@storybook/csf": "^0.1.11",
+ "better-opn": "^3.0.2",
+ "browser-assert": "^1.2.1",
+ "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0",
+ "esbuild-register": "^3.5.0",
+ "jsdoc-type-pratt-parser": "^4.0.0",
+ "process": "^0.11.10",
+ "recast": "^0.23.5",
+ "semver": "^7.6.2",
+ "util": "^0.12.5",
+ "ws": "^8.2.3"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "prettier": "^2 || ^3"
+ },
+ "peerDependenciesMeta": {
+ "prettier": {
+ "optional": true
+ }
}
},
- "node_modules/@storybook/cli/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/@storybook/core-webpack": {
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.7.tgz",
+ "integrity": "sha512-Tj+CjQLpFyBJxhhMms+vbPT3+gTRAiQlrhY3L1IEVwBa3wtRMS0qjozH26d1hK4G6mUIEdwu13L54HMU/w33Sg==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
+ "@types/node": "^22.0.0",
+ "ts-dedent": "^2.0.0"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
- "node_modules/@storybook/cli/node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "node_modules/@storybook/core/node_modules/recast": {
+ "version": "0.23.9",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz",
+ "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==",
"dev": true,
"dependencies": {
- "restore-cursor": "^3.1.0"
+ "ast-types": "^0.16.1",
+ "esprima": "~4.0.0",
+ "source-map": "~0.6.1",
+ "tiny-invariant": "^1.3.3",
+ "tslib": "^2.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">= 4"
}
},
- "node_modules/@storybook/cli/node_modules/commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "node_modules/@storybook/core/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
"engines": {
- "node": ">= 6"
+ "node": ">=10"
}
},
- "node_modules/@storybook/cli/node_modules/detect-indent": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
- "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
+ "node_modules/@storybook/core/node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
"dev": true,
- "engines": {
- "node": ">=8"
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
}
},
- "node_modules/@storybook/cli/node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "node_modules/@storybook/core/node_modules/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
"engines": {
- "node": ">=10"
+ "node": ">=10.0.0"
},
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
}
},
- "node_modules/@storybook/cli/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "node_modules/@storybook/csf": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz",
+ "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type-fest": "^2.19.0"
}
},
- "node_modules/@storybook/cli/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "node_modules/@storybook/csf-plugin": {
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.4.7.tgz",
+ "integrity": "sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g==",
"dev": true,
"dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "unplugin": "^1.3.1"
},
- "engines": {
- "node": ">=14.14"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
- "node_modules/@storybook/cli/node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "node_modules/@storybook/csf/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=12.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@storybook/cli/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/cli/node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true,
- "engines": {
- "node": ">=10.17.0"
- }
+ "node_modules/@storybook/global": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz",
+ "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==",
+ "dev": true
},
- "node_modules/@storybook/cli/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "node_modules/@storybook/icons": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.3.0.tgz",
+ "integrity": "sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=14.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
}
},
- "node_modules/@storybook/cli/node_modules/jscodeshift": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz",
- "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==",
+ "node_modules/@storybook/instrumenter": {
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.7.tgz",
+ "integrity": "sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.23.0",
- "@babel/parser": "^7.23.0",
- "@babel/plugin-transform-class-properties": "^7.22.5",
- "@babel/plugin-transform-modules-commonjs": "^7.23.0",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11",
- "@babel/plugin-transform-optional-chaining": "^7.23.0",
- "@babel/plugin-transform-private-methods": "^7.22.5",
- "@babel/preset-flow": "^7.22.15",
- "@babel/preset-typescript": "^7.23.0",
- "@babel/register": "^7.22.15",
- "babel-core": "^7.0.0-bridge.0",
- "chalk": "^4.1.2",
- "flow-parser": "0.*",
- "graceful-fs": "^4.2.4",
- "micromatch": "^4.0.4",
- "neo-async": "^2.5.0",
- "node-dir": "^0.1.17",
- "recast": "^0.23.3",
- "temp": "^0.8.4",
- "write-file-atomic": "^2.3.0"
+ "@storybook/global": "^5.0.0",
+ "@vitest/utils": "^2.1.1"
},
- "bin": {
- "jscodeshift": "bin/jscodeshift.js"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "@babel/preset-env": "^7.1.6"
- },
- "peerDependenciesMeta": {
- "@babel/preset-env": {
- "optional": true
- }
+ "storybook": "^8.4.7"
}
},
- "node_modules/@storybook/cli/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "node_modules/@storybook/instrumenter/node_modules/@vitest/pretty-format": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz",
+ "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==",
"dev": true,
"dependencies": {
- "universalify": "^2.0.0"
+ "tinyrainbow": "^1.2.0"
},
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@storybook/cli/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "node_modules/@storybook/instrumenter/node_modules/@vitest/utils": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz",
+ "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==",
"dev": true,
"dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
+ "@vitest/pretty-format": "2.1.8",
+ "loupe": "^3.1.2",
+ "tinyrainbow": "^1.2.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@storybook/cli/node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "node_modules/@storybook/manager-api": {
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.7.tgz",
+ "integrity": "sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==",
"dev": true,
- "engines": {
- "node": ">=6"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0"
}
},
- "node_modules/@storybook/cli/node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "node_modules/@storybook/preset-react-webpack": {
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.7.tgz",
+ "integrity": "sha512-geTSBKyrBagVihil5MF7LkVFynbfHhCinvnbCZZqXW7M1vgcxvatunUENB+iV8eWg/0EJ+8O7scZL+BAxQ/2qg==",
"dev": true,
"dependencies": {
- "path-key": "^3.0.0"
+ "@storybook/core-webpack": "8.4.7",
+ "@storybook/react": "8.4.7",
+ "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0",
+ "@types/node": "^22.0.0",
+ "@types/semver": "^7.3.4",
+ "find-up": "^5.0.0",
+ "magic-string": "^0.30.5",
+ "react-docgen": "^7.0.0",
+ "resolve": "^1.22.8",
+ "semver": "^7.3.7",
+ "tsconfig-paths": "^4.2.0",
+ "webpack": "5"
},
"engines": {
- "node": ">=8"
+ "node": ">=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "storybook": "^8.4.7"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/@storybook/cli/node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "node_modules/@storybook/preset-react-webpack/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"dependencies": {
- "mimic-fn": "^2.1.0"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@storybook/cli/node_modules/ora": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
- "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "node_modules/@storybook/preset-react-webpack/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"dependencies": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
+ "p-locate": "^5.0.0"
},
"engines": {
"node": ">=10"
@@ -12193,7 +11928,7 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@storybook/cli/node_modules/p-locate": {
+ "node_modules/@storybook/preset-react-webpack/node_modules/p-locate": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
@@ -12208,7 +11943,7 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@storybook/cli/node_modules/path-exists": {
+ "node_modules/@storybook/preset-react-webpack/node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
@@ -12217,1295 +11952,13 @@
"node": ">=8"
}
},
- "node_modules/@storybook/cli/node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "node_modules/@storybook/preset-react-webpack/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/cli/node_modules/prettier": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
- "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
- "dev": true,
- "bin": {
- "prettier": "bin/prettier.cjs"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/@storybook/cli/node_modules/recast": {
- "version": "0.23.9",
- "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz",
- "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==",
- "dev": true,
- "dependencies": {
- "ast-types": "^0.16.1",
- "esprima": "~4.0.0",
- "source-map": "~0.6.1",
- "tiny-invariant": "^1.3.3",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/@storybook/cli/node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/cli/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/cli/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/cli/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@storybook/client-logger": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.0.10.tgz",
- "integrity": "sha512-u38SbZNAunZzxZNHMJb9jkUwFkLyWxmvp4xtiRM3u9sMUShXoTnzbw1yKrxs+kYJjg+58UQPZ1JhEBRcHt5Oww==",
- "dev": true,
- "dependencies": {
- "@storybook/global": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/codemod": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.0.10.tgz",
- "integrity": "sha512-t45jKGs/eyR/nKVX6QgRtMZSAjJo5aXWWk3B24xVbW6ywr0jt1LC100FkHG4Af8cApIfh8uUmS9X05hMG5zGGA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.23.2",
- "@babel/preset-env": "^7.23.2",
- "@babel/types": "^7.23.0",
- "@storybook/csf": "^0.1.4",
- "@storybook/csf-tools": "8.0.10",
- "@storybook/node-logger": "8.0.10",
- "@storybook/types": "8.0.10",
- "@types/cross-spawn": "^6.0.2",
- "cross-spawn": "^7.0.3",
- "globby": "^11.0.2",
- "jscodeshift": "^0.15.1",
- "lodash": "^4.17.21",
- "prettier": "^3.1.1",
- "recast": "^0.23.5",
- "tiny-invariant": "^1.3.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/codemod/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@storybook/codemod/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/codemod/node_modules/jscodeshift": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz",
- "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.23.0",
- "@babel/parser": "^7.23.0",
- "@babel/plugin-transform-class-properties": "^7.22.5",
- "@babel/plugin-transform-modules-commonjs": "^7.23.0",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11",
- "@babel/plugin-transform-optional-chaining": "^7.23.0",
- "@babel/plugin-transform-private-methods": "^7.22.5",
- "@babel/preset-flow": "^7.22.15",
- "@babel/preset-typescript": "^7.23.0",
- "@babel/register": "^7.22.15",
- "babel-core": "^7.0.0-bridge.0",
- "chalk": "^4.1.2",
- "flow-parser": "0.*",
- "graceful-fs": "^4.2.4",
- "micromatch": "^4.0.4",
- "neo-async": "^2.5.0",
- "node-dir": "^0.1.17",
- "recast": "^0.23.3",
- "temp": "^0.8.4",
- "write-file-atomic": "^2.3.0"
- },
- "bin": {
- "jscodeshift": "bin/jscodeshift.js"
- },
- "peerDependencies": {
- "@babel/preset-env": "^7.1.6"
- },
- "peerDependenciesMeta": {
- "@babel/preset-env": {
- "optional": true
- }
- }
- },
- "node_modules/@storybook/codemod/node_modules/prettier": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
- "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
- "dev": true,
- "bin": {
- "prettier": "bin/prettier.cjs"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/@storybook/codemod/node_modules/recast": {
- "version": "0.23.9",
- "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz",
- "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==",
- "dev": true,
- "dependencies": {
- "ast-types": "^0.16.1",
- "esprima": "~4.0.0",
- "source-map": "~0.6.1",
- "tiny-invariant": "^1.3.3",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/@storybook/codemod/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/components": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.0.10.tgz",
- "integrity": "sha512-eo+oDDcm35YBB3dtDYDfcjJypNVPmRty85VWpAOBsJXpwp/fgU8csx0DM3KmhrQ4cWLf2WzcFowJwI1w+J88Sw==",
- "dev": true,
- "dependencies": {
- "@radix-ui/react-slot": "^1.0.2",
- "@storybook/client-logger": "8.0.10",
- "@storybook/csf": "^0.1.4",
- "@storybook/global": "^5.0.0",
- "@storybook/icons": "^1.2.5",
- "@storybook/theming": "8.0.10",
- "@storybook/types": "8.0.10",
- "memoizerific": "^1.11.3",
- "util-deprecate": "^1.0.2"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/@storybook/core-common": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.0.10.tgz",
- "integrity": "sha512-hsFlPieputaDQoxstnPa3pykTc4bUwEDgCHf8U43+/Z7qmLOQ9fpG+2CFW930rsCRghYpPreOvsmhY7lsGKWLQ==",
- "dev": true,
- "dependencies": {
- "@storybook/core-events": "8.0.10",
- "@storybook/csf-tools": "8.0.10",
- "@storybook/node-logger": "8.0.10",
- "@storybook/types": "8.0.10",
- "@yarnpkg/fslib": "2.10.3",
- "@yarnpkg/libzip": "2.3.0",
- "chalk": "^4.1.0",
- "cross-spawn": "^7.0.3",
- "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0",
- "esbuild-register": "^3.5.0",
- "execa": "^5.0.0",
- "file-system-cache": "2.3.0",
- "find-cache-dir": "^3.0.0",
- "find-up": "^5.0.0",
- "fs-extra": "^11.1.0",
- "glob": "^10.0.0",
- "handlebars": "^4.7.7",
- "lazy-universal-dotenv": "^4.0.0",
- "node-fetch": "^2.0.0",
- "picomatch": "^2.3.0",
- "pkg-dir": "^5.0.0",
- "pretty-hrtime": "^1.0.3",
- "resolve-from": "^5.0.0",
- "semver": "^7.3.7",
- "tempy": "^1.0.1",
- "tiny-invariant": "^1.3.1",
- "ts-dedent": "^2.0.0",
- "util": "^0.12.4"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/core-common/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@storybook/core-common/node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/@storybook/core-common/node_modules/find-cache-dir": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
- "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
- "dev": true,
- "dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
- }
- },
- "node_modules/@storybook/core-common/node_modules/find-cache-dir/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/core-common/node_modules/find-cache-dir/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/core-common/node_modules/find-cache-dir/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/core-common/node_modules/find-cache-dir/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/core-common/node_modules/find-cache-dir/node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/core-common/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/core-common/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@storybook/core-common/node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/core-common/node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
- "dev": true,
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@storybook/core-common/node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true,
- "engines": {
- "node": ">=10.17.0"
- }
- },
- "node_modules/@storybook/core-common/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/core-common/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@storybook/core-common/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/core-common/node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/core-common/node_modules/make-dir/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@storybook/core-common/node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@storybook/core-common/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@storybook/core-common/node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/@storybook/core-common/node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/core-common/node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/core-common/node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/core-common/node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@storybook/core-common/node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/core-common/node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/core-common/node_modules/pkg-dir": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
- "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
- "dev": true,
- "dependencies": {
- "find-up": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@storybook/core-common/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/core-common/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@storybook/core-common/node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
- }
- },
- "node_modules/@storybook/core-events": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.0.10.tgz",
- "integrity": "sha512-TuHPS6p5ZNr4vp4butLb4R98aFx0NRYCI/7VPhJEUH5rPiqNzE3PZd8DC8rnVxavsJ+jO1/y+egNKXRYkEcoPQ==",
- "dev": true,
- "dependencies": {
- "ts-dedent": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/core-server": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.0.10.tgz",
- "integrity": "sha512-HYDw2QFBxg1X/d6g0rUhirOB5Jq6g90HBnyrZzxKoqKWJCNsCADSgM+h9HgtUw0jA97qBpIqmNO9n3mXFPWU/Q==",
- "dev": true,
- "dependencies": {
- "@aw-web-design/x-default-browser": "1.4.126",
- "@babel/core": "^7.23.9",
- "@discoveryjs/json-ext": "^0.5.3",
- "@storybook/builder-manager": "8.0.10",
- "@storybook/channels": "8.0.10",
- "@storybook/core-common": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/csf": "^0.1.4",
- "@storybook/csf-tools": "8.0.10",
- "@storybook/docs-mdx": "3.0.0",
- "@storybook/global": "^5.0.0",
- "@storybook/manager": "8.0.10",
- "@storybook/manager-api": "8.0.10",
- "@storybook/node-logger": "8.0.10",
- "@storybook/preview-api": "8.0.10",
- "@storybook/telemetry": "8.0.10",
- "@storybook/types": "8.0.10",
- "@types/detect-port": "^1.3.0",
- "@types/node": "^18.0.0",
- "@types/pretty-hrtime": "^1.0.0",
- "@types/semver": "^7.3.4",
- "better-opn": "^3.0.2",
- "chalk": "^4.1.0",
- "cli-table3": "^0.6.1",
- "compression": "^1.7.4",
- "detect-port": "^1.3.0",
- "express": "^4.17.3",
- "fs-extra": "^11.1.0",
- "globby": "^11.0.2",
- "ip": "^2.0.1",
- "lodash": "^4.17.21",
- "open": "^8.4.0",
- "pretty-hrtime": "^1.0.3",
- "prompts": "^2.4.0",
- "read-pkg-up": "^7.0.1",
- "semver": "^7.3.7",
- "telejson": "^7.2.0",
- "tiny-invariant": "^1.3.1",
- "ts-dedent": "^2.0.0",
- "util": "^0.12.4",
- "util-deprecate": "^1.0.2",
- "watchpack": "^2.2.0",
- "ws": "^8.2.3"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/core-server/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@storybook/core-server/node_modules/ip": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz",
- "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==",
- "dev": true
- },
- "node_modules/@storybook/core-server/node_modules/is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/core-server/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@storybook/core-server/node_modules/open": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
- "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
- "dev": true,
- "dependencies": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/core-server/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@storybook/core-server/node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
- }
- },
- "node_modules/@storybook/core-server/node_modules/watchpack": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
- "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
- "dev": true,
- "dependencies": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/@storybook/core-server/node_modules/ws": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
- "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
- "dev": true,
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/@storybook/core-webpack": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.0.10.tgz",
- "integrity": "sha512-nfhdhulKk0BTQA2e5cuoEpu+mdZawMr7DNnpc29gkTl8sRsED+4TR5HTjWUVCRqMb/a1UNbY4QVe7ozM/rVNdQ==",
- "dev": true,
- "dependencies": {
- "@storybook/core-common": "8.0.10",
- "@storybook/node-logger": "8.0.10",
- "@storybook/types": "8.0.10",
- "@types/node": "^18.0.0",
- "ts-dedent": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/csf": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz",
- "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^2.19.0"
- }
- },
- "node_modules/@storybook/csf-plugin": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.0.10.tgz",
- "integrity": "sha512-0EsyEx/06sCjI8sn40r7cABtBU1vUKPMPD+S5mJiZymm73BgdARj0qZOlLoK2LP+t2pcaB/Cn7KX/uyhhv7M2g==",
- "dev": true,
- "dependencies": {
- "@storybook/csf-tools": "8.0.10",
- "unplugin": "^1.3.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/csf-tools": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.0.10.tgz",
- "integrity": "sha512-xUc6fVIKoCujf/7JZhkYjrVXeNsTSoDrZFNmqLEmtfktJVqYdXY4LuSAtlBmAIyETi09ULTuuVexrcKFwjzuBA==",
- "dev": true,
- "dependencies": {
- "@babel/generator": "^7.23.0",
- "@babel/parser": "^7.23.0",
- "@babel/traverse": "^7.23.2",
- "@babel/types": "^7.23.0",
- "@storybook/csf": "^0.1.4",
- "@storybook/types": "8.0.10",
- "fs-extra": "^11.1.0",
- "recast": "^0.23.5",
- "ts-dedent": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/csf-tools/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@storybook/csf-tools/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@storybook/csf-tools/node_modules/recast": {
- "version": "0.23.9",
- "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz",
- "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==",
- "dev": true,
- "dependencies": {
- "ast-types": "^0.16.1",
- "esprima": "~4.0.0",
- "source-map": "~0.6.1",
- "tiny-invariant": "^1.3.3",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/@storybook/csf-tools/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@storybook/csf/node_modules/type-fest": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
- "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
- "dev": true,
- "engines": {
- "node": ">=12.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/docs-mdx": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-3.0.0.tgz",
- "integrity": "sha512-NmiGXl2HU33zpwTv1XORe9XG9H+dRUC1Jl11u92L4xr062pZtrShLmD4VKIsOQujxhhOrbxpwhNOt+6TdhyIdQ==",
- "dev": true
- },
- "node_modules/@storybook/docs-tools": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.0.10.tgz",
- "integrity": "sha512-rg9KS81vEh13VMr4mAgs+7L4kYqoRtG7kVfV1WHxzJxjR3wYcVR0kP9gPTWV4Xha/TA3onHu9sxKxMTWha0urQ==",
- "dev": true,
- "dependencies": {
- "@storybook/core-common": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/preview-api": "8.0.10",
- "@storybook/types": "8.0.10",
- "@types/doctrine": "^0.0.3",
- "assert": "^2.1.0",
- "doctrine": "^3.0.0",
- "lodash": "^4.17.21"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/docs-tools/node_modules/assert": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
- "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "is-nan": "^1.3.2",
- "object-is": "^1.1.5",
- "object.assign": "^4.1.4",
- "util": "^0.12.5"
- }
- },
- "node_modules/@storybook/docs-tools/node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@storybook/docs-tools/node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
- }
- },
- "node_modules/@storybook/global": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz",
- "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==",
- "dev": true
- },
- "node_modules/@storybook/icons": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.3.0.tgz",
- "integrity": "sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==",
- "dev": true,
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
- }
- },
- "node_modules/@storybook/instrumenter": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.0.10.tgz",
- "integrity": "sha512-6IYjWeQFA5x68xRoW5dU4yAc1Hwq1ZBkZbXVgJbr5LJw5x+y8eKdZzIaOmSsSKOI96R7J5YWWd2WA1Q0nRurtg==",
- "dev": true,
- "dependencies": {
- "@storybook/channels": "8.0.10",
- "@storybook/client-logger": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/global": "^5.0.0",
- "@storybook/preview-api": "8.0.10",
- "@vitest/utils": "^1.3.1",
- "util": "^0.12.4"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/instrumenter/node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
- }
- },
- "node_modules/@storybook/manager": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-8.0.10.tgz",
- "integrity": "sha512-bojGglUQNry48L4siURc2zQKswavLzMh69rqsfL3ZXx+i+USfRfB7593azTlaZh0q6HO4bUAjB24RfQCyifLLQ==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/manager-api": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.0.10.tgz",
- "integrity": "sha512-LLu6YKQLWf5QB3h3RO8IevjLrSOew7aidIQPr9DIr9xC8wA7N2fQabr+qrJdE306p3cHZ0nzhYNYZxSjm4Dvdw==",
- "dev": true,
- "dependencies": {
- "@storybook/channels": "8.0.10",
- "@storybook/client-logger": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/csf": "^0.1.4",
- "@storybook/global": "^5.0.0",
- "@storybook/icons": "^1.2.5",
- "@storybook/router": "8.0.10",
- "@storybook/theming": "8.0.10",
- "@storybook/types": "8.0.10",
- "dequal": "^2.0.2",
- "lodash": "^4.17.21",
- "memoizerific": "^1.11.3",
- "store2": "^2.14.2",
- "telejson": "^7.2.0",
- "ts-dedent": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/node-logger": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.0.10.tgz",
- "integrity": "sha512-UMmaUaA3VOX/mKLsSvOnbZre2/1tZ6hazA6H0eAnClKb51jRD1AJrsBYK+uHr/CAp7t710bB5U8apPov7hayDw==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/preset-react-webpack": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.0.10.tgz",
- "integrity": "sha512-+I0x8snLl9sfc3xXh51YLXwp0Km4Jhri+JJeT2r+zSI3k/fdu5bLz5NFPcxDmRm5ZPpaQyiLc2Mge4txMkFsZw==",
- "dev": true,
- "dependencies": {
- "@storybook/core-webpack": "8.0.10",
- "@storybook/docs-tools": "8.0.10",
- "@storybook/node-logger": "8.0.10",
- "@storybook/react": "8.0.10",
- "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0",
- "@types/node": "^18.0.0",
- "@types/semver": "^7.3.4",
- "find-up": "^5.0.0",
- "fs-extra": "^11.1.0",
- "magic-string": "^0.30.5",
- "react-docgen": "^7.0.0",
- "resolve": "^1.22.8",
- "semver": "^7.3.7",
- "tsconfig-paths": "^4.2.0",
- "webpack": "5"
- },
- "engines": {
- "node": ">=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@storybook/preset-react-webpack/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@storybook/preset-react-webpack/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@storybook/preset-react-webpack/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/preset-react-webpack/node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/preset-react-webpack/node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/preset-react-webpack/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node": ">=4"
}
},
"node_modules/@storybook/preset-react-webpack/node_modules/tsconfig-paths": {
@@ -13522,78 +11975,31 @@
"node": ">=6"
}
},
- "node_modules/@storybook/preset-react-webpack/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@storybook/preview": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.0.10.tgz",
- "integrity": "sha512-op7gZqop8PSFyPA4tc1Zds8jG6VnskwpYUUsa44pZoEez9PKEFCf4jE+7AQwbBS3hnuCb0CKBfASN8GRyoznbw==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
"node_modules/@storybook/preview-api": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.0.10.tgz",
- "integrity": "sha512-uZ6btF7Iloz9TnDcKLQ5ydi2YK0cnulv/8FLQhBCwSrzLLLb+T2DGz0cAeuWZEvMUNWNmkWJ9PAFQFs09/8p/Q==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.7.tgz",
+ "integrity": "sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==",
"dev": true,
- "dependencies": {
- "@storybook/channels": "8.0.10",
- "@storybook/client-logger": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/csf": "^0.1.4",
- "@storybook/global": "^5.0.0",
- "@storybook/types": "8.0.10",
- "@types/qs": "^6.9.5",
- "dequal": "^2.0.2",
- "lodash": "^4.17.21",
- "memoizerific": "^1.11.3",
- "qs": "^6.10.0",
- "tiny-invariant": "^1.3.1",
- "ts-dedent": "^2.0.0",
- "util-deprecate": "^1.0.2"
- },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0"
}
},
"node_modules/@storybook/react": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.0.10.tgz",
- "integrity": "sha512-/MIMc02TNmiNXDzk55dm9+ujfNE5LVNeqqK+vxXWLlCZ0aXRAd1/ZLYeRFuYLgEETB7mh7IP8AXjvM68NX5HYg==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.7.tgz",
+ "integrity": "sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.0.10",
- "@storybook/docs-tools": "8.0.10",
+ "@storybook/components": "8.4.7",
"@storybook/global": "^5.0.0",
- "@storybook/preview-api": "8.0.10",
- "@storybook/react-dom-shim": "8.0.10",
- "@storybook/types": "8.0.10",
- "@types/escodegen": "^0.0.6",
- "@types/estree": "^0.0.51",
- "@types/node": "^18.0.0",
- "acorn": "^7.4.1",
- "acorn-jsx": "^5.3.1",
- "acorn-walk": "^7.2.0",
- "escodegen": "^2.1.0",
- "html-tags": "^3.1.0",
- "lodash": "^4.17.21",
- "prop-types": "^15.7.2",
- "react-element-to-jsx-string": "^15.0.0",
- "semver": "^7.3.7",
- "ts-dedent": "^2.0.0",
- "type-fest": "~2.19",
- "util-deprecate": "^1.0.2"
+ "@storybook/manager-api": "8.4.7",
+ "@storybook/preview-api": "8.4.7",
+ "@storybook/react-dom-shim": "8.4.7",
+ "@storybook/theming": "8.4.7"
},
"engines": {
"node": ">=18.0.0"
@@ -13603,11 +12009,16 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "@storybook/test": "8.4.7",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "storybook": "^8.4.7",
"typescript": ">= 4.2.x"
},
"peerDependenciesMeta": {
+ "@storybook/test": {
+ "optional": true
+ },
"typescript": {
"optional": true
}
@@ -13756,29 +12167,30 @@
}
},
"node_modules/@storybook/react-dom-shim": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.0.10.tgz",
- "integrity": "sha512-3x8EWEkZebpWpp1pwXEzdabGINwOQt8odM5+hsOlDRtFZBmUqmmzK0rtn7orlcGlOXO4rd6QuZj4Tc5WV28dVQ==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.7.tgz",
+ "integrity": "sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==",
"dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "storybook": "^8.4.7"
}
},
"node_modules/@storybook/react-webpack5": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.0.10.tgz",
- "integrity": "sha512-KqQTYiFBTfWJOKP4SxirXRNLYCaLxFlDmEyUjQHuBbA03fEnvTYlCR7Kv5leArvBTiMpat2IfPqXlc048PKFRw==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.7.tgz",
+ "integrity": "sha512-T9GLqlsP4It4El7cC8rSkBPRWvORAsTDULeWlO36RST2TrYnmBOUytsi22mk7cAAAVhhD6rTrs1YdqWRMpfa1w==",
"dev": true,
"dependencies": {
- "@storybook/builder-webpack5": "8.0.10",
- "@storybook/preset-react-webpack": "8.0.10",
- "@storybook/react": "8.0.10",
- "@types/node": "^18.0.0"
+ "@storybook/builder-webpack5": "8.4.7",
+ "@storybook/preset-react-webpack": "8.4.7",
+ "@storybook/react": "8.4.7",
+ "@types/node": "^22.0.0"
},
"engines": {
"node": ">=18.0.0"
@@ -13788,8 +12200,9 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "storybook": "^8.4.7",
"typescript": ">= 4.2.x"
},
"peerDependenciesMeta": {
@@ -13798,66 +12211,23 @@
}
}
},
- "node_modules/@storybook/react/node_modules/@types/estree": {
- "version": "0.0.51",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
- "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
- "dev": true
- },
- "node_modules/@storybook/react/node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/@storybook/react/node_modules/type-fest": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
- "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
- "dev": true,
- "engines": {
- "node": ">=12.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@storybook/router": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/router/-/router-8.0.10.tgz",
- "integrity": "sha512-AZhgiet+EK0ZsPbaDgbbVTAHW2LAMCP1z/Un2uMBbdDeD0Ys29Af47AbEj/Ome5r1cqasLvzq2WXJlVXPNB0Zw==",
- "dev": true,
- "dependencies": {
- "@storybook/client-logger": "8.0.10",
- "memoizerific": "^1.11.3",
- "qs": "^6.10.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- }
- },
"node_modules/@storybook/source-loader": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-8.0.10.tgz",
- "integrity": "sha512-bv9FRPzELjcoMJLWLDqkUNh1zY0DiCgcvM+9qsZva8pxAD4fzrX+mgCS2vZVJHRg8wMAhw/ymdXixDUodHAvsw==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-8.4.7.tgz",
+ "integrity": "sha512-DrsYGGfNbbqlMzkhbLoNyNqrPa4QIkZ6O7FJ8Z/8jWb0cerQH2N6JW6k12ZnXgs8dO2Z33+iSEDIV8odh0E0PA==",
"dev": true,
"dependencies": {
- "@storybook/csf": "^0.1.4",
- "@storybook/types": "8.0.10",
+ "@storybook/csf": "^0.1.11",
+ "es-toolkit": "^1.22.0",
"estraverse": "^5.2.0",
- "lodash": "^4.17.21",
"prettier": "^3.1.1"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
"node_modules/@storybook/source-loader/node_modules/estraverse": {
@@ -13884,87 +12254,52 @@
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/@storybook/telemetry": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-8.0.10.tgz",
- "integrity": "sha512-s4Uc+KZQkdmD2d+64Qf8wYknhQZwmjf2CxjIjv9b4KLsU/nyfDheK7Fzd1jhBKb2UQUlLW5HhZkBgs1RsZcDHA==",
+ "node_modules/@storybook/test": {
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.7.tgz",
+ "integrity": "sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.0.10",
- "@storybook/core-common": "8.0.10",
- "@storybook/csf-tools": "8.0.10",
- "chalk": "^4.1.0",
- "detect-package-manager": "^2.0.1",
- "fetch-retry": "^5.0.2",
- "fs-extra": "^11.1.0",
- "read-pkg-up": "^7.0.1"
+ "@storybook/csf": "^0.1.11",
+ "@storybook/global": "^5.0.0",
+ "@storybook/instrumenter": "8.4.7",
+ "@testing-library/dom": "10.4.0",
+ "@testing-library/jest-dom": "6.5.0",
+ "@testing-library/user-event": "14.5.2",
+ "@vitest/expect": "2.0.5",
+ "@vitest/spy": "2.0.5"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
- }
- },
- "node_modules/@storybook/telemetry/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
},
- "engines": {
- "node": ">=14.14"
+ "peerDependencies": {
+ "storybook": "^8.4.7"
}
},
- "node_modules/@storybook/telemetry/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "node_modules/@storybook/test/node_modules/@testing-library/dom": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz",
+ "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==",
"dev": true,
"dependencies": {
- "universalify": "^2.0.0"
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^5.0.1",
+ "aria-query": "5.3.0",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.9",
+ "lz-string": "^1.5.0",
+ "pretty-format": "^27.0.2"
},
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@storybook/telemetry/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
"engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@storybook/test": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.0.10.tgz",
- "integrity": "sha512-VqjzKJiOCjaZ0CjLeKygYk8uetiaiKbpIox+BrND9GtpEBHcRZA5AeFY2P1aSCOhsaDwuh4KRBxJWFug7DhWGQ==",
- "dev": true,
- "dependencies": {
- "@storybook/client-logger": "8.0.10",
- "@storybook/core-events": "8.0.10",
- "@storybook/instrumenter": "8.0.10",
- "@storybook/preview-api": "8.0.10",
- "@testing-library/dom": "^9.3.4",
- "@testing-library/jest-dom": "^6.4.2",
- "@testing-library/user-event": "^14.5.2",
- "@vitest/expect": "1.3.1",
- "@vitest/spy": "^1.3.1",
- "util": "^0.12.4"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
+ "node": ">=18"
}
},
"node_modules/@storybook/test/node_modules/@testing-library/jest-dom": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz",
- "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz",
+ "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==",
"dev": true,
"dependencies": {
"@adobe/css-tools": "^4.4.0",
@@ -13981,6 +12316,25 @@
"yarn": ">=1"
}
},
+ "node_modules/@storybook/test/node_modules/@testing-library/jest-dom/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/test/node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz",
+ "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==",
+ "dev": true
+ },
"node_modules/@storybook/test/node_modules/@testing-library/user-event": {
"version": "14.5.2",
"resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz",
@@ -13995,42 +12349,55 @@
}
},
"node_modules/@storybook/test/node_modules/aria-query": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
- "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+ "dev": true,
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/@storybook/test/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
- "node": ">= 0.4"
+ "node": ">=8"
}
},
- "node_modules/@storybook/test/node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "node_modules/@storybook/test/node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
},
"engines": {
- "node": ">=8"
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "node_modules/@storybook/test/node_modules/dom-accessibility-api": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz",
- "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==",
- "dev": true
- },
- "node_modules/@storybook/test/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "node_modules/@storybook/test/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/@storybook/test/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
"node_modules/@storybook/test/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -14043,60 +12410,30 @@
"node": ">=8"
}
},
- "node_modules/@storybook/test/node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
- }
- },
"node_modules/@storybook/theming": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.0.10.tgz",
- "integrity": "sha512-7NHt7bMC7lPkwz9KdDpa6DkLoQZz5OV6jsx/qY91kcdLo1rpnRPAiVlJvmWesFxi1oXOpVDpHHllWzf8KDBv8A==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.7.tgz",
+ "integrity": "sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==",
"dev": true,
- "dependencies": {
- "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
- "@storybook/client-logger": "8.0.10",
- "@storybook/global": "^5.0.0",
- "memoizerific": "^1.11.3"
- },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "react": {
- "optional": true
- },
- "react-dom": {
- "optional": true
- }
+ "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0"
}
},
"node_modules/@storybook/types": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.0.10.tgz",
- "integrity": "sha512-S/hKS7+SqNnYIehwxdQ4M2nnlfGDdYWAXdtPCVJCmS+YF2amgAxeuisiHbUg7eypds6VL0Oxk/j2nPEHOHk9pg==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.4.7.tgz",
+ "integrity": "sha512-zuf0uPFjODB9Ls9/lqXnb1YsDKFuaASLOpTzpRlz9amFtTepo1dB0nVF9ZWcseTgGs7UxA4+ZR2SZrduXw/ihw==",
"dev": true,
- "dependencies": {
- "@storybook/channels": "8.0.10",
- "@types/express": "^4.7.0",
- "file-system-cache": "2.3.0"
- },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0"
}
},
"node_modules/@stylistic/stylelint-plugin": {
@@ -14949,43 +13286,10 @@
"@types/node": "*"
}
},
- "node_modules/@types/cross-spawn": {
- "version": "6.0.6",
- "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz",
- "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/detect-port": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.5.tgz",
- "integrity": "sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==",
- "dev": true
- },
"node_modules/@types/doctrine": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz",
- "integrity": "sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==",
- "dev": true
- },
- "node_modules/@types/ejs": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz",
- "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==",
- "dev": true
- },
- "node_modules/@types/emscripten": {
- "version": "1.39.13",
- "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz",
- "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==",
- "dev": true
- },
- "node_modules/@types/escodegen": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz",
- "integrity": "sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==",
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz",
+ "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==",
"dev": true
},
"node_modules/@types/eslint": {
@@ -15075,15 +13379,6 @@
"resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.45.tgz",
"integrity": "sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ=="
},
- "node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "dev": true,
- "dependencies": {
- "@types/unist": "*"
- }
- },
"node_modules/@types/highlight-words-core": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@types/highlight-words-core/-/highlight-words-core-1.2.1.tgz",
@@ -15261,12 +13556,11 @@
}
},
"node_modules/@types/node": {
- "version": "18.19.59",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.59.tgz",
- "integrity": "sha512-vizm2EqwV/7Zay+A6J3tGl9Lhr7CjZe2HmWS988sefiEmsyP9CeXEleho6i4hJk/8UtZAo0bWN4QPZZr83RxvQ==",
- "license": "MIT",
+ "version": "22.10.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz",
+ "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
"dependencies": {
- "undici-types": "~5.26.4"
+ "undici-types": "~6.20.0"
}
},
"node_modules/@types/node-forge": {
@@ -15318,12 +13612,6 @@
"integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==",
"dev": true
},
- "node_modules/@types/pretty-hrtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==",
- "dev": true
- },
"node_modules/@types/prop-types": {
"version": "15.7.4",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz",
@@ -16164,12 +14452,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz",
- "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==",
- "dev": true
- },
"node_modules/@use-gesture/core": {
"version": "10.3.1",
"resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz",
@@ -16187,41 +14469,54 @@
}
},
"node_modules/@vitest/expect": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.3.1.tgz",
- "integrity": "sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz",
+ "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==",
"dev": true,
"dependencies": {
- "@vitest/spy": "1.3.1",
- "@vitest/utils": "1.3.1",
- "chai": "^4.3.10"
+ "@vitest/spy": "2.0.5",
+ "@vitest/utils": "2.0.5",
+ "chai": "^5.1.1",
+ "tinyrainbow": "^1.2.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/pretty-format": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz",
+ "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==",
+ "dev": true,
+ "dependencies": {
+ "tinyrainbow": "^1.2.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/spy": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.3.1.tgz",
- "integrity": "sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz",
+ "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==",
"dev": true,
"dependencies": {
- "tinyspy": "^2.2.0"
+ "tinyspy": "^3.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/utils": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.3.1.tgz",
- "integrity": "sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz",
+ "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==",
"dev": true,
"dependencies": {
- "diff-sequences": "^29.6.3",
+ "@vitest/pretty-format": "2.0.5",
"estree-walker": "^3.0.3",
- "loupe": "^2.3.7",
- "pretty-format": "^29.7.0"
+ "loupe": "^3.1.1",
+ "tinyrainbow": "^1.2.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
@@ -17571,59 +15866,6 @@
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
},
- "node_modules/@yarnpkg/esbuild-plugin-pnp": {
- "version": "3.0.0-rc.15",
- "resolved": "https://registry.npmjs.org/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz",
- "integrity": "sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==",
- "dev": true,
- "dependencies": {
- "tslib": "^2.4.0"
- },
- "engines": {
- "node": ">=14.15.0"
- },
- "peerDependencies": {
- "esbuild": ">=0.10.0"
- }
- },
- "node_modules/@yarnpkg/fslib": {
- "version": "2.10.3",
- "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz",
- "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==",
- "dev": true,
- "dependencies": {
- "@yarnpkg/libzip": "^2.3.0",
- "tslib": "^1.13.0"
- },
- "engines": {
- "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0"
- }
- },
- "node_modules/@yarnpkg/fslib/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/@yarnpkg/libzip": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz",
- "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==",
- "dev": true,
- "dependencies": {
- "@types/emscripten": "^1.39.6",
- "tslib": "^1.13.0"
- },
- "engines": {
- "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0"
- }
- },
- "node_modules/@yarnpkg/libzip/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
"node_modules/@yarnpkg/lockfile": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
@@ -17734,15 +15976,6 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "node_modules/acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/add-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
@@ -17750,15 +15983,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/address": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
- "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
"node_modules/adm-zip": {
"version": "0.5.9",
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz",
@@ -18020,12 +16244,6 @@
"node": ">= 8"
}
},
- "node_modules/app-root-dir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz",
- "integrity": "sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==",
- "dev": true
- },
"node_modules/app-root-path": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz",
@@ -18861,12 +17079,12 @@
}
},
"node_modules/assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
"dev": true,
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
"node_modules/assign-symbols": {
@@ -20560,30 +18778,19 @@
"integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw=="
},
"node_modules/chai": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz",
- "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz",
+ "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==",
"dev": true,
"dependencies": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.3",
- "deep-eql": "^4.1.3",
- "get-func-name": "^2.0.2",
- "loupe": "^2.3.6",
- "pathval": "^1.1.1",
- "type-detect": "^4.1.0"
+ "assertion-error": "^2.0.1",
+ "check-error": "^2.1.1",
+ "deep-eql": "^5.0.1",
+ "loupe": "^3.1.0",
+ "pathval": "^2.0.0"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/chai/node_modules/type-detect": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz",
- "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
"node_modules/chalk": {
@@ -20673,15 +18880,12 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
},
"node_modules/check-error": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
- "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
+ "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
"dev": true,
- "dependencies": {
- "get-func-name": "^2.0.2"
- },
"engines": {
- "node": "*"
+ "node": ">= 16"
}
},
"node_modules/check-node-version": {
@@ -20956,24 +19160,6 @@
"safe-buffer": "^5.0.1"
}
},
- "node_modules/citty": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
- "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
- "dev": true,
- "dependencies": {
- "consola": "^3.2.3"
- }
- },
- "node_modules/citty/node_modules/consola": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
- "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
- "dev": true,
- "engines": {
- "node": "^14.18.0 || >=16.10.0"
- }
- },
"node_modules/cjs-module-lexer": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
@@ -21064,50 +19250,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cli-table3": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
- "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0"
- },
- "engines": {
- "node": "10.* || >= 12.*"
- },
- "optionalDependencies": {
- "@colors/colors": "1.5.0"
- }
- },
- "node_modules/cli-table3/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/cli-table3/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-table3/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/cli-truncate": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
@@ -21725,12 +19867,6 @@
"node": ">=0.8.0"
}
},
- "node_modules/confbox": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
- "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
- "dev": true
- },
"node_modules/configstore": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
@@ -23507,13 +21643,10 @@
"dev": true
},
"node_modules/deep-eql": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
- "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
+ "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
"dev": true,
- "dependencies": {
- "type-detect": "^4.0.0"
- },
"engines": {
"node": ">=6"
}
@@ -23894,12 +22027,6 @@
"node": ">= 0.4"
}
},
- "node_modules/defu": {
- "version": "6.1.4",
- "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
- "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
- "dev": true
- },
"node_modules/degenerator": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
@@ -24118,136 +22245,6 @@
"resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
"integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
},
- "node_modules/detect-package-manager": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz",
- "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==",
- "dev": true,
- "dependencies": {
- "execa": "^5.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/detect-package-manager/node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/detect-package-manager/node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/detect-package-manager/node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true,
- "engines": {
- "node": ">=10.17.0"
- }
- },
- "node_modules/detect-package-manager/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/detect-package-manager/node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/detect-package-manager/node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/detect-package-manager/node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/detect-package-manager/node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/detect-port": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz",
- "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==",
- "dev": true,
- "dependencies": {
- "address": "^1.0.1",
- "debug": "4"
- },
- "bin": {
- "detect": "bin/detect-port.js",
- "detect-port": "bin/detect-port.js"
- },
- "engines": {
- "node": ">= 4.0.0"
- }
- },
"node_modules/devtools-protocol": {
"version": "0.0.1367902",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz",
@@ -24449,15 +22446,6 @@
"url": "https://dotenvx.com"
}
},
- "node_modules/dotenv-expand": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
- "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/dset": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
@@ -25017,9 +23005,9 @@
"dev": true
},
"node_modules/es-module-lexer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz",
- "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w=="
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw=="
},
"node_modules/es-set-tostringtag": {
"version": "2.0.1",
@@ -25058,6 +23046,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/es-toolkit": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.29.0.tgz",
+ "integrity": "sha512-GjTll+E6APcfAQA09D89HdT8Qn2Yb+TeDSDBTMcxAo+V+w1amAtCI15LJu4YPH/UCPoSo/F47Gr1LIM0TE0lZA==",
+ "dev": true
+ },
"node_modules/es6-error": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
@@ -25102,12 +23096,6 @@
"@esbuild/win32-x64": "0.18.20"
}
},
- "node_modules/esbuild-plugin-alias": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz",
- "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==",
- "dev": true
- },
"node_modules/esbuild-register": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz",
@@ -26679,12 +24667,6 @@
"node": "^12.20 || >= 14.13"
}
},
- "node_modules/fetch-retry": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz",
- "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==",
- "dev": true
- },
"node_modules/figgy-pudding": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
@@ -26715,51 +24697,6 @@
"node": "^10.12.0 || >=12.0.0"
}
},
- "node_modules/file-system-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz",
- "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==",
- "dev": true,
- "dependencies": {
- "fs-extra": "11.1.1",
- "ramda": "0.29.0"
- }
- },
- "node_modules/file-system-cache/node_modules/fs-extra": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
- "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/file-system-cache/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/file-system-cache/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
"node_modules/file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
@@ -27856,15 +25793,6 @@
"node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/get-func-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
- "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/get-intrinsic": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
@@ -27891,15 +25819,6 @@
"node": ">=6"
}
},
- "node_modules/get-npm-tarball-url": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz",
- "integrity": "sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==",
- "dev": true,
- "engines": {
- "node": ">=12.17"
- }
- },
"node_modules/get-own-enumerable-property-symbols": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
@@ -28109,34 +26028,6 @@
"safe-buffer": "^5.1.1"
}
},
- "node_modules/giget": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz",
- "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==",
- "dev": true,
- "dependencies": {
- "citty": "^0.1.6",
- "consola": "^3.2.3",
- "defu": "^6.1.4",
- "node-fetch-native": "^1.6.3",
- "nypm": "^0.3.8",
- "ohash": "^1.1.3",
- "pathe": "^1.1.2",
- "tar": "^6.2.0"
- },
- "bin": {
- "giget": "dist/cli.mjs"
- }
- },
- "node_modules/giget/node_modules/consola": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
- "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
- "dev": true,
- "engines": {
- "node": "^14.18.0 || >=16.10.0"
- }
- },
"node_modules/git-raw-commits": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz",
@@ -28235,12 +26126,6 @@
"license": "MIT",
"optional": true
},
- "node_modules/github-slugger": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
- "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==",
- "dev": true
- },
"node_modules/glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
@@ -28474,38 +26359,6 @@
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
},
- "node_modules/gunzip-maybe": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz",
- "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==",
- "dev": true,
- "dependencies": {
- "browserify-zlib": "^0.1.4",
- "is-deflate": "^1.0.0",
- "is-gzip": "^1.0.0",
- "peek-stream": "^1.1.0",
- "pumpify": "^1.3.3",
- "through2": "^2.0.3"
- },
- "bin": {
- "gunzip-maybe": "bin.js"
- }
- },
- "node_modules/gunzip-maybe/node_modules/browserify-zlib": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
- "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==",
- "dev": true,
- "dependencies": {
- "pako": "~0.2.0"
- }
- },
- "node_modules/gunzip-maybe/node_modules/pako": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
- "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==",
- "dev": true
- },
"node_modules/handle-thing": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
@@ -28755,45 +26608,6 @@
"node": ">= 0.4"
}
},
- "node_modules/hast-util-heading-rank": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz",
- "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==",
- "dev": true,
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-is-element": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
- "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
- "dev": true,
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-string": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz",
- "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==",
- "dev": true,
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -29871,18 +27685,6 @@
"node": ">=8"
}
},
- "node_modules/is-absolute-url": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz",
- "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-accessor-descriptor": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz",
@@ -30082,12 +27884,6 @@
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz",
"integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg=="
},
- "node_modules/is-deflate": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz",
- "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==",
- "dev": true
- },
"node_modules/is-descriptor": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
@@ -30181,15 +27977,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-gzip": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz",
- "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-hexadecimal": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz",
@@ -30250,22 +28037,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-nan": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
- "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-negative-zero": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
@@ -32289,20 +30060,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/lazy-universal-dotenv": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz",
- "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==",
- "dev": true,
- "dependencies": {
- "app-root-dir": "^1.0.2",
- "dotenv": "^16.0.0",
- "dotenv-expand": "^10.0.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/lazystream": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
@@ -34617,13 +32374,10 @@
}
},
"node_modules/loupe": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
- "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
- "dev": true,
- "dependencies": {
- "get-func-name": "^2.0.1"
- }
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz",
+ "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==",
+ "dev": true
},
"node_modules/lower-case": {
"version": "2.0.2",
@@ -35204,18 +32958,6 @@
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz",
"integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q=="
},
- "node_modules/markdown-to-jsx": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz",
- "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- },
- "peerDependencies": {
- "react": ">= 0.14.0"
- }
- },
"node_modules/markdownlint": {
"version": "0.25.1",
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.25.1.tgz",
@@ -36542,30 +34284,6 @@
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
"dev": true
},
- "node_modules/mlly": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz",
- "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.14.0",
- "pathe": "^1.1.2",
- "pkg-types": "^1.2.1",
- "ufo": "^1.5.4"
- }
- },
- "node_modules/mlly/node_modules/acorn": {
- "version": "8.14.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
- "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/mock-match-media": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/mock-match-media/-/mock-match-media-0.4.2.tgz",
@@ -37190,12 +34908,6 @@
}
}
},
- "node_modules/node-fetch-native": {
- "version": "1.6.4",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
- "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==",
- "dev": true
- },
"node_modules/node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -38473,169 +36185,6 @@
"node": ">=12"
}
},
- "node_modules/nypm": {
- "version": "0.3.12",
- "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.12.tgz",
- "integrity": "sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==",
- "dev": true,
- "dependencies": {
- "citty": "^0.1.6",
- "consola": "^3.2.3",
- "execa": "^8.0.1",
- "pathe": "^1.1.2",
- "pkg-types": "^1.2.0",
- "ufo": "^1.5.4"
- },
- "bin": {
- "nypm": "dist/cli.mjs"
- },
- "engines": {
- "node": "^14.16.0 || >=16.10.0"
- }
- },
- "node_modules/nypm/node_modules/consola": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
- "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
- "dev": true,
- "engines": {
- "node": "^14.18.0 || >=16.10.0"
- }
- },
- "node_modules/nypm/node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": ">=16.17"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/nypm/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
- "dev": true,
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/nypm/node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
- "dev": true,
- "engines": {
- "node": ">=16.17.0"
- }
- },
- "node_modules/nypm/node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/nypm/node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/nypm/node_modules/npm-run-path": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
- "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
- "dev": true,
- "dependencies": {
- "path-key": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/nypm/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/nypm/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/nypm/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/nypm/node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ob1": {
"version": "0.80.5",
"resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.5.tgz",
@@ -38842,12 +36391,6 @@
"integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==",
"dev": true
},
- "node_modules/ohash": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz",
- "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==",
- "dev": true
- },
"node_modules/on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -40081,19 +37624,13 @@
"node": ">=4"
}
},
- "node_modules/pathe": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
- "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
- "dev": true
- },
"node_modules/pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
+ "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
"dev": true,
"engines": {
- "node": "*"
+ "node": ">= 14.16"
}
},
"node_modules/pbkdf2": {
@@ -40112,17 +37649,6 @@
"node": ">=0.12"
}
},
- "node_modules/peek-stream": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz",
- "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "duplexify": "^3.5.0",
- "through2": "^2.0.3"
- }
- },
"node_modules/pegjs": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz",
@@ -40227,17 +37753,6 @@
"node": ">=4"
}
},
- "node_modules/pkg-types": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz",
- "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==",
- "dev": true,
- "dependencies": {
- "confbox": "^0.1.8",
- "mlly": "^1.7.2",
- "pathe": "^1.1.2"
- }
- },
"node_modules/platform": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz",
@@ -41150,15 +38665,6 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
},
- "node_modules/pretty-hrtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/proc-log": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz",
@@ -41706,16 +39212,6 @@
"node": ">=8"
}
},
- "node_modules/ramda": {
- "version": "0.29.0",
- "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz",
- "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/ramda"
- }
- },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -41949,12 +39445,6 @@
"typescript": ">= 4.3.x"
}
},
- "node_modules/react-docgen/node_modules/@types/doctrine": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz",
- "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==",
- "dev": true
- },
"node_modules/react-docgen/node_modules/doctrine": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
@@ -41994,27 +39484,6 @@
"react": "^18.3.1"
}
},
- "node_modules/react-element-to-jsx-string": {
- "version": "15.0.0",
- "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz",
- "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==",
- "dev": true,
- "dependencies": {
- "@base2/pretty-print-object": "1.0.1",
- "is-plain-object": "5.0.0",
- "react-is": "18.1.0"
- },
- "peerDependencies": {
- "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0",
- "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0"
- }
- },
- "node_modules/react-element-to-jsx-string/node_modules/react-is": {
- "version": "18.1.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz",
- "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==",
- "dev": true
- },
"node_modules/react-freeze": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz",
@@ -42437,9 +39906,9 @@
}
},
"node_modules/react-remove-scroll-bar": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz",
- "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==",
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz",
+ "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==",
"dependencies": {
"react-style-singleton": "^2.2.1",
"tslib": "^2.0.0"
@@ -43088,137 +40557,6 @@
"regjsparser": "bin/parser"
}
},
- "node_modules/rehype-external-links": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz",
- "integrity": "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==",
- "dev": true,
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "hast-util-is-element": "^3.0.0",
- "is-absolute-url": "^4.0.0",
- "space-separated-tokens": "^2.0.0",
- "unist-util-visit": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-external-links/node_modules/@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
- "dev": true
- },
- "node_modules/rehype-external-links/node_modules/unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
- "dev": true,
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-external-links/node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
- "dev": true,
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-external-links/node_modules/unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
- "dev": true,
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-slug": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz",
- "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==",
- "dev": true,
- "dependencies": {
- "@types/hast": "^3.0.0",
- "github-slugger": "^2.0.0",
- "hast-util-heading-rank": "^3.0.0",
- "hast-util-to-string": "^3.0.0",
- "unist-util-visit": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-slug/node_modules/@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
- "dev": true
- },
- "node_modules/rehype-slug/node_modules/unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
- "dev": true,
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-slug/node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
- "dev": true,
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-slug/node_modules/unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
- "dev": true,
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/relateurl": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
@@ -45409,16 +42747,6 @@
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
"deprecated": "See https://github.com/lydell/source-map-url#deprecated"
},
- "node_modules/space-separated-tokens": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/spacetrim": {
"version": "0.11.59",
"resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.59.tgz",
@@ -45732,27 +43060,30 @@
"node": ">= 0.4"
}
},
- "node_modules/store2": {
- "version": "2.14.3",
- "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz",
- "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==",
- "dev": true
- },
"node_modules/storybook": {
- "version": "8.0.10",
- "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.0.10.tgz",
- "integrity": "sha512-9/4oxISopLyr5xz7Du27mmQgcIfB7UTLlNzkK4IklWTiSgsOgYgZpsmIwymoXNtkrvh+QsqskdcUP1C7nNiEtw==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.7.tgz",
+ "integrity": "sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==",
"dev": true,
"dependencies": {
- "@storybook/cli": "8.0.10"
+ "@storybook/core": "8.4.7"
},
"bin": {
- "sb": "index.js",
- "storybook": "index.js"
+ "getstorybook": "bin/index.cjs",
+ "sb": "bin/index.cjs",
+ "storybook": "bin/index.cjs"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "prettier": "^2 || ^3"
+ },
+ "peerDependenciesMeta": {
+ "prettier": {
+ "optional": true
+ }
}
},
"node_modules/storybook-source-link": {
@@ -46838,6 +44169,7 @@
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
"integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
"dev": true,
+ "optional": true,
"dependencies": {
"chownr": "^1.1.1",
"mkdirp-classic": "^0.5.2",
@@ -46851,6 +44183,7 @@
"integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
"dev": true,
"license": "MIT",
+ "optional": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -46970,15 +44303,6 @@
"node": ">= 8"
}
},
- "node_modules/telejson": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz",
- "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==",
- "dev": true,
- "dependencies": {
- "memoizerific": "^1.11.3"
- }
- },
"node_modules/temp": {
"version": "0.8.4",
"resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz",
@@ -47030,126 +44354,6 @@
"rimraf": "bin.js"
}
},
- "node_modules/tempy": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz",
- "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==",
- "dev": true,
- "dependencies": {
- "del": "^6.0.0",
- "is-stream": "^2.0.0",
- "temp-dir": "^2.0.0",
- "type-fest": "^0.16.0",
- "unique-string": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/tempy/node_modules/del": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
- "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
- "dev": true,
- "dependencies": {
- "globby": "^11.0.1",
- "graceful-fs": "^4.2.4",
- "is-glob": "^4.0.1",
- "is-path-cwd": "^2.2.0",
- "is-path-inside": "^3.0.2",
- "p-map": "^4.0.0",
- "rimraf": "^3.0.2",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/tempy/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/tempy/node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tempy/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/tempy/node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/tempy/node_modules/temp-dir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
- "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tempy/node_modules/type-fest": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
- "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/terminal-link": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.0.0.tgz",
@@ -47410,10 +44614,19 @@
"integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
"dev": true
},
+ "node_modules/tinyrainbow": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz",
+ "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/tinyspy": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz",
- "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
+ "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
"dev": true,
"engines": {
"node": ">=14.0.0"
@@ -47530,12 +44743,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/tocbot": {
- "version": "4.32.2",
- "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.32.2.tgz",
- "integrity": "sha512-UbVZNXX79LUqMzsnSTwE/YF/PYc2pg3G77D/jcolHd6lmw+oklzfcLtHSsmWBhOf1wfWD1HfYzdjGQef1VcQgg==",
- "dev": true
- },
"node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -47999,12 +45206,6 @@
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
},
- "node_modules/ufo": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
- "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
- "dev": true
- },
"node_modules/uglify-js": {
"version": "3.13.7",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.7.tgz",
@@ -48077,9 +45278,9 @@
}
},
"node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
},
"node_modules/unherit": {
"version": "1.1.1",
@@ -48302,12 +45503,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/unplugin/node_modules/webpack-virtual-modules": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
- "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
- "dev": true
- },
"node_modules/unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
@@ -50117,9 +47312,9 @@
"dev": true
},
"node_modules/webpack-dev-middleware/node_modules/schema-utils": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz",
+ "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
@@ -50128,7 +47323,7 @@
"ajv-keywords": "^5.1.0"
},
"engines": {
- "node": ">= 12.13.0"
+ "node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
@@ -50404,9 +47599,9 @@
}
},
"node_modules/webpack-virtual-modules": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
- "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+ "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
"dev": true
},
"node_modules/webpack/node_modules/@types/estree": {
diff --git a/package.json b/package.json
index b799ee7aed99ba..07d725c4a3edcb 100644
--- a/package.json
+++ b/package.json
@@ -42,18 +42,19 @@
"@react-native/babel-preset": "0.73.10",
"@react-native/metro-babel-transformer": "0.73.10",
"@react-native/metro-config": "0.73.4",
- "@storybook/addon-a11y": "8.0.10",
- "@storybook/addon-actions": "8.0.10",
- "@storybook/addon-controls": "8.0.10",
- "@storybook/addon-docs": "8.0.10",
- "@storybook/addon-toolbars": "8.0.10",
- "@storybook/addon-viewport": "8.0.10",
+ "@storybook/addon-a11y": "8.4.7",
+ "@storybook/addon-actions": "8.4.7",
+ "@storybook/addon-controls": "8.4.7",
+ "@storybook/addon-docs": "8.4.7",
+ "@storybook/addon-toolbars": "8.4.7",
+ "@storybook/addon-viewport": "8.4.7",
"@storybook/addon-webpack5-compiler-babel": "3.0.3",
- "@storybook/react": "8.0.10",
- "@storybook/react-webpack5": "8.0.10",
- "@storybook/source-loader": "8.0.10",
- "@storybook/test": "8.0.10",
- "@storybook/theming": "8.0.10",
+ "@storybook/react": "8.4.7",
+ "@storybook/react-webpack5": "8.4.7",
+ "@storybook/source-loader": "8.4.7",
+ "@storybook/test": "8.4.7",
+ "@storybook/theming": "8.4.7",
+ "@storybook/types": "8.4.7",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "14.3.0",
"@testing-library/react-native": "12.4.3",
@@ -158,7 +159,7 @@
"snapshot-diff": "0.10.0",
"source-map-loader": "3.0.0",
"sprintf-js": "1.1.1",
- "storybook": "8.0.10",
+ "storybook": "8.4.7",
"storybook-source-link": "2.0.9",
"strip-json-comments": "5.0.0",
"style-loader": "3.2.1",
diff --git a/storybook/main.js b/storybook/main.js
index 8a1203938fba59..29f24c223ccdfe 100644
--- a/storybook/main.js
+++ b/storybook/main.js
@@ -62,9 +62,7 @@ module.exports = {
name: '@storybook/react-webpack5',
options: {},
},
- docs: {
- autodocs: true,
- },
+ docs: {},
typescript: {
reactDocgen: 'react-docgen-typescript',
},
diff --git a/storybook/preview.js b/storybook/preview.js
index e173ab3ed1e268..b29fceec846ffe 100644
--- a/storybook/preview.js
+++ b/storybook/preview.js
@@ -155,3 +155,5 @@ export const parameters = {
},
sourceLinkPrefix: 'https://github.com/WordPress/gutenberg/blob/trunk/',
};
+
+export const tags = [ 'autodocs' ];
From f1f59887a8aa3b6d3fa5f7163338fec7bee1b79b Mon Sep 17 00:00:00 2001
From: Andrei Draganescu
Date: Thu, 12 Dec 2024 15:24:30 +0200
Subject: [PATCH 031/163] Make Write mode and Zoom out block options menus
consistent (#67749)
* hide block settings slot in content only and zoom out, allow copy in content only
* adds tests for counting the length of the options menu
* remove duplicate condition, zoom out makes sections content only
Co-authored-by: draganescu
Co-authored-by: talldan
Co-authored-by: rinkalpagdar
Co-authored-by: richtabor
---
.../block-settings-dropdown.js | 37 +++++++++----------
.../editor/src/components/provider/index.js | 19 ++--------
.../editor/various/write-design-mode.spec.js | 11 ++++++
test/e2e/specs/site-editor/zoom-out.spec.js | 33 +++++++++++++++++
4 files changed, 64 insertions(+), 36 deletions(-)
diff --git a/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js b/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js
index b9caee7c338beb..ade9ddd5ec1657 100644
--- a/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js
+++ b/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js
@@ -65,7 +65,6 @@ export function BlockSettingsDropdown( {
selectedBlockClientIds,
openedBlockSettingsMenu,
isContentOnly,
- isZoomOut,
} = useSelect(
( select ) => {
const {
@@ -76,7 +75,6 @@ export function BlockSettingsDropdown( {
getBlockAttributes,
getOpenedBlockSettingsMenu,
getBlockEditingMode,
- isZoomOut: _isZoomOut,
} = unlock( select( blockEditorStore ) );
const { getActiveBlockVariation } = select( blocksStore );
@@ -101,7 +99,6 @@ export function BlockSettingsDropdown( {
openedBlockSettingsMenu: getOpenedBlockSettingsMenu(),
isContentOnly:
getBlockEditingMode( firstBlockClientId ) === 'contentOnly',
- isZoomOut: _isZoomOut(),
};
},
[ firstBlockClientId ]
@@ -253,15 +250,13 @@ export function BlockSettingsDropdown( {
clientId={ firstBlockClientId }
/>
) }
- { ( ! isContentOnly || isZoomOut ) && (
-
- ) }
+
{ canDuplicate && (
) }
-
+ { ! isContentOnly && (
+
+ ) }
{ typeof children === 'function'
? children( { onClose } )
: Children.map( ( child ) =>
diff --git a/packages/editor/src/components/provider/index.js b/packages/editor/src/components/provider/index.js
index 68d7bd1d3f4f5b..4b8a3b6b23c251 100644
--- a/packages/editor/src/components/provider/index.js
+++ b/packages/editor/src/components/provider/index.js
@@ -13,7 +13,6 @@ import {
BlockEditorProvider,
BlockContextProvider,
privateApis as blockEditorPrivateApis,
- store as blockEditorStore,
} from '@wordpress/block-editor';
import { store as noticesStore } from '@wordpress/notices';
import { privateApis as editPatternsPrivateApis } from '@wordpress/patterns';
@@ -207,14 +206,6 @@ export const ExperimentalEditorProvider = withRegistryProvider(
[ post.type ]
);
- const isZoomOut = useSelect( ( select ) => {
- const { isZoomOut: _isZoomOut } = unlock(
- select( blockEditorStore )
- );
-
- return _isZoomOut();
- } );
-
const shouldRenderTemplate = !! template && mode !== 'post-only';
const rootLevelPost = shouldRenderTemplate ? template : post;
const defaultBlockContext = useMemo( () => {
@@ -367,13 +358,9 @@ export const ExperimentalEditorProvider = withRegistryProvider(
{ children }
{ ! settings.isPreviewMode && (
<>
- { ! isZoomOut && (
- <>
-
-
-
- >
- ) }
+
+
+
{ mode === 'template-locked' && (
) }
diff --git a/test/e2e/specs/editor/various/write-design-mode.spec.js b/test/e2e/specs/editor/various/write-design-mode.spec.js
index 2892b4aea89e91..fb3e231e6fff60 100644
--- a/test/e2e/specs/editor/various/write-design-mode.spec.js
+++ b/test/e2e/specs/editor/various/write-design-mode.spec.js
@@ -100,6 +100,17 @@ test.describe( 'Write/Design mode', () => {
expect( await getSelectedBlock() ).toEqual( sectionClientId );
+ // open the block toolbar more settings menu
+ await page.getByLabel( 'Block tools' ).getByLabel( 'Options' ).click();
+
+ // get the length of the options menu
+ const optionsMenu = page
+ .getByRole( 'menu', { name: 'Options' } )
+ .getByRole( 'menuitem' );
+
+ // we expect 3 items in the options menu
+ await expect( optionsMenu ).toHaveCount( 3 );
+
// We should be able to select the paragraph block and write in it.
await paragraph.click();
await page.keyboard.type( ' something' );
diff --git a/test/e2e/specs/site-editor/zoom-out.spec.js b/test/e2e/specs/site-editor/zoom-out.spec.js
index 77d121e1999397..493b566671f8be 100644
--- a/test/e2e/specs/site-editor/zoom-out.spec.js
+++ b/test/e2e/specs/site-editor/zoom-out.spec.js
@@ -234,6 +234,39 @@ test.describe( 'Zoom Out', () => {
await expect( fourthSectionStart ).not.toBeInViewport();
} );
+ test( 'Zoom out selected section has three items in options menu', async ( {
+ page,
+ } ) => {
+ // open the inserter
+ await page
+ .getByRole( 'button', {
+ name: 'Block Inserter',
+ exact: true,
+ } )
+ .click();
+ // switch to patterns tab
+ await page.getByRole( 'tab', { name: 'Patterns' } ).click();
+ // search for a pattern
+ await page
+ .getByRole( 'searchbox', { name: 'Search' } )
+ .fill( 'Footer' );
+ // click on Footer with colophon, 3 columns
+ await page
+ .getByRole( 'option', { name: 'Footer with colophon, 3 columns' } )
+ .click();
+
+ // open the block toolbar more settings menu
+ await page.getByLabel( 'Block tools' ).getByLabel( 'Options' ).click();
+
+ // get the length of the options menu
+ const optionsMenu = page
+ .getByRole( 'menu', { name: 'Options' } )
+ .getByRole( 'menuitem' );
+
+ // we expect 3 items in the options menu
+ await expect( optionsMenu ).toHaveCount( 3 );
+ } );
+
test( 'Zoom Out cannot be activated when the section root is missing', async ( {
page,
editor,
From 0ef8a35b55e07b633292fe25805994f6843d5af1 Mon Sep 17 00:00:00 2001
From: VATALIYA PARTH <88878890+PARTHVATALIYA@users.noreply.github.com>
Date: Thu, 12 Dec 2024 19:17:36 +0530
Subject: [PATCH 032/163] Widget Editor: Fix: close button is not working
(#65443)
* Fix: close button is not working
* Remove unnecessary CSS
---------
Unlinked contributors: parthVataliya16.
Co-authored-by: PARTHVATALIYA
Co-authored-by: draganescu
Co-authored-by: t-hamano
Co-authored-by: miminari
---
.../edit-widgets/src/components/layout/style.scss | 7 -------
.../secondary-sidebar/inserter-sidebar.js | 13 +------------
2 files changed, 1 insertion(+), 19 deletions(-)
diff --git a/packages/edit-widgets/src/components/layout/style.scss b/packages/edit-widgets/src/components/layout/style.scss
index 14d74e4db9248c..71b1049adf196d 100644
--- a/packages/edit-widgets/src/components/layout/style.scss
+++ b/packages/edit-widgets/src/components/layout/style.scss
@@ -7,13 +7,6 @@
}
}
-.edit-widgets-layout__inserter-panel-header {
- padding-top: $grid-unit-10;
- padding-right: $grid-unit-10;
- display: flex;
- justify-content: flex-end;
-}
-
.edit-widgets-layout__inserter-panel-content {
// Leave space for the close button
height: calc(100% - #{$button-size} - #{$grid-unit-10});
diff --git a/packages/edit-widgets/src/components/secondary-sidebar/inserter-sidebar.js b/packages/edit-widgets/src/components/secondary-sidebar/inserter-sidebar.js
index 4b26dd306ea0a3..72e04e5f62034c 100644
--- a/packages/edit-widgets/src/components/secondary-sidebar/inserter-sidebar.js
+++ b/packages/edit-widgets/src/components/secondary-sidebar/inserter-sidebar.js
@@ -1,8 +1,6 @@
/**
* WordPress dependencies
*/
-import { Button, VisuallyHidden } from '@wordpress/components';
-import { close } from '@wordpress/icons';
import { __experimentalLibrary as Library } from '@wordpress/block-editor';
import {
useViewportMatch,
@@ -10,7 +8,6 @@ import {
} from '@wordpress/compose';
import { useCallback, useRef } from '@wordpress/element';
import { useDispatch } from '@wordpress/data';
-import { __ } from '@wordpress/i18n';
/**
* Internal dependencies
@@ -28,7 +25,6 @@ export default function InserterSidebar() {
return setIsInserterOpened( false );
}, [ setIsInserterOpened ] );
- const TagName = ! isMobileViewport ? VisuallyHidden : 'div';
const [ inserterDialogRef, inserterDialogProps ] = useDialog( {
onClose: closeInserter,
focusOnMount: true,
@@ -42,14 +38,6 @@ export default function InserterSidebar() {
{ ...inserterDialogProps }
className="edit-widgets-layout__inserter-panel"
>
-
-
-
From 3de8dfbebe63daa6e23d5441dfe61996bc78c7b2 Mon Sep 17 00:00:00 2001
From: Bernie Reiter <96308+ockham@users.noreply.github.com>
Date: Thu, 12 Dec 2024 16:50:08 +0100
Subject: [PATCH 033/163] Block Hooks: Apply to Post Content (on frontend and
in editor) (#67272)
Co-authored-by: ockham
Co-authored-by: gziolo
---
backport-changelog/6.8/7898.md | 3 +
lib/compat/wordpress-6.8/blocks.php | 162 ++++++++++++++++++
.../block-library/src/post-content/index.php | 23 +++
3 files changed, 188 insertions(+)
create mode 100644 backport-changelog/6.8/7898.md
diff --git a/backport-changelog/6.8/7898.md b/backport-changelog/6.8/7898.md
new file mode 100644
index 00000000000000..d824c5da82ec1b
--- /dev/null
+++ b/backport-changelog/6.8/7898.md
@@ -0,0 +1,3 @@
+https://github.com/WordPress/wordpress-develop/pull/7898
+
+* https://github.com/WordPress/gutenberg/pull/67272
diff --git a/lib/compat/wordpress-6.8/blocks.php b/lib/compat/wordpress-6.8/blocks.php
index e0f5082bfce8dc..8e176e58c8d7f5 100644
--- a/lib/compat/wordpress-6.8/blocks.php
+++ b/lib/compat/wordpress-6.8/blocks.php
@@ -149,3 +149,165 @@ function gutenberg_stabilize_experimental_block_supports( $args ) {
}
add_filter( 'register_block_type_args', 'gutenberg_stabilize_experimental_block_supports', PHP_INT_MAX, 1 );
+
+function gutenberg_apply_block_hooks_to_post_content( $content ) {
+ // The `the_content` filter does not provide the post that the content is coming from.
+ // However, we can infer it by calling `get_post()`, which will return the current post
+ // if no post ID is provided.
+ return apply_block_hooks_to_content( $content, get_post(), 'insert_hooked_blocks' );
+}
+// We need to apply this filter before `do_blocks` (which is hooked to `the_content` at priority 9).
+add_filter( 'the_content', 'gutenberg_apply_block_hooks_to_post_content', 8 );
+
+/**
+ * Hooks into the REST API response for the Posts endpoint and adds the first and last inner blocks.
+ *
+ * @since 6.6.0
+ * @since 6.8.0 Support non-`wp_navigation` post types.
+ *
+ * @param WP_REST_Response $response The response object.
+ * @param WP_Post $post Post object.
+ * @return WP_REST_Response The response object.
+ */
+function gutenberg_insert_hooked_blocks_into_rest_response( $response, $post ) {
+ if ( empty( $response->data['content']['raw'] ) || empty( $response->data['content']['rendered'] ) ) {
+ return $response;
+ }
+
+ $attributes = array();
+ $ignored_hooked_blocks = get_post_meta( $post->ID, '_wp_ignored_hooked_blocks', true );
+ if ( ! empty( $ignored_hooked_blocks ) ) {
+ $ignored_hooked_blocks = json_decode( $ignored_hooked_blocks, true );
+ $attributes['metadata'] = array(
+ 'ignoredHookedBlocks' => $ignored_hooked_blocks,
+ );
+ }
+
+ if ( 'wp_navigation' === $post->post_type ) {
+ $wrapper_block_type = 'core/navigation';
+ } else {
+ $wrapper_block_type = 'core/post-content';
+ }
+
+ $content = get_comment_delimited_block_content(
+ $wrapper_block_type,
+ $attributes,
+ $response->data['content']['raw']
+ );
+
+ $content = apply_block_hooks_to_content(
+ $content,
+ $post,
+ 'insert_hooked_blocks_and_set_ignored_hooked_blocks_metadata'
+ );
+
+ // Remove mock block wrapper.
+ $content = remove_serialized_parent_block( $content );
+
+ $response->data['content']['raw'] = $content;
+
+ // No need to inject hooked blocks twice.
+ $priority = has_filter( 'the_content', 'apply_block_hooks_to_content' );
+ if ( false !== $priority ) {
+ remove_filter( 'the_content', 'apply_block_hooks_to_content', $priority );
+ }
+
+ /** This filter is documented in wp-includes/post-template.php */
+ $response->data['content']['rendered'] = apply_filters( 'the_content', $content );
+
+ // Add back the filter.
+ if ( false !== $priority ) {
+ add_filter( 'the_content', 'apply_block_hooks_to_content', $priority );
+ }
+
+ return $response;
+}
+add_filter( 'rest_prepare_page', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 );
+add_filter( 'rest_prepare_post', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 );
+
+/**
+ * Updates the wp_postmeta with the list of ignored hooked blocks
+ * where the inner blocks are stored as post content.
+ *
+ * @since 6.6.0
+ * @since 6.8.0 Support other post types. (Previously, it was limited to `wp_navigation` only.)
+ * @access private
+ *
+ * @param stdClass $post Post object.
+ * @return stdClass The updated post object.
+ */
+function gutenberg_update_ignored_hooked_blocks_postmeta( $post ) {
+ /*
+ * In this scenario the user has likely tried to create a new post object via the REST API.
+ * In which case we won't have a post ID to work with and store meta against.
+ */
+ if ( empty( $post->ID ) ) {
+ return $post;
+ }
+
+ /*
+ * Skip meta generation when consumers intentionally update specific fields
+ * and omit the content update.
+ */
+ if ( ! isset( $post->post_content ) ) {
+ return $post;
+ }
+
+ /*
+ * Skip meta generation if post type is not set.
+ */
+ if ( ! isset( $post->post_type ) ) {
+ return $post;
+ }
+
+ $attributes = array();
+
+ $ignored_hooked_blocks = get_post_meta( $post->ID, '_wp_ignored_hooked_blocks', true );
+ if ( ! empty( $ignored_hooked_blocks ) ) {
+ $ignored_hooked_blocks = json_decode( $ignored_hooked_blocks, true );
+ $attributes['metadata'] = array(
+ 'ignoredHookedBlocks' => $ignored_hooked_blocks,
+ );
+ }
+
+ if ( 'wp_navigation' === $post->post_type ) {
+ $wrapper_block_type = 'core/navigation';
+ } else {
+ $wrapper_block_type = 'core/post-content';
+ }
+
+ $markup = get_comment_delimited_block_content(
+ $wrapper_block_type,
+ $attributes,
+ $post->post_content
+ );
+
+ $existing_post = get_post( $post->ID );
+ // Merge the existing post object with the updated post object to pass to the block hooks algorithm for context.
+ $context = (object) array_merge( (array) $existing_post, (array) $post );
+ $context = new WP_Post( $context ); // Convert to WP_Post object.
+ $serialized_block = apply_block_hooks_to_content( $markup, $context, 'set_ignored_hooked_blocks_metadata' );
+ $root_block = parse_blocks( $serialized_block )[0];
+
+ $ignored_hooked_blocks = isset( $root_block['attrs']['metadata']['ignoredHookedBlocks'] )
+ ? $root_block['attrs']['metadata']['ignoredHookedBlocks']
+ : array();
+
+ if ( ! empty( $ignored_hooked_blocks ) ) {
+ $existing_ignored_hooked_blocks = get_post_meta( $post->ID, '_wp_ignored_hooked_blocks', true );
+ if ( ! empty( $existing_ignored_hooked_blocks ) ) {
+ $existing_ignored_hooked_blocks = json_decode( $existing_ignored_hooked_blocks, true );
+ $ignored_hooked_blocks = array_unique( array_merge( $ignored_hooked_blocks, $existing_ignored_hooked_blocks ) );
+ }
+
+ if ( ! isset( $post->meta_input ) ) {
+ $post->meta_input = array();
+ }
+ $post->meta_input['_wp_ignored_hooked_blocks'] = json_encode( $ignored_hooked_blocks );
+ }
+
+ $post->post_content = remove_serialized_parent_block( $serialized_block );
+ return $post;
+}
+add_filter( 'rest_pre_insert_page', 'gutenberg_update_ignored_hooked_blocks_postmeta' );
+add_filter( 'rest_pre_insert_post', 'gutenberg_update_ignored_hooked_blocks_postmeta' );
diff --git a/packages/block-library/src/post-content/index.php b/packages/block-library/src/post-content/index.php
index 25be880cc47887..e0a06b7217eebe 100644
--- a/packages/block-library/src/post-content/index.php
+++ b/packages/block-library/src/post-content/index.php
@@ -46,10 +46,33 @@ function render_block_core_post_content( $attributes, $content, $block ) {
$content .= wp_link_pages( array( 'echo' => 0 ) );
}
+ $ignored_hooked_blocks = get_post_meta( $post_id, '_wp_ignored_hooked_blocks', true );
+ if ( ! empty( $ignored_hooked_blocks ) ) {
+ $ignored_hooked_blocks = json_decode( $ignored_hooked_blocks, true );
+ $attributes['metadata'] = array(
+ 'ignoredHookedBlocks' => $ignored_hooked_blocks,
+ );
+ }
+
+ // Wrap in Post Content block so the Block Hooks algorithm can insert blocks
+ // that are hooked as first or last child of `core/post-content`.
+ $content = get_comment_delimited_block_content(
+ 'core/post-content',
+ $attributes,
+ $content
+ );
+
+ // We need to remove the `core/post-content` block wrapper after the Block Hooks algorithm,
+ // but before `do_blocks` runs, as it would otherwise attempt to render the same block again --
+ // thus recursing infinitely.
+ add_filter( 'the_content', 'remove_serialized_parent_block', 8 );
+
/** This filter is documented in wp-includes/post-template.php */
$content = apply_filters( 'the_content', str_replace( ']]>', ']]>', $content ) );
unset( $seen_ids[ $post_id ] );
+ remove_filter( 'the_content', 'remove_serialized_parent_block', 8 );
+
if ( empty( $content ) ) {
return '';
}
From 4263e8549989b374bbf8f47c61e1e08a3fe3b041 Mon Sep 17 00:00:00 2001
From: Riad Benguella
Date: Thu, 12 Dec 2024 17:42:58 +0100
Subject: [PATCH 034/163] BoxControl: Add support for presets (#67688)
Co-authored-by: youknowriad
Co-authored-by: ntsekouras
Co-authored-by: ramonjd
Co-authored-by: jorgefilipecosta
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: jameskoster
---
packages/components/CHANGELOG.md | 6 +-
packages/components/src/box-control/README.md | 16 ++
packages/components/src/box-control/index.tsx | 4 +
.../src/box-control/input-control.tsx | 182 ++++++++++++++----
.../src/box-control/stories/index.story.tsx | 12 ++
packages/components/src/box-control/types.ts | 18 ++
packages/components/src/box-control/utils.ts | 60 ++++++
7 files changed, 256 insertions(+), 42 deletions(-)
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index e8ae2bc7ba6092..49cc196b1f7e69 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -2,6 +2,10 @@
## Unreleased
+### Enhancements
+
+- `BoxControl`: Add presets support ([#67688](https://github.com/WordPress/gutenberg/pull/67688)).
+
### Deprecations
- `SelectControl`: Deprecate 36px default size ([#66898](https://github.com/WordPress/gutenberg/pull/66898)).
@@ -24,7 +28,7 @@
- `Menu`: Replace hardcoded white color with theme-ready variable ([#67649](https://github.com/WordPress/gutenberg/pull/67649)).
- `Navigation` (deprecated): Replace hardcoded white color with theme-ready variable ([#67649](https://github.com/WordPress/gutenberg/pull/67649)).
- `ToggleGroupControl`: Replace hardcoded white color with theme-ready variable ([#67649](https://github.com/WordPress/gutenberg/pull/67649)).
-- `RangeControl`: Update the design of the range control marks ([#67611](https://github.com/WordPress/gutenberg/pull/67611))
+- `RangeControl`: Update the design of the range control marks ([#67611](https://github.com/WordPress/gutenberg/pull/67611)).
- `BorderBoxControl`: Reduce gap value when unlinked ([#67049](https://github.com/WordPress/gutenberg/pull/67049)).
- `DropdownMenu`: Increase option height to 40px ([#67435](https://github.com/WordPress/gutenberg/pull/67435)).
- `MenuItem`: Increase height to 40px ([#67435](https://github.com/WordPress/gutenberg/pull/67435)).
diff --git a/packages/components/src/box-control/README.md b/packages/components/src/box-control/README.md
index 8bcb5a5dad8fc2..da08cafceee42f 100644
--- a/packages/components/src/box-control/README.md
+++ b/packages/components/src/box-control/README.md
@@ -79,6 +79,22 @@ A callback function when an input value changes.
- Required: No
- Default: `() => {}`
+### `presets`
+
+Available presets to pick from.
+
+ - Type: `Preset[]`
+ - Required: No
+
+### `presetKey`
+
+The key of the preset to apply.
+If you provide a list of presets, you must provide a preset key to use.
+The format of preset selected values is going to be `var:preset|${ presetKey }|${ presetSlug }`
+
+ - Type: `string`
+ - Required: No
+
### `resetValues`
The `top`, `right`, `bottom`, and `left` box dimension values to use when the control is reset.
diff --git a/packages/components/src/box-control/index.tsx b/packages/components/src/box-control/index.tsx
index 279dfa55eafe38..d4d4b03f893036 100644
--- a/packages/components/src/box-control/index.tsx
+++ b/packages/components/src/box-control/index.tsx
@@ -83,6 +83,8 @@ function BoxControl( {
splitOnAxis = false,
allowReset = true,
resetValues = DEFAULT_VALUES,
+ presets,
+ presetKey,
onMouseOver,
onMouseOut,
}: BoxControlProps ) {
@@ -153,6 +155,8 @@ function BoxControl( {
sides,
values: inputValues,
__next40pxDefaultSize,
+ presets,
+ presetKey,
};
maybeWarnDeprecated36pxSize( {
diff --git a/packages/components/src/box-control/input-control.tsx b/packages/components/src/box-control/input-control.tsx
index 2e1765f518a57d..81fbcad42c1d08 100644
--- a/packages/components/src/box-control/input-control.tsx
+++ b/packages/components/src/box-control/input-control.tsx
@@ -3,6 +3,8 @@
*/
import { useInstanceId } from '@wordpress/compose';
import { __ } from '@wordpress/i18n';
+import { useState } from '@wordpress/element';
+import { settings } from '@wordpress/icons';
/**
* Internal dependencies
@@ -11,10 +13,13 @@ import Tooltip from '../tooltip';
import { parseQuantityAndUnitFromRawValue } from '../unit-control/utils';
import {
CUSTOM_VALUE_SETTINGS,
- getAllowedSides,
getMergedValue,
- isValueMixed,
+ getAllowedSides,
+ getPresetIndexFromValue,
+ getPresetValueFromIndex,
+ isValuePreset,
isValuesDefined,
+ isValueMixed,
LABELS,
} from './utils';
import {
@@ -24,6 +29,7 @@ import {
StyledUnitControl,
} from './styles/box-control-styles';
import type { BoxControlInputControlProps, BoxControlValue } from './types';
+import Button from '../button';
const noop = () => {};
@@ -79,6 +85,8 @@ export default function BoxInputControl( {
sides,
side,
min = 0,
+ presets,
+ presetKey,
...props
}: BoxControlInputControlProps ) {
const defaultValuesToModify = getSidesToModify( side, sides );
@@ -91,6 +99,15 @@ export default function BoxInputControl( {
onChange( nextValues );
};
+ const handleRawOnValueChange = ( next?: string ) => {
+ const nextValues = { ...values };
+ defaultValuesToModify.forEach( ( modifiedSide ) => {
+ nextValues[ modifiedSide ] = next;
+ } );
+
+ handleOnChange( nextValues );
+ };
+
const handleOnValueChange = (
next?: string,
extra?: { event: React.SyntheticEvent< Element, Event > }
@@ -148,52 +165,135 @@ export default function BoxInputControl( {
const usedValue =
mergedValue === undefined && computedUnit ? computedUnit : mergedValue;
const mixedPlaceholder = isMixed || isMixedUnit ? __( 'Mixed' ) : undefined;
+ const hasPresets = presets && presets.length > 0 && presetKey;
+ const hasPresetValue =
+ hasPresets &&
+ mergedValue !== undefined &&
+ ! isMixed &&
+ isValuePreset( mergedValue, presetKey );
+ const [ showCustomValueControl, setShowCustomValueControl ] = useState(
+ ! hasPresets ||
+ ( ! hasPresetValue && ! isMixed && mergedValue !== undefined )
+ );
+ const presetIndex = hasPresetValue
+ ? getPresetIndexFromValue( mergedValue, presetKey, presets )
+ : undefined;
+ const marks = hasPresets
+ ? [ { value: 0, label: '', tooltip: __( 'None' ) } ].concat(
+ presets.map( ( preset, index ) => ( {
+ value: index + 1,
+ label: '',
+ tooltip: preset.name ?? preset.slug,
+ } ) )
+ )
+ : [];
return (
-
-
+
+
+
+
+ {
+ handleOnValueChange(
+ newValue !== undefined
+ ? [ newValue, computedUnit ].join( '' )
+ : undefined
+ );
+ } }
+ min={ isFinite( min ) ? min : 0 }
+ max={
+ CUSTOM_VALUE_SETTINGS[ computedUnit ?? 'px' ]
+ ?.max ?? 10
+ }
+ step={
+ CUSTOM_VALUE_SETTINGS[ computedUnit ?? 'px' ]
+ ?.step ?? 0.1
+ }
+ value={ parsedQuantity ?? 0 }
+ withInputField={ false }
+ />
+ >
+ ) }
+
+ { hasPresets && ! showCustomValueControl && (
+ {
+ const newValue =
+ newIndex === 0 || newIndex === undefined
+ ? undefined
+ : getPresetValueFromIndex(
+ newIndex - 1,
+ presetKey,
+ presets
+ );
+ handleRawOnValueChange( newValue );
+ } }
+ withInputField={ false }
+ aria-valuenow={
+ presetIndex !== undefined ? presetIndex + 1 : 0
+ }
+ aria-valuetext={
+ marks[ presetIndex !== undefined ? presetIndex + 1 : 0 ]
+ .label
+ }
+ renderTooltipContent={ ( index ) =>
+ marks[ ! index ? 0 : index ].tooltip
+ }
+ min={ 0 }
+ max={ marks.length - 1 }
+ marks={ marks }
label={ LABELS[ side ] }
- placeholder={ mixedPlaceholder }
hideLabelFromVision
+ __nextHasNoMarginBottom
+ />
+ ) }
+
+ { hasPresets && (
+ {
+ setShowCustomValueControl( ! showCustomValueControl );
+ } }
+ isPressed={ showCustomValueControl }
+ size="small"
+ iconSize={ 24 }
/>
-
-
- {
- handleOnValueChange(
- newValue !== undefined
- ? [ newValue, computedUnit ].join( '' )
- : undefined
- );
- } }
- min={ isFinite( min ) ? min : 0 }
- max={ CUSTOM_VALUE_SETTINGS[ computedUnit ?? 'px' ]?.max ?? 10 }
- step={
- CUSTOM_VALUE_SETTINGS[ computedUnit ?? 'px' ]?.step ?? 0.1
- }
- value={ parsedQuantity ?? 0 }
- withInputField={ false }
- />
+ ) }
);
}
diff --git a/packages/components/src/box-control/stories/index.story.tsx b/packages/components/src/box-control/stories/index.story.tsx
index 0d8b96de063168..aa16547d24ab18 100644
--- a/packages/components/src/box-control/stories/index.story.tsx
+++ b/packages/components/src/box-control/stories/index.story.tsx
@@ -81,3 +81,15 @@ AxialControlsWithSingleSide.args = {
sides: [ 'horizontal' ],
splitOnAxis: true,
};
+
+export const ControlWithPresets = TemplateControlled.bind( {} );
+ControlWithPresets.args = {
+ ...Default.args,
+ presets: [
+ { name: 'Small', slug: 'small', value: '4px' },
+ { name: 'Medium', slug: 'medium', value: '8px' },
+ { name: 'Large', slug: 'large', value: '12px' },
+ { name: 'Extra Large', slug: 'extra-large', value: '16px' },
+ ],
+ presetKey: 'padding',
+};
diff --git a/packages/components/src/box-control/types.ts b/packages/components/src/box-control/types.ts
index 73de68d1bd513a..43629e09258a58 100644
--- a/packages/components/src/box-control/types.ts
+++ b/packages/components/src/box-control/types.ts
@@ -15,6 +15,12 @@ export type CustomValueUnits = {
[ key: string ]: { max: number; step: number };
};
+export interface Preset {
+ name: string;
+ slug: string;
+ value?: string;
+}
+
type UnitControlPassthroughProps = Omit<
UnitControlProps,
'label' | 'onChange' | 'onFocus' | 'units'
@@ -94,6 +100,16 @@ export type BoxControlProps = Pick< UnitControlProps, 'units' > &
* @default false
*/
__next40pxDefaultSize?: boolean;
+ /**
+ * Available presets to pick from.
+ */
+ presets?: Preset[];
+ /**
+ * The key of the preset to apply.
+ * If you provide a list of presets, you must provide a preset key to use.
+ * The format of preset selected values is going to be `var:preset|${ presetKey }|${ presetSlug }`
+ */
+ presetKey?: string;
};
export type BoxControlInputControlProps = UnitControlPassthroughProps & {
@@ -120,6 +136,8 @@ export type BoxControlInputControlProps = UnitControlPassthroughProps & {
* It can be a concrete side like: left, right, top, bottom or a combined one like: horizontal, vertical.
*/
side: keyof typeof LABELS;
+ presets?: Preset[];
+ presetKey?: string;
};
export type BoxControlIconProps = {
diff --git a/packages/components/src/box-control/utils.ts b/packages/components/src/box-control/utils.ts
index 111451790e35d5..26bdae4e559511 100644
--- a/packages/components/src/box-control/utils.ts
+++ b/packages/components/src/box-control/utils.ts
@@ -11,6 +11,7 @@ import type {
BoxControlProps,
BoxControlValue,
CustomValueUnits,
+ Preset,
} from './types';
import deprecated from '@wordpress/deprecated';
@@ -272,3 +273,62 @@ export function getAllowedSides(
} );
return allowedSides;
}
+
+/**
+ * Checks if a value is a preset value.
+ *
+ * @param value The value to check.
+ * @param presetKey The preset key to check against.
+ * @return Whether the value is a preset value.
+ */
+export function isValuePreset( value: string, presetKey: string ) {
+ return value.startsWith( `var:preset|${ presetKey }|` );
+}
+
+/**
+ * Returns the index of the preset value in the presets array.
+ *
+ * @param value The value to check.
+ * @param presetKey The preset key to check against.
+ * @param presets The array of presets to search.
+ * @return The index of the preset value in the presets array.
+ */
+export function getPresetIndexFromValue(
+ value: string,
+ presetKey: string,
+ presets: Preset[]
+) {
+ if ( ! isValuePreset( value, presetKey ) ) {
+ return undefined;
+ }
+
+ const match = value.match(
+ new RegExp( `^var:preset\\|${ presetKey }\\|(.+)$` )
+ );
+ if ( ! match ) {
+ return undefined;
+ }
+ const slug = match[ 1 ];
+ const index = presets.findIndex( ( preset ) => {
+ return preset.slug === slug;
+ } );
+
+ return index !== -1 ? index : undefined;
+}
+
+/**
+ * Returns the preset value from the index.
+ *
+ * @param index The index of the preset value in the presets array.
+ * @param presetKey The preset key to check against.
+ * @param presets The array of presets to search.
+ * @return The preset value from the index.
+ */
+export function getPresetValueFromIndex(
+ index: number,
+ presetKey: string,
+ presets: Preset[]
+) {
+ const preset = presets[ index ];
+ return `var:preset|${ presetKey }|${ preset.slug }`;
+}
From f88ec2b59fbe1dcfc9b56b3ccbc2e0a8c9cf48c6 Mon Sep 17 00:00:00 2001
From: Miguel Fonseca <150562+mcsf@users.noreply.github.com>
Date: Thu, 12 Dec 2024 16:57:39 +0000
Subject: [PATCH 035/163] WIP: wp-env: add multisite support (#67845)
---
packages/env/CHANGELOG.md | 1 +
packages/env/lib/config/parse-config.js | 6 ++++
.../__snapshots__/config-integration.js.snap | 8 +++++
packages/env/lib/config/test/parse-config.js | 1 +
packages/env/lib/wordpress.js | 31 ++++++++++++++++++-
schemas/json/wp-env.json | 7 ++++-
6 files changed, 52 insertions(+), 2 deletions(-)
diff --git a/packages/env/CHANGELOG.md b/packages/env/CHANGELOG.md
index 0298e21c810009..252e1e65dae872 100644
--- a/packages/env/CHANGELOG.md
+++ b/packages/env/CHANGELOG.md
@@ -7,6 +7,7 @@
### Enhancements
- Add phpMyAdmin as an optional service. Enabled via the new `phpmyadminPort` environment config, as well as env vars `WP_ENV_PHPMYADMIN_PORT` and `WP_ENV_TESTS_PHPMYADMIN_PORT`.
+- Add support for WordPress multisite installations. Enabled via the new `multisite` environment config.
### Internal
diff --git a/packages/env/lib/config/parse-config.js b/packages/env/lib/config/parse-config.js
index bddd7bc72aaee0..d5e06c5bb9beed 100644
--- a/packages/env/lib/config/parse-config.js
+++ b/packages/env/lib/config/parse-config.js
@@ -52,6 +52,7 @@ const mergeConfigs = require( './merge-configs' );
* @property {number} port The port to use.
* @property {number} mysqlPort The port to use for MySQL. Random if empty.
* @property {number} phpmyadminPort The port to use for phpMyAdmin. If empty, disabled phpMyAdmin.
+ * @property {boolean} multisite Whether to set up a multisite installation.
* @property {Object} config Mapping of wp-config.php constants to their desired values.
* @property {Object.} mappings Mapping of WordPress directories to local directories which should be mounted.
* @property {string|null} phpVersion Version of PHP to use in the environments, of the format 0.0.
@@ -89,6 +90,7 @@ const DEFAULT_ENVIRONMENT_CONFIG = {
testsPort: 8889,
mysqlPort: null,
phpmyadminPort: null,
+ multisite: false,
mappings: {},
config: {
FS_METHOD: 'direct',
@@ -466,6 +468,10 @@ async function parseEnvironmentConfig(
parsedConfig.phpmyadminPort = config.phpmyadminPort;
}
+ if ( config.multisite !== undefined ) {
+ parsedConfig.multisite = config.multisite;
+ }
+
if ( config.phpVersion !== undefined ) {
// Support null as a valid input.
if ( config.phpVersion !== null ) {
diff --git a/packages/env/lib/config/test/__snapshots__/config-integration.js.snap b/packages/env/lib/config/test/__snapshots__/config-integration.js.snap
index 6b671a6bc858eb..833a8a54d7749a 100644
--- a/packages/env/lib/config/test/__snapshots__/config-integration.js.snap
+++ b/packages/env/lib/config/test/__snapshots__/config-integration.js.snap
@@ -29,6 +29,7 @@ exports[`Config Integration should load local and override configuration files 1
"url": "https://github.com/WordPress/WordPress.git",
},
"mappings": {},
+ "multisite": false,
"mysqlPort": 23306,
"phpVersion": null,
"phpmyadminPort": null,
@@ -59,6 +60,7 @@ exports[`Config Integration should load local and override configuration files 1
"url": "https://github.com/WordPress/WordPress.git",
},
"mappings": {},
+ "multisite": false,
"mysqlPort": 23307,
"phpVersion": null,
"phpmyadminPort": null,
@@ -106,6 +108,7 @@ exports[`Config Integration should load local configuration file 1`] = `
"url": "https://github.com/WordPress/WordPress.git",
},
"mappings": {},
+ "multisite": false,
"mysqlPort": 13306,
"phpVersion": null,
"phpmyadminPort": null,
@@ -136,6 +139,7 @@ exports[`Config Integration should load local configuration file 1`] = `
"url": "https://github.com/WordPress/WordPress.git",
},
"mappings": {},
+ "multisite": false,
"mysqlPort": 23307,
"phpVersion": null,
"phpmyadminPort": null,
@@ -183,6 +187,7 @@ exports[`Config Integration should use default configuration 1`] = `
"url": "https://github.com/WordPress/WordPress.git",
},
"mappings": {},
+ "multisite": false,
"mysqlPort": null,
"phpVersion": null,
"phpmyadminPort": null,
@@ -213,6 +218,7 @@ exports[`Config Integration should use default configuration 1`] = `
"url": "https://github.com/WordPress/WordPress.git",
},
"mappings": {},
+ "multisite": false,
"mysqlPort": null,
"phpVersion": null,
"phpmyadminPort": null,
@@ -260,6 +266,7 @@ exports[`Config Integration should use environment variables over local and over
"url": "https://github.com/WordPress/WordPress.git",
},
"mappings": {},
+ "multisite": false,
"mysqlPort": 23306,
"phpVersion": null,
"phpmyadminPort": null,
@@ -291,6 +298,7 @@ exports[`Config Integration should use environment variables over local and over
"url": "https://github.com/WordPress/WordPress.git",
},
"mappings": {},
+ "multisite": false,
"mysqlPort": 23307,
"phpVersion": null,
"phpmyadminPort": null,
diff --git a/packages/env/lib/config/test/parse-config.js b/packages/env/lib/config/test/parse-config.js
index cc6e2c7a96bbc0..968c8b66a4ec15 100644
--- a/packages/env/lib/config/test/parse-config.js
+++ b/packages/env/lib/config/test/parse-config.js
@@ -23,6 +23,7 @@ const DEFAULT_CONFIG = {
testsPort: 8889,
mysqlPort: null,
phpmyadminPort: null,
+ multisite: false,
phpVersion: null,
coreSource: {
type: 'git',
diff --git a/packages/env/lib/wordpress.js b/packages/env/lib/wordpress.js
index bd3c4a23f8ff5d..8c08fb1f20ec78 100644
--- a/packages/env/lib/wordpress.js
+++ b/packages/env/lib/wordpress.js
@@ -86,11 +86,40 @@ async function configureWordPress( environment, config, spinner ) {
// Ignore error.
}
- const installCommand = `wp core install --url="${ config.env[ environment ].config.WP_SITEURL }" --title="${ config.name }" --admin_user=admin --admin_password=password --admin_email=wordpress@example.com --skip-email`;
+ const isMultisite = config.env[ environment ].multisite;
+
+ const installMethod = isMultisite ? 'multisite-install' : 'install';
+ const installCommand = `wp core ${ installMethod } --url="${ config.env[ environment ].config.WP_SITEURL }" --title="${ config.name }" --admin_user=admin --admin_password=password --admin_email=wordpress@example.com --skip-email`;
// -eo pipefail exits the command as soon as anything fails in bash.
const setupCommands = [ 'set -eo pipefail', installCommand ];
+ // Bootstrap .htaccess for multisite
+ if ( isMultisite ) {
+ // Using a subshell with `exec` was the best tradeoff I could come up
+ // with between readability of this source and compatibility with the
+ // way that all strings in `setupCommands` are later joined with '&&'.
+ setupCommands.push(
+ `(
+exec > /var/www/html/.htaccess
+echo 'RewriteEngine On'
+echo 'RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]'
+echo 'RewriteBase /'
+echo 'RewriteRule ^index\.php$ - [L]'
+echo ''
+echo '# add a trailing slash to /wp-admin'
+echo 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]'
+echo ''
+echo 'RewriteCond %{REQUEST_FILENAME} -f [OR]'
+echo 'RewriteCond %{REQUEST_FILENAME} -d'
+echo 'RewriteRule ^ - [L]'
+echo 'RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]'
+echo 'RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]'
+echo 'RewriteRule . index.php [L]'
+)`
+ );
+ }
+
// WordPress versions below 5.1 didn't use proper spacing in wp-config.
const configAnchor =
wpVersion && isWPMajorMinorVersionLower( wpVersion, '5.1' )
diff --git a/schemas/json/wp-env.json b/schemas/json/wp-env.json
index 8aa604ed41ed1f..3958818714e4e6 100644
--- a/schemas/json/wp-env.json
+++ b/schemas/json/wp-env.json
@@ -66,6 +66,10 @@
"phpmyadminPort": {
"description": "The port number to access phpMyAdmin.",
"type": "integer"
+ },
+ "multisite": {
+ "description": "Whether to set up a multisite installation.",
+ "type": "boolean"
}
}
},
@@ -78,7 +82,8 @@
"port",
"config",
"mappings",
- "phpmyadminPort"
+ "phpmyadminPort",
+ "multisite"
]
}
},
From 9437f7e73f9c6c9f831f2a26a555dfa8fddb3d61 Mon Sep 17 00:00:00 2001
From: Marco Ciampini
Date: Thu, 12 Dec 2024 18:47:35 +0100
Subject: [PATCH 036/163] RangeControl: animate thumb and track only when using
marks (#67836)
Co-authored-by: ciampo
Co-authored-by: jameskoster
Co-authored-by: youknowriad
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: tyxla
---
.../src/range-control/styles/range-control-styles.ts | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/packages/components/src/range-control/styles/range-control-styles.ts b/packages/components/src/range-control/styles/range-control-styles.ts
index d943ca472911ed..c86c57800cac46 100644
--- a/packages/components/src/range-control/styles/range-control-styles.ts
+++ b/packages/components/src/range-control/styles/range-control-styles.ts
@@ -130,8 +130,10 @@ export const Track = styled.span`
margin-top: ${ ( rangeHeightValue - railHeight ) / 2 }px;
top: 0;
- @media not ( prefers-reduced-motion ) {
- transition: width ease 0.1s;
+ .is-marked & {
+ @media not ( prefers-reduced-motion ) {
+ transition: width ease 0.1s;
+ }
}
${ trackBackgroundColor };
@@ -203,8 +205,10 @@ export const ThumbWrapper = styled.span`
border-radius: ${ CONFIG.radiusRound };
z-index: 3;
- @media not ( prefers-reduced-motion ) {
- transition: left ease 0.1s;
+ .is-marked & {
+ @media not ( prefers-reduced-motion ) {
+ transition: left ease 0.1s;
+ }
}
${ thumbColor };
From b74283b82cf1cae766f3982f158a004eaf115d46 Mon Sep 17 00:00:00 2001
From: Eshaan Dabasiya <76681468+im3dabasia@users.noreply.github.com>
Date: Fri, 13 Dec 2024 00:12:59 +0530
Subject: [PATCH 037/163] Refactor "Settings" panel of Archives block to use
ToolsPanel instead of PanelBody (#67841)
Co-authored-by: im3dabasia
Co-authored-by: fabiankaegy < fabiankaegy@git.wordpress.org>
---
packages/block-library/src/archives/edit.js | 122 ++++++++++++++------
1 file changed, 86 insertions(+), 36 deletions(-)
diff --git a/packages/block-library/src/archives/edit.js b/packages/block-library/src/archives/edit.js
index 60b8715988ed94..b51bd9a4fe1e6b 100644
--- a/packages/block-library/src/archives/edit.js
+++ b/packages/block-library/src/archives/edit.js
@@ -2,10 +2,11 @@
* WordPress dependencies
*/
import {
- PanelBody,
ToggleControl,
SelectControl,
Disabled,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
@@ -17,55 +18,104 @@ export default function ArchivesEdit( { attributes, setAttributes } ) {
return (
<>
-
- {
+ setAttributes( {
+ displayAsDropdown: false,
+ showLabel: false,
+ showPostCounts: false,
+ type: 'monthly',
+ } );
+ } }
+ >
+
- setAttributes( {
- displayAsDropdown: ! displayAsDropdown,
- } )
+ isShownByDefault
+ hasValue={ () => displayAsDropdown }
+ onDeselect={ () =>
+ setAttributes( { displayAsDropdown: false } )
}
- />
- { displayAsDropdown && (
+ >
setAttributes( {
- showLabel: ! showLabel,
+ displayAsDropdown: ! displayAsDropdown,
} )
}
/>
+
+
+ { displayAsDropdown && (
+ showLabel }
+ onDeselect={ () =>
+ setAttributes( { showLabel: false } )
+ }
+ >
+
+ setAttributes( {
+ showLabel: ! showLabel,
+ } )
+ }
+ />
+
) }
-
- setAttributes( {
- showPostCounts: ! showPostCounts,
- } )
+ isShownByDefault
+ hasValue={ () => showPostCounts }
+ onDeselect={ () =>
+ setAttributes( { showPostCounts: false } )
}
- />
-
+
+ setAttributes( {
+ showPostCounts: ! showPostCounts,
+ } )
+ }
+ />
+
+
+
- setAttributes( { type: value } )
+ isShownByDefault
+ hasValue={ () => !! type }
+ onDeselect={ () =>
+ setAttributes( { type: 'monthly' } )
}
- />
-
+ >
+
+ setAttributes( { type: value } )
+ }
+ />
+
+
From 70c6cb796896e99157fe5adc8d09f64e0da35b15 Mon Sep 17 00:00:00 2001
From: Lena Morita
Date: Fri, 13 Dec 2024 04:13:31 +0900
Subject: [PATCH 038/163] LineHeightControl: Deprecate 36px default size
(#67850)
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: tyxla
---
.../src/components/line-height-control/README.md | 1 +
.../src/components/line-height-control/index.js | 12 ++++++++++++
.../line-height-control/stories/index.story.js | 1 +
.../src/components/line-height-control/test/index.js | 8 +++++++-
4 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/packages/block-editor/src/components/line-height-control/README.md b/packages/block-editor/src/components/line-height-control/README.md
index 89bcc69622367f..2f719b5a7210e6 100644
--- a/packages/block-editor/src/components/line-height-control/README.md
+++ b/packages/block-editor/src/components/line-height-control/README.md
@@ -18,6 +18,7 @@ const MyLineHeightControl = () => (
);
```
diff --git a/packages/block-editor/src/components/line-height-control/index.js b/packages/block-editor/src/components/line-height-control/index.js
index e6af602c2875ae..ea692ceb452e3a 100644
--- a/packages/block-editor/src/components/line-height-control/index.js
+++ b/packages/block-editor/src/components/line-height-control/index.js
@@ -3,6 +3,7 @@
*/
import { __ } from '@wordpress/i18n';
import { __experimentalNumberControl as NumberControl } from '@wordpress/components';
+import deprecated from '@wordpress/deprecated';
/**
* Internal dependencies
@@ -89,6 +90,17 @@ const LineHeightControl = ( {
onChange( `${ nextValue }` );
};
+ if (
+ ! __next40pxDefaultSize &&
+ ( otherProps.size === undefined || otherProps.size === 'default' )
+ ) {
+ deprecated( `36px default size for wp.blockEditor.LineHeightControl`, {
+ since: '6.8',
+ version: '7.1',
+ hint: 'Set the `__next40pxDefaultSize` prop to true to start opting into the new default size, which will become the default in a future version.',
+ } );
+ }
+
return (
{
export const Default = Template.bind( {} );
Default.args = {
+ __next40pxDefaultSize: true,
__unstableInputWidth: '100px',
};
diff --git a/packages/block-editor/src/components/line-height-control/test/index.js b/packages/block-editor/src/components/line-height-control/test/index.js
index b98bc93c48a83a..488d22b768114e 100644
--- a/packages/block-editor/src/components/line-height-control/test/index.js
+++ b/packages/block-editor/src/components/line-height-control/test/index.js
@@ -19,7 +19,13 @@ const SPIN = STEP * SPIN_FACTOR;
const ControlledLineHeightControl = () => {
const [ value, setValue ] = useState();
- return ;
+ return (
+
+ );
};
describe( 'LineHeightControl', () => {
From 75713215b3562a6a61986641f1f42a12bde7c643 Mon Sep 17 00:00:00 2001
From: Lena Morita
Date: Fri, 13 Dec 2024 04:14:12 +0900
Subject: [PATCH 039/163] FontAppearanceControl: Deprecate 36px default size
(#67854)
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: tyxla
---
.../components/font-appearance-control/index.js | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/packages/block-editor/src/components/font-appearance-control/index.js b/packages/block-editor/src/components/font-appearance-control/index.js
index f9e8023f93ec69..62396c2dc7bd64 100644
--- a/packages/block-editor/src/components/font-appearance-control/index.js
+++ b/packages/block-editor/src/components/font-appearance-control/index.js
@@ -2,6 +2,7 @@
* WordPress dependencies
*/
import { CustomSelectControl } from '@wordpress/components';
+import deprecated from '@wordpress/deprecated';
import { useMemo } from '@wordpress/element';
import { __, sprintf } from '@wordpress/i18n';
@@ -147,6 +148,20 @@ export default function FontAppearanceControl( props ) {
);
};
+ if (
+ ! __next40pxDefaultSize &&
+ ( otherProps.size === undefined || otherProps.size === 'default' )
+ ) {
+ deprecated(
+ `36px default size for wp.blockEditor.__experimentalFontAppearanceControl`,
+ {
+ since: '6.8',
+ version: '7.1',
+ hint: 'Set the `__next40pxDefaultSize` prop to true to start opting into the new default size, which will become the default in a future version.',
+ }
+ );
+ }
+
return (
hasStylesOrWeights && (
Date: Fri, 13 Dec 2024 04:14:37 +0900
Subject: [PATCH 040/163] FontFamilyControl: Deprecate 36px default size
(#67853)
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: tyxla
---
.../src/components/font-family/README.md | 1 +
.../src/components/font-family/index.js | 14 ++++++++++++++
.../components/font-family/stories/index.story.js | 1 +
3 files changed, 16 insertions(+)
diff --git a/packages/block-editor/src/components/font-family/README.md b/packages/block-editor/src/components/font-family/README.md
index 57697f595cc800..25190802e5d0bf 100644
--- a/packages/block-editor/src/components/font-family/README.md
+++ b/packages/block-editor/src/components/font-family/README.md
@@ -29,6 +29,7 @@ const MyFontFamilyControl = () => {
setFontFamily( newFontFamily );
} }
__nextHasNoMarginBottom
+ __next40pxDefaultSize
/>
);
};
diff --git a/packages/block-editor/src/components/font-family/index.js b/packages/block-editor/src/components/font-family/index.js
index e8d0d7ed2dd808..6a723bb24c48ec 100644
--- a/packages/block-editor/src/components/font-family/index.js
+++ b/packages/block-editor/src/components/font-family/index.js
@@ -58,6 +58,20 @@ export default function FontFamilyControl( {
);
}
+ if (
+ ! __next40pxDefaultSize &&
+ ( props.size === undefined || props.size === 'default' )
+ ) {
+ deprecated(
+ `36px default size for wp.blockEditor.__experimentalFontFamilyControl`,
+ {
+ since: '6.8',
+ version: '7.1',
+ hint: 'Set the `__next40pxDefaultSize` prop to true to start opting into the new default size, which will become the default in a future version.',
+ }
+ );
+ }
+
return (
Date: Fri, 13 Dec 2024 00:52:00 +0530
Subject: [PATCH 041/163] Refactor "Settings" panel of Button block to use
ToolsPanel instead of PanelBody (#67887)
Co-authored-by: Mayank-Tripathi32
Co-authored-by: fabiankaegy
---
packages/block-library/src/button/edit.js | 56 ++++++++++++++---------
1 file changed, 35 insertions(+), 21 deletions(-)
diff --git a/packages/block-library/src/button/edit.js b/packages/block-library/src/button/edit.js
index 2106c2031491fe..9f2a9048af4c0b 100644
--- a/packages/block-library/src/button/edit.js
+++ b/packages/block-library/src/button/edit.js
@@ -18,10 +18,11 @@ import { useEffect, useState, useRef, useMemo } from '@wordpress/element';
import {
Button,
ButtonGroup,
- PanelBody,
TextControl,
ToolbarButton,
Popover,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import {
AlignmentControl,
@@ -123,26 +124,39 @@ function WidthPanel( { selectedWidth, setAttributes } ) {
}
return (
-
-
- { [ 25, 50, 75, 100 ].map( ( widthValue ) => {
- return (
- handleChange( widthValue ) }
- >
- { widthValue }%
-
- );
- } ) }
-
-
+ {
+ handleChange( undefined );
+ } }
+ >
+ !! selectedWidth }
+ onDeselect={ () => handleChange( undefined ) }
+ >
+
+ { [ 25, 50, 75, 100 ].map( ( widthValue ) => {
+ return (
+ handleChange( widthValue ) }
+ >
+ { widthValue }%
+
+ );
+ } ) }
+
+
+
);
}
From 63b0e7f1ce6a8626fecf6714d6288b534220f46b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabian=20K=C3=A4gy?=
Date: Thu, 12 Dec 2024 20:27:21 +0100
Subject: [PATCH 042/163] Adding @fabiankaegy as a code owner of the block
library package (#67891)
Co-authored-by: fabiankaegy
Co-authored-by: youknowriad
---
.github/CODEOWNERS | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 2ec03cba722c6b..3e02267da7c512 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -13,7 +13,7 @@
/packages/data-controls @nerrad
# Blocks
-/packages/block-library @ajitbohra
+/packages/block-library @ajitbohra @fabiankaegy
/packages/block-library/src/gallery @geriux
/packages/block-library/src/comment-template @michalczaplinski
/packages/block-library/src/comments @michalczaplinski
From cff73d475e9323e63657c0c246cb613ca3388c8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com>
Date: Thu, 12 Dec 2024 21:19:27 +0100
Subject: [PATCH 043/163] Pages: update layout-specific config when the view is
updated (#67881)
Co-authored-by: oandregal
Co-authored-by: youknowriad
---
packages/edit-site/src/components/post-list/index.js | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/packages/edit-site/src/components/post-list/index.js b/packages/edit-site/src/components/post-list/index.js
index a67a505795b3c8..bbf5d654ddb57a 100644
--- a/packages/edit-site/src/components/post-list/index.js
+++ b/packages/edit-site/src/components/post-list/index.js
@@ -109,6 +109,7 @@ function useView( postType ) {
return {
...initialView,
type,
+ ...defaultLayouts[ type ],
};
} );
@@ -140,13 +141,15 @@ function useView( postType ) {
// without affecting any other config.
const onUrlLayoutChange = useEvent( () => {
setView( ( prevView ) => {
- const layoutToApply = layout ?? LAYOUT_LIST;
- if ( layoutToApply === prevView.type ) {
+ const newType = layout ?? LAYOUT_LIST;
+ if ( newType === prevView.type ) {
return prevView;
}
+
return {
...prevView,
- type: layout ?? LAYOUT_LIST,
+ type: newType,
+ ...defaultLayouts[ newType ],
};
} );
} );
@@ -168,6 +171,7 @@ function useView( postType ) {
setView( {
...newView,
type,
+ ...defaultLayouts[ type ],
} );
}
} );
From 8d6b8c5c05a2427af04e8639341ddcfac299751e Mon Sep 17 00:00:00 2001
From: Sukhendu Sekhar Guria
Date: Fri, 13 Dec 2024 04:09:55 +0530
Subject: [PATCH 044/163] Refactor "Settings" panel of Table block to use
ToolsPanel instead of PanelBody (#67896)
Co-authored-by: Sukhendu2002
Co-authored-by: fabiankaegy
---
packages/block-library/src/table/edit.js | 74 +++++++++++++++++-------
1 file changed, 54 insertions(+), 20 deletions(-)
diff --git a/packages/block-library/src/table/edit.js b/packages/block-library/src/table/edit.js
index f1cb3fa5d8b8ae..1d61bab0787e44 100644
--- a/packages/block-library/src/table/edit.js
+++ b/packages/block-library/src/table/edit.js
@@ -20,12 +20,13 @@ import {
import { __ } from '@wordpress/i18n';
import {
Button,
- PanelBody,
Placeholder,
TextControl,
ToggleControl,
ToolbarDropdownMenu,
__experimentalHasSplitBorders as hasSplitBorders,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import {
alignLeft,
@@ -473,33 +474,66 @@ function TableEdit( {
>
) }
- {
+ setAttributes( {
+ hasFixedLayout: true,
+ head: [],
+ foot: [],
+ } );
+ } }
>
- hasFixedLayout !== true }
label={ __( 'Fixed width table cells' ) }
- checked={ !! hasFixedLayout }
- onChange={ onChangeFixedLayout }
- />
+ onDeselect={ () =>
+ setAttributes( { hasFixedLayout: true } )
+ }
+ isShownByDefault
+ >
+
+
{ ! isEmpty && (
<>
- head && head.length }
label={ __( 'Header section' ) }
- checked={ !! ( head && head.length ) }
- onChange={ onToggleHeaderSection }
- />
-
+ setAttributes( { head: [] } )
+ }
+ isShownByDefault
+ >
+
+
+ foot && foot.length }
label={ __( 'Footer section' ) }
- checked={ !! ( foot && foot.length ) }
- onChange={ onToggleFooterSection }
- />
+ onDeselect={ () =>
+ setAttributes( { foot: [] } )
+ }
+ isShownByDefault
+ >
+
+
>
) }
-
+
{ ! isEmpty && (
Date: Fri, 13 Dec 2024 09:02:59 +0200
Subject: [PATCH 045/163] Storybook: Fix warnings in Layout document (#67865)
Co-authored-by: tyxla
Co-authored-by: jameskoster
Co-authored-by: mirka <0mirka00@git.wordpress.org>
---
storybook/stories/foundations/layout.mdx | 60 ++++++++++++------------
1 file changed, 31 insertions(+), 29 deletions(-)
diff --git a/storybook/stories/foundations/layout.mdx b/storybook/stories/foundations/layout.mdx
index abc0c7c4f6947f..578f4e8b66e428 100644
--- a/storybook/stories/foundations/layout.mdx
+++ b/storybook/stories/foundations/layout.mdx
@@ -1,4 +1,4 @@
-import { Meta } from '@storybook/addon-docs/blocks';
+import { Meta } from '@storybook/blocks';
import areas from './static/areas.svg';
import pageLayoutExample1 from './static/page-layout-example-1.svg';
import pageLayoutExample2 from './static/page-layout-example-2.svg';
@@ -27,32 +27,34 @@ At the highest level admin pages are comprised of _areas_, that can be arranged
Areas can be combined in different ways depending on the use case. Here are some examples.
-
-
- #### Sidebar, Content Frame and Preview Frame
-
-
- A demonstration of this arrangement can be found in the Styles section of the Site Editor, and in the Pages and Templates sections when List layout is selected.
-
-
- #### Sidebar and Preview Frame
-
-
- A demonstration of this arrangement can be found in the Design section.
-
-
-
-
- #### Sidebar and Content Frame
-
-
- A demonstration of this arrangement can be found in the Patterns and Templates sections of the Site Editor, or in the Pages section when Table or Grid layout are selected.
-
-
- #### Sidebar and multiple Content Frames
-
-
- Multiple content frames can be utilised as required.
-
-
+
+
+
+ #### Sidebar, Content Frame and Preview Frame
+
+
+ A demonstration of this arrangement can be found in the Styles section of the Site Editor, and in the Pages and Templates sections when List layout is selected.
+
+
+ #### Sidebar and Preview Frame
+
+
+ A demonstration of this arrangement can be found in the Design section.
+
+
+
+
+ #### Sidebar and Content Frame
+
+
+ A demonstration of this arrangement can be found in the Patterns and Templates sections of the Site Editor, or in the Pages section when Table or Grid layout are selected.
+
+
+ #### Sidebar and multiple Content Frames
+
+
+ Multiple content frames can be utilised as required.
+
+
+
From cbe7ef4d597cc28f3ab0fc9c7593b9af8085aa36 Mon Sep 17 00:00:00 2001
From: Sukhendu Sekhar Guria
Date: Fri, 13 Dec 2024 13:49:27 +0530
Subject: [PATCH 046/163] Refactor "Settings" panel of Date block to use
ToolsPanel instead of PanelBody (#67906)
Co-authored-by: Sukhendu2002
Co-authored-by: fabiankaegy
---
packages/block-library/src/post-date/edit.js | 97 +++++++++++++++-----
1 file changed, 72 insertions(+), 25 deletions(-)
diff --git a/packages/block-library/src/post-date/edit.js b/packages/block-library/src/post-date/edit.js
index 5057466c6af453..6ac39c0f14798d 100644
--- a/packages/block-library/src/post-date/edit.js
+++ b/packages/block-library/src/post-date/edit.js
@@ -26,7 +26,8 @@ import {
ToolbarGroup,
ToolbarButton,
ToggleControl,
- PanelBody,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import { __, _x, sprintf } from '@wordpress/i18n';
import { edit } from '@wordpress/icons';
@@ -160,16 +161,36 @@ export default function PostDateEdit( {
-
-
- setAttributes( { format: nextFormat } )
+ {
+ setAttributes( {
+ format: undefined,
+ isLink: false,
+ displayType: 'date',
+ } );
+ } }
+ >
+
+ format !== undefined && format !== siteFormat
+ }
+ label={ __( 'Date Format' ) }
+ onDeselect={ () =>
+ setAttributes( { format: undefined } )
}
- />
-
+
+ setAttributes( { format: nextFormat } )
+ }
+ />
+
+ isLink !== false }
label={
postType?.labels.singular_name
? sprintf(
@@ -179,23 +200,49 @@ export default function PostDateEdit( {
)
: __( 'Link to post' )
}
- onChange={ () => setAttributes( { isLink: ! isLink } ) }
- checked={ isLink }
- />
- setAttributes( { isLink: false } ) }
+ isShownByDefault
+ >
+
+ setAttributes( { isLink: ! isLink } )
+ }
+ checked={ isLink }
+ />
+
+ displayType !== 'date' }
label={ __( 'Display last modified date' ) }
- onChange={ ( value ) =>
- setAttributes( {
- displayType: value ? 'modified' : 'date',
- } )
+ onDeselect={ () =>
+ setAttributes( { displayType: 'date' } )
}
- checked={ displayType === 'modified' }
- help={ __(
- 'Only shows if the post has been modified'
- ) }
- />
-
+ isShownByDefault
+ >
+
+ setAttributes( {
+ displayType: value ? 'modified' : 'date',
+ } )
+ }
+ checked={ displayType === 'modified' }
+ help={ __(
+ 'Only shows if the post has been modified'
+ ) }
+ />
+
+
{ postDate }
From 7050a44afb90ee187e2ed401ee1d99b8de2ad34f Mon Sep 17 00:00:00 2001
From: Jorge Costa
Date: Fri, 13 Dec 2024 08:55:35 +0000
Subject: [PATCH 047/163] Fix: Fix link to minimal-block example plugin code.
(#67888)
Co-authored-by: jorgefilipecosta
Co-authored-by: shail-mehta
---
docs/getting-started/fundamentals/registration-of-a-block.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/getting-started/fundamentals/registration-of-a-block.md b/docs/getting-started/fundamentals/registration-of-a-block.md
index 5c80422f6f8574..63a7a9031f72a7 100644
--- a/docs/getting-started/fundamentals/registration-of-a-block.md
+++ b/docs/getting-started/fundamentals/registration-of-a-block.md
@@ -42,7 +42,7 @@ function minimal_block_ca6eda___register_block() {
add_action( 'init', 'minimal_block_ca6eda___register_block' );
```
-_See the [full block example](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/minimal-block-ca6eda) of the [code above](https://github.com/WordPress/block-development-examples/blob/trunk/plugins/minimal-block-ca6eda/index.php)_
+_See the [full block example](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/minimal-block-ca6eda) of the [code above](https://github.com/WordPress/block-development-examples/blob/trunk/plugins/minimal-block-ca6eda/plugin.php)_
## Registering a block with JavaScript (client-side)
From 7e85993a0be6830a398515513b8c42366cbcd2b4 Mon Sep 17 00:00:00 2001
From: George Mamadashvili
Date: Fri, 13 Dec 2024 13:18:26 +0400
Subject: [PATCH 048/163] Plugin: Fix eligibility check for post types' default
rendering mode (#67879)
* Plugin: Fix eligibility check for post types' default rendering mode
* Add backport changelog entry
Unlinked contributors: CreativeDive.
Co-authored-by: Mamaduka
Co-authored-by: fabiankaegy
---
backport-changelog/6.8/7129.md | 1 +
lib/compat/wordpress-6.8/post.php | 9 ++++++---
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/backport-changelog/6.8/7129.md b/backport-changelog/6.8/7129.md
index 90c9168cdc6f8a..301f1abc45d0d7 100644
--- a/backport-changelog/6.8/7129.md
+++ b/backport-changelog/6.8/7129.md
@@ -1,3 +1,4 @@
https://github.com/WordPress/wordpress-develop/pull/7129
* https://github.com/WordPress/gutenberg/pull/62304
+* https://github.com/WordPress/gutenberg/pull/67879
diff --git a/lib/compat/wordpress-6.8/post.php b/lib/compat/wordpress-6.8/post.php
index 639e33b4e5ca51..be842d89b51519 100644
--- a/lib/compat/wordpress-6.8/post.php
+++ b/lib/compat/wordpress-6.8/post.php
@@ -32,15 +32,18 @@ function gutenberg_post_type_rendering_modes() {
* @return array Updated array of post type arguments.
*/
function gutenberg_post_type_default_rendering_mode( $args, $post_type ) {
- $rendering_mode = 'page' === $post_type ? 'template-locked' : 'post-only';
- $rendering_modes = gutenberg_post_type_rendering_modes();
+ if ( ! wp_is_block_theme() || ! current_theme_supports( 'block-templates' ) ) {
+ return $args;
+ }
// Make sure the post type supports the block editor.
if (
- wp_is_block_theme() &&
( isset( $args['show_in_rest'] ) && $args['show_in_rest'] ) &&
( ! empty( $args['supports'] ) && in_array( 'editor', $args['supports'], true ) )
) {
+ $rendering_mode = 'page' === $post_type ? 'template-locked' : 'post-only';
+ $rendering_modes = gutenberg_post_type_rendering_modes();
+
// Validate the supplied rendering mode.
if (
isset( $args['default_rendering_mode'] ) &&
From 25e9753bfb4884ddcf02855f47cef3eb418eaea9 Mon Sep 17 00:00:00 2001
From: Jorge Costa
Date: Fri, 13 Dec 2024 10:01:50 +0000
Subject: [PATCH 049/163] [Docs] Fix: Two broken links to the packages
reference API and to blocks docs (#67889)
Co-authored-by: jorgefilipecosta
Co-authored-by: shail-mehta
---
.../fundamentals/javascript-in-the-block-editor.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/getting-started/fundamentals/javascript-in-the-block-editor.md b/docs/getting-started/fundamentals/javascript-in-the-block-editor.md
index 348b95ba88da3c..7accc5d4c2129d 100644
--- a/docs/getting-started/fundamentals/javascript-in-the-block-editor.md
+++ b/docs/getting-started/fundamentals/javascript-in-the-block-editor.md
@@ -38,9 +38,9 @@ The `wp-scripts` package also facilitates the use of JavaScript modules, allowin
Integrating JavaScript into your WordPress projects without a build process can be the most straightforward approach in specific scenarios. This is particularly true for projects that don't leverage JSX or other advanced JavaScript features requiring compilation.
-When you opt out of a build process, you interact directly with WordPress's [JavaScript APIs](/docs/reference-guides/packages/) through the global `wp` object. This means that all the methods and packages provided by WordPress are readily available, but with one caveat: you must manually manage script dependencies. This is done by adding [the handle](/docs/contributors/code/scripts.md) of each corresponding package to the dependency array of your enqueued JavaScript file.
+When you opt out of a build process, you interact directly with WordPress's [JavaScript APIs](/docs/reference-guides/packages.md) through the global `wp` object. This means that all the methods and packages provided by WordPress are readily available, but with one caveat: you must manually manage script dependencies. This is done by adding [the handle](/docs/contributors/code/scripts.md) of each corresponding package to the dependency array of your enqueued JavaScript file.
-For example, suppose you're creating a script that registers a new block [variation](/docs/reference-guides/block-api/block-variations.md) using the `registerBlockVariation` function from the [`blocks`](/docs/reference-guides/packages/packages-blocks.md) package. You must include `wp-blocks` in your script's dependency array. This guarantees that the `wp.blocks.registerBlockVariation` method is available and defined by the time your script executes.
+For example, suppose you're creating a script that registers a new block [variation](/docs/reference-guides/block-api/block-variations.md) using the `registerBlockVariation` function from the [`blocks`](/packages/blocks/README.md) package. You must include `wp-blocks` in your script's dependency array. This guarantees that the `wp.blocks.registerBlockVariation` method is available and defined by the time your script executes.
In the following example, the `wp-blocks` dependency is defined when enqueuing the `variations.js` file.
From 20f41746aebc0a4c736879419ea9cb7229de08f9 Mon Sep 17 00:00:00 2001
From: Jarda Snajdr
Date: Fri, 13 Dec 2024 11:26:54 +0100
Subject: [PATCH 050/163] Create a catalog list of private APIs (#66558)
* Create a catalog list of private APIs
* Document some private components
* Rewrite the introduction
* Rewrite the introduction again
---
docs/private-apis.md | 340 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 340 insertions(+)
create mode 100644 docs/private-apis.md
diff --git a/docs/private-apis.md b/docs/private-apis.md
new file mode 100644
index 00000000000000..14c1a4aa22472b
--- /dev/null
+++ b/docs/private-apis.md
@@ -0,0 +1,340 @@
+# Gutenberg Private APIs
+
+This is an overview of private APIs exposed by Gutenberg packages. These APIs are used to implement parts of the Gutenberg editor (Post Editor, Site Editor, Core blocks and others) but are not exposed publicly to plugin and theme authors or authors of custom Gutenberg integrations.
+
+The purpose of this document is to present a picture of how many private APIs we have and how they are used to build the Gutenberg editor apps with the libraries and frameworks provided by the family of `@wordpress/*` packages.
+
+## data
+
+The registry has two private methods:
+- `privateActionsOf`
+- `privateSelectorsOf`
+
+Every store has a private API for registering private selectors/actions:
+- `privateActions`
+- `registerPrivateActions`
+- `privateSelectors`
+- `registerPrivateSelectors`
+
+## blocks
+
+### `core/blocks` store
+
+Private actions:
+- `addBlockBindingsSource`
+- `removeBlockBindingsSource`
+- `addBootstrappedBlockType`
+- `addUnprocessedBlockType`
+
+Private selectors:
+- `getAllBlockBindingsSources`
+- `getBlockBindingsSource`
+- `getBootstrappedBlockType`
+- `getSupportedStyles`
+- `getUnprocessedBlockTypes`
+- `hasContentRoleAttribute`
+
+## components
+
+Private exports:
+- `__experimentalPopoverLegacyPositionToPlacement`
+- `ComponentsContext`
+- `Tabs`
+- `Theme`
+- `Menu`
+- `kebabCase`
+
+## commands
+
+Private exports:
+- `useCommandContext` (added May 2023 in #50543)
+
+### `core/commands` store
+
+Private actions:
+- `setContext` (added together with `useCommandContext`)
+
+## preferences
+
+Private exports: (added in Jan 2024 in #57639)
+- `PreferenceBaseOption`
+- `PreferenceToggleControl`
+- `PreferencesModal`
+- `PreferencesModalSection`
+- `PreferencesModalTabs`
+
+There is only one publicly exported component!
+- `PreferenceToggleMenuItem`
+
+## block-editor
+
+Private exports:
+- `AdvancedPanel`
+- `BackgroundPanel`
+- `BorderPanel`
+- `ColorPanel`
+- `DimensionsPanel`
+- `FiltersPanel`
+- `GlobalStylesContext`
+- `ImageSettingsPanel`
+- `TypographyPanel`
+- `areGlobalStyleConfigsEqual`
+- `getBlockCSSSelector`
+- `getBlockSelectors`
+- `getGlobalStylesChanges`
+- `getLayoutStyles`
+- `toStyles`
+- `useGlobalSetting`
+- `useGlobalStyle`
+- `useGlobalStylesOutput`
+- `useGlobalStylesOutputWithConfig`
+- `useGlobalStylesReset`
+- `useHasBackgroundPanel`
+- `useHasBorderPanel`
+- `useHasBorderPanelControls`
+- `useHasColorPanel`
+- `useHasDimensionsPanel`
+- `useHasFiltersPanel`
+- `useHasImageSettingsPanel`
+- `useHasTypographyPanel`
+- `useSettingsForBlockElement`
+- `ExperimentalBlockCanvas`: version of public `BlockCanvas` that has several extra props: `contentRef`, `shouldIframe`, `iframeProps`.
+- `ExperimentalBlockEditorProvider`: version of public `BlockEditorProvider` that filters out several private/experimental settings. See also `__experimentalUpdateSettings`.
+- `getDuotoneFilter`
+- `getRichTextValues`
+- `PrivateQuickInserter`
+- `extractWords`
+- `getNormalizedSearchTerms`
+- `normalizeString`
+- `PrivateListView`
+- `ResizableBoxPopover`
+- `BlockInfo`
+- `useHasBlockToolbar`
+- `cleanEmptyObject`
+- `BlockQuickNavigation`
+- `LayoutStyle`
+- `BlockRemovalWarningModal`
+- `useLayoutClasses`
+- `useLayoutStyles`
+- `DimensionsTool`
+- `ResolutionTool`
+- `TabbedSidebar`
+- `TextAlignmentControl`
+- `usesContextKey`
+- `useFlashEditableBlocks`
+- `useZoomOut`
+- `globalStylesDataKey`
+- `globalStylesLinksDataKey`
+- `selectBlockPatternsKey`
+- `requiresWrapperOnCopy`
+- `PrivateRichText`: has an extra prop `readOnly` added in #58916 and #60327 (Feb and Mar 2024).
+- `PrivateInserterLibrary`: has an extra prop `onPatternCategorySelection` added in #62130 (May 2024).
+- `reusableBlocksSelectKey`
+- `PrivateBlockPopover`: has two extra props, `__unstableContentRef` and `__unstablePopoverSlot`.
+- `PrivatePublishDateTimePicker`: version of public `PublishDateTimePicker` that has two extra props: `isCompact` and `showPopoverHeaderActions`.
+- `useSpacingSizes`
+- `useBlockDisplayTitle`
+- `__unstableBlockStyleVariationOverridesWithConfig`
+- `setBackgroundStyleDefaults`
+- `sectionRootClientIdKey`
+- `__unstableCommentIconFill`
+- `__unstableCommentIconToolbarFill`
+
+### `core/block-editor` store
+
+Private actions:
+- `__experimentalUpdateSettings`: version of public `updateSettings` action that filters out some private/experimental settings.
+- `clearBlockRemovalPrompt`
+- `deleteStyleOverride`
+- `ensureDefaultBlock`
+- `expandBlock`
+- `hideBlockInterface`
+- `modifyContentLockBlock`
+- `privateRemoveBlocks`
+- `resetZoomLevel`
+- `setBlockRemovalRules`
+- `setInsertionPoint`
+- `setLastFocus`
+- `setOpenedBlockSettingsMenu`
+- `setStyleOverride`
+- `setZoomLevel`
+- `showBlockInterface`
+- `startDragging`
+- `stopDragging`
+- `stopEditingAsBlocks`
+
+Private selectors:
+- `getAllPatterns`
+- `getBlockRemovalRules`
+- `getBlockSettings`
+- `getBlockStyles`
+- `getBlockWithoutAttributes`
+- `getClosestAllowedInsertionPoint`
+- `getClosestAllowedInsertionPointForPattern`
+- `getContentLockingParent`
+- `getEnabledBlockParents`
+- `getEnabledClientIdsTree`
+- `getExpandedBlock`
+- `getInserterMediaCategories`
+- `getInsertionPoint`
+- `getLastFocus`
+- `getLastInsertedBlocksClientIds`
+- `getOpenedBlockSettingsMenu`
+- `getParentSectionBlock`
+- `getPatternBySlug`
+- `getRegisteredInserterMediaCategories`
+- `getRemovalPromptData`
+- `getReusableBlocks`
+- `getSectionRootClientId`
+- `getStyleOverrides`
+- `getTemporarilyEditingAsBlocks`
+- `getTemporarilyEditingFocusModeToRevert`
+- `getZoomLevel`
+- `hasAllowedPatterns`
+- `isBlockInterfaceHidden`
+- `isBlockSubtreeDisabled`
+- `isDragging`
+- `isResolvingPatterns`
+- `isSectionBlock`
+- `isZoomOut`
+
+## core-data
+
+Private exports:
+- `useEntityRecordsWithPermissions`
+
+### `core` store
+
+Private actions:
+- `receiveRegisteredPostMeta`
+
+Private selectors:
+- `getBlockPatternsForPostType`
+- `getEntityRecordPermissions`
+- `getEntityRecordsPermissions`
+- `getNavigationFallbackId`
+- `getRegisteredPostMeta`
+- `getUndoManager`
+
+## patterns (package created in Aug 2023 and has no public exports, everything is private)
+
+Private exports:
+- `OverridesPanel`
+- `CreatePatternModal`
+- `CreatePatternModalContents`
+- `DuplicatePatternModal`
+- `isOverridableBlock`
+- `hasOverridableBlocks`
+- `useDuplicatePatternProps`
+- `RenamePatternModal`
+- `PatternsMenuItems`
+- `RenamePatternCategoryModal`
+- `PatternOverridesControls`
+- `ResetOverridesControl`
+- `PatternOverridesBlockControls`
+- `useAddPatternCategory`
+- `PATTERN_TYPES`
+- `PATTERN_DEFAULT_CATEGORY`
+- `PATTERN_USER_CATEGORY`
+- `EXCLUDED_PATTERN_SOURCES`
+- `PATTERN_SYNC_TYPES`
+- `PARTIAL_SYNCING_SUPPORTED_BLOCKS`
+
+### `core/patterns` store
+
+Private actions:
+- `convertSyncedPatternToStatic`
+- `createPattern`
+- `createPatternFromFile`
+- `setEditingPattern`
+
+Private selectors:
+- `isEditingPattern`
+
+## block-library
+
+Private exports:
+- `BlockKeyboardShortcuts`
+
+## router (private exports only)
+
+Private exports:
+- `useHistory`
+- `useLocation`
+- `RouterProvider`
+
+## core-commands (private exports only)
+
+Private exports:
+- `useCommands`
+
+## editor
+
+Private exports:
+- `CreateTemplatePartModal`
+- `BackButton`
+- `EntitiesSavedStatesExtensible`
+- `Editor`
+- `EditorContentSlotFill`
+- `GlobalStylesProvider`
+- `mergeBaseAndUserConfigs`
+- `PluginPostExcerpt`
+- `PostCardPanel`
+- `PreferencesModal`
+- `usePostActions`
+- `ToolsMoreMenuGroup`
+- `ViewMoreMenuGroup`
+- `ResizableEditor`
+- `registerCoreBlockBindingsSources`
+- `interfaceStore`
+- `ActionItem`
+- `ComplementaryArea`
+- `ComplementaryAreaMoreMenuItem`
+- `FullscreenMode`
+- `InterfaceSkeleton`
+- `NavigableRegion`
+- `PinnedItems`
+
+### `core/editor` store
+
+Private actions:
+- `createTemplate`
+- `hideBlockTypes`
+- `registerEntityAction`
+- `registerPostTypeActions`
+- `removeTemplates`
+- `revertTemplate`
+- `saveDirtyEntities`
+- `setCurrentTemplateId`
+- `setIsReady`
+- `showBlockTypes`
+- `unregisterEntityAction`
+
+Private selectors:
+- `getEntityActions`
+- `getInserter`
+- `getInserterSidebarToggleRef`
+- `getListViewToggleRef`
+- `getPostBlocksByName`
+- `getPostIcon`
+- `hasPostMetaChanges`
+- `isEntityReady`
+
+## edit-post
+
+### `core/edit-post` store
+
+Private selectors:
+- `getEditedPostTemplateId`
+
+## edit-site
+
+### `core/edit-site` store
+
+Private actions:
+- `registerRoute`
+- `setEditorCanvasContainerView`
+
+Private selectors:
+- `getRoutes`
+- `getEditorCanvasContainerView`
From d988d2817c5971775a2e340afea5a3b53c17ced0 Mon Sep 17 00:00:00 2001
From: Prasad Karmalkar
Date: Fri, 13 Dec 2024 15:58:40 +0530
Subject: [PATCH 051/163] Refactor "Settings" panel of Columns block to use
ToolsPanel instead of PanelBody (#67910)
Co-authored-by: prasadkarmalkar
Co-authored-by: fabiankaegy
---
packages/block-library/src/columns/edit.js | 47 +++++++++++++++++-----
1 file changed, 36 insertions(+), 11 deletions(-)
diff --git a/packages/block-library/src/columns/edit.js b/packages/block-library/src/columns/edit.js
index f8cf0297302ccd..3d5f298aef8358 100644
--- a/packages/block-library/src/columns/edit.js
+++ b/packages/block-library/src/columns/edit.js
@@ -9,9 +9,10 @@ import clsx from 'clsx';
import { __ } from '@wordpress/i18n';
import {
Notice,
- PanelBody,
RangeControl,
ToggleControl,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import {
@@ -149,9 +150,22 @@ function ColumnInspectorControls( {
}
return (
-
+ {
+ updateColumns( count, minCount );
+ setAttributes( {
+ isStackedOnMobile: true,
+ } );
+ } }
+ >
{ canInsertColumnBlock && (
- <>
+ count }
+ onDeselect={ () => updateColumns( count, minCount ) }
+ >
) }
- >
+
) }
-
+ isShownByDefault
+ hasValue={ () => isStackedOnMobile !== true }
+ onDeselect={ () =>
setAttributes( {
- isStackedOnMobile: ! isStackedOnMobile,
+ isStackedOnMobile: true,
} )
}
- />
-
+ >
+
+ setAttributes( {
+ isStackedOnMobile: ! isStackedOnMobile,
+ } )
+ }
+ />
+
+
);
}
From d90fbad61cf2abd35f242b5d45dad4f0e4116c5a Mon Sep 17 00:00:00 2001
From: Prasad Karmalkar
Date: Fri, 13 Dec 2024 16:01:03 +0530
Subject: [PATCH 052/163] Refactor "Settings" panel of Column block to use
ToolsPanel instead of PanelBody (#67913)
Co-authored-by: prasadkarmalkar
Co-authored-by: fabiankaegy
---
packages/block-library/src/column/edit.js | 40 +++++++++++++++--------
1 file changed, 27 insertions(+), 13 deletions(-)
diff --git a/packages/block-library/src/column/edit.js b/packages/block-library/src/column/edit.js
index a0f3cdcf65393d..b88e72e8da6991 100644
--- a/packages/block-library/src/column/edit.js
+++ b/packages/block-library/src/column/edit.js
@@ -18,8 +18,9 @@ import {
} from '@wordpress/block-editor';
import {
__experimentalUseCustomUnits as useCustomUnits,
- PanelBody,
__experimentalUnitControl as UnitControl,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import { useSelect, useDispatch } from '@wordpress/data';
import { sprintf, __ } from '@wordpress/i18n';
@@ -30,19 +31,32 @@ function ColumnInspectorControls( { width, setAttributes } ) {
availableUnits: availableUnits || [ '%', 'px', 'em', 'rem', 'vw' ],
} );
return (
-
- {
+ setAttributes( { width: undefined } );
+ } }
+ >
+ width !== undefined }
label={ __( 'Width' ) }
- __unstableInputWidth="calc(50% - 8px)"
- __next40pxDefaultSize
- value={ width || '' }
- onChange={ ( nextWidth ) => {
- nextWidth = 0 > parseFloat( nextWidth ) ? '0' : nextWidth;
- setAttributes( { width: nextWidth } );
- } }
- units={ units }
- />
-
+ onDeselect={ () => setAttributes( { width: undefined } ) }
+ isShownByDefault
+ >
+ {
+ nextWidth =
+ 0 > parseFloat( nextWidth ) ? '0' : nextWidth;
+ setAttributes( { width: nextWidth } );
+ } }
+ units={ units }
+ />
+
+
);
}
From 662455d9a5e40327e58c6f71190f254969f71081 Mon Sep 17 00:00:00 2001
From: Andrea Fercia
Date: Fri, 13 Dec 2024 13:45:33 +0100
Subject: [PATCH 053/163] Make sure the sidebar navigation item focus style is
fully visible. (#67817)
Co-authored-by: afercia
Co-authored-by: oandregal
---
.../src/components/sidebar-navigation-item/style.scss | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/packages/edit-site/src/components/sidebar-navigation-item/style.scss b/packages/edit-site/src/components/sidebar-navigation-item/style.scss
index ac1cf8b730861d..230967c4c7e0ed 100644
--- a/packages/edit-site/src/components/sidebar-navigation-item/style.scss
+++ b/packages/edit-site/src/components/sidebar-navigation-item/style.scss
@@ -20,6 +20,11 @@
color: $white;
}
+ // Make sure the focus style is drawn on top of the current item background.
+ &:focus-visible {
+ transform: translateZ(0);
+ }
+
.edit-site-sidebar-navigation-item__drilldown-indicator {
fill: $gray-600;
}
From 673f80d43810fe7d596cef0e4d3543677d85798d Mon Sep 17 00:00:00 2001
From: Manzoor Wani
Date: Fri, 13 Dec 2024 04:57:54 -0800
Subject: [PATCH 054/163] Fix dataviews commonjs export (#67962)
Co-authored-by: manzoorwanijk
Co-authored-by: youknowriad
Co-authored-by: anomiex
---
packages/dataviews/CHANGELOG.md | 18 +++++++++++-------
packages/dataviews/package.json | 3 ++-
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/packages/dataviews/CHANGELOG.md b/packages/dataviews/CHANGELOG.md
index 0468a277ba292e..887c279714ec01 100644
--- a/packages/dataviews/CHANGELOG.md
+++ b/packages/dataviews/CHANGELOG.md
@@ -2,21 +2,25 @@
## Unreleased
+### Bug Fixes
+
+- Fixed commonjs export ([#67962](https://github.com/WordPress/gutenberg/pull/67962))
+
## 4.10.0 (2024-12-11)
## Breaking Changes
- Support showing or hiding title, media and description fields ([#67477](https://github.com/WordPress/gutenberg/pull/67477)).
-- Unify the `title`, `media` and `description` fields for the different layouts. So instead of the previous `view.layout.mediaField`, `view.layout.primaryField` and `view.layout.columnFields`, all the layouts now support these three fields with the following config ([#67477](https://github.com/WordPress/gutenberg/pull/67477)):
+- Unify the `title`, `media` and `description` fields for the different layouts. So instead of the previous `view.layout.mediaField`, `view.layout.primaryField` and `view.layout.columnFields`, all the layouts now support these three fields with the following config ([#67477](https://github.com/WordPress/gutenberg/pull/67477)):
```js
const view = {
- type: 'table',
- titleField: 'title',
- mediaField: 'media',
- descriptionField: 'description',
- fields: [ 'author', 'date' ],
-}
+ type: 'table',
+ titleField: 'title',
+ mediaField: 'media',
+ descriptionField: 'description',
+ fields: [ 'author', 'date' ],
+};
```
## Internal
diff --git a/packages/dataviews/package.json b/packages/dataviews/package.json
index c307085bbea078..7f6d96745acab1 100644
--- a/packages/dataviews/package.json
+++ b/packages/dataviews/package.json
@@ -27,7 +27,8 @@
"exports": {
".": {
"types": "./build-types/index.d.ts",
- "import": "./build-module/index.js"
+ "import": "./build-module/index.js",
+ "default": "./build/index.js"
},
"./wp": {
"types": "./build-types/index.d.ts",
From 750c8e46e2847cbb780278bd3815a4fdf76098a1 Mon Sep 17 00:00:00 2001
From: George Mamadashvili
Date: Fri, 13 Dec 2024 17:03:57 +0400
Subject: [PATCH 055/163] Editor: Remove the 'content-only' check from
'TemplatePartConverterMenuItem' (#67961)
Co-authored-by: Mamaduka
---
.../components/template-part-menu-items/index.js | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)
diff --git a/packages/editor/src/components/template-part-menu-items/index.js b/packages/editor/src/components/template-part-menu-items/index.js
index 0e126644d49938..52c50f91b3933c 100644
--- a/packages/editor/src/components/template-part-menu-items/index.js
+++ b/packages/editor/src/components/template-part-menu-items/index.js
@@ -27,25 +27,16 @@ export default function TemplatePartMenuItems() {
}
function TemplatePartConverterMenuItem( { clientIds, onClose } ) {
- const { isContentOnly, blocks } = useSelect(
+ const { blocks } = useSelect(
( select ) => {
- const { getBlocksByClientId, getBlockEditingMode } =
- select( blockEditorStore );
+ const { getBlocksByClientId } = select( blockEditorStore );
return {
blocks: getBlocksByClientId( clientIds ),
- isContentOnly:
- clientIds.length === 1 &&
- getBlockEditingMode( clientIds[ 0 ] ) === 'contentOnly',
};
},
[ clientIds ]
);
- // Do not show the convert button if the block is in content-only mode.
- if ( isContentOnly ) {
- return null;
- }
-
// Allow converting a single template part to standard blocks.
if ( blocks.length === 1 && blocks[ 0 ]?.name === 'core/template-part' ) {
return (
From 0b1a6b6631ce033f0fa751c2238ba14bf9e3cfce Mon Sep 17 00:00:00 2001
From: Andrea Fercia
Date: Fri, 13 Dec 2024 14:43:22 +0100
Subject: [PATCH 056/163] Improve logic to show entities saved panel
description. (#67971)
* Improve logic to show entities saved panel description.
* Apply CR suggestion
---------
Co-authored-by: afercia
Co-authored-by: Mamaduka
Co-authored-by: t-hamano
---
.../editor/src/components/entities-saved-states/index.js | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/packages/editor/src/components/entities-saved-states/index.js b/packages/editor/src/components/entities-saved-states/index.js
index ad584b0df75574..200473cccff706 100644
--- a/packages/editor/src/components/entities-saved-states/index.js
+++ b/packages/editor/src/components/entities-saved-states/index.js
@@ -115,6 +115,10 @@ export function EntitiesSavedStatesExtensible( {
'description'
);
+ const selectItemsToSaveDescription = !! dirtyEntityRecords.length
+ ? __( 'Select the items you want to save.' )
+ : undefined;
+
return (
}
)
- : __( 'Select the items you want to save.' ) }
+ : selectItemsToSaveDescription }
From 629123201f2f513717fab82b43231c681382da5b Mon Sep 17 00:00:00 2001
From: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
Date: Fri, 13 Dec 2024 22:55:30 +0900
Subject: [PATCH 057/163] Customizer Widgets: Fix inserter button size and
animation (#67880)
Co-authored-by: t-hamano
Co-authored-by: tyxla
Co-authored-by: jameskoster
---
.../src/components/header/style.scss | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/packages/customize-widgets/src/components/header/style.scss b/packages/customize-widgets/src/components/header/style.scss
index 5c3f37a0bf0d42..73789282108af6 100644
--- a/packages/customize-widgets/src/components/header/style.scss
+++ b/packages/customize-widgets/src/components/header/style.scss
@@ -33,16 +33,25 @@
border-radius: $radius-small;
color: $white;
padding: 0;
- min-width: $grid-unit-30;
- height: $grid-unit-30;
+ min-width: $grid-unit-40;
+ height: $grid-unit-40;
margin: $grid-unit-15 0 $grid-unit-15 auto;
&::before {
content: none;
}
+ svg {
+ transition: transform cubic-bezier(0.165, 0.84, 0.44, 1) 0.2s;
+ @include reduce-motion("transition");
+ }
+
&.is-pressed {
background: $gray-900;
+
+ svg {
+ transform: rotate(45deg);
+ }
}
}
From 67557edac8a22538ca3ff9cd9594cf821c5153e9 Mon Sep 17 00:00:00 2001
From: Himanshu Pathak
Date: Fri, 13 Dec 2024 19:34:52 +0530
Subject: [PATCH 058/163] Storybook: Add stories for the TextAlignmentControl
component (#67371)
* Storybook: Add stories for the text-alignment-control component
* Storybook: Update TextAlignmentControl story to follow best practices and simplify the structure
* Storybook: Simplify TextAlignmentControl story
* Storybook: Simplify the documentation for TextAlignmentControl story
Co-authored-by: himanshupathak95
Co-authored-by: t-hamano
---
.../stories/index.story.js | 73 ++++++++++++++-----
1 file changed, 55 insertions(+), 18 deletions(-)
diff --git a/packages/block-editor/src/components/text-alignment-control/stories/index.story.js b/packages/block-editor/src/components/text-alignment-control/stories/index.story.js
index 3744f3fa012a71..fd97f9b60e6a90 100644
--- a/packages/block-editor/src/components/text-alignment-control/stories/index.story.js
+++ b/packages/block-editor/src/components/text-alignment-control/stories/index.story.js
@@ -8,32 +8,69 @@ import { useState } from '@wordpress/element';
*/
import TextAlignmentControl from '../';
-export default {
+const meta = {
title: 'BlockEditor/TextAlignmentControl',
component: TextAlignmentControl,
+ parameters: {
+ docs: {
+ canvas: { sourceState: 'shown' },
+ description: {
+ component: 'Control to facilitate text alignment selections.',
+ },
+ },
+ },
argTypes: {
- onChange: { action: 'onChange' },
- className: { control: 'text' },
+ value: {
+ control: { type: null },
+ description: 'Currently selected text alignment value.',
+ table: {
+ type: {
+ summary: 'string',
+ },
+ },
+ },
+ onChange: {
+ action: 'onChange',
+ control: { type: null },
+ description: 'Handles change in text alignment selection.',
+ table: {
+ type: {
+ summary: 'function',
+ },
+ },
+ },
options: {
control: 'check',
+ description: 'Array of text alignment options to display.',
options: [ 'left', 'center', 'right', 'justify' ],
+ table: {
+ type: { summary: 'array' },
+ },
+ },
+ className: {
+ control: 'text',
+ description: 'Class name to add to the control.',
+ table: {
+ type: { summary: 'string' },
+ },
},
- value: { control: false },
},
};
-const Template = ( { onChange, ...args } ) => {
- const [ value, setValue ] = useState();
- return (
- {
- onChange( ...changeArgs );
- setValue( ...changeArgs );
- } }
- value={ value }
- />
- );
-};
+export default meta;
-export const Default = Template.bind( {} );
+export const Default = {
+ render: function Template( { onChange, ...args } ) {
+ const [ value, setValue ] = useState();
+ return (
+ {
+ onChange( ...changeArgs );
+ setValue( ...changeArgs );
+ } }
+ value={ value }
+ />
+ );
+ },
+};
From 3d17c61018b2e5d37755f690e35e7a0e6eadf5ff Mon Sep 17 00:00:00 2001
From: Lena Morita
Date: Fri, 13 Dec 2024 23:05:33 +0900
Subject: [PATCH 059/163] TreeSelect: Deprecate 36px default size (#67855)
* TreeSelect: Deprecate 36px default size
* Fix types
* Auto-generate readme
* Add changelog
* Fixup readme
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: tyxla
---
packages/components/CHANGELOG.md | 1 +
.../components/src/input-control/types.ts | 6 +-
packages/components/src/tree-select/README.md | 171 +++++++++++++++---
.../src/tree-select/docs-manifest.json | 5 +
packages/components/src/tree-select/index.tsx | 12 +-
.../src/tree-select/stories/index.story.tsx | 1 +
packages/components/src/tree-select/types.ts | 9 +-
7 files changed, 172 insertions(+), 33 deletions(-)
create mode 100644 packages/components/src/tree-select/docs-manifest.json
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index 49cc196b1f7e69..af71c4104b4d97 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -8,6 +8,7 @@
### Deprecations
+- `TreeSelect`: Deprecate 36px default size ([#67855](https://github.com/WordPress/gutenberg/pull/67855)).
- `SelectControl`: Deprecate 36px default size ([#66898](https://github.com/WordPress/gutenberg/pull/66898)).
- `InputControl`: Deprecate 36px default size ([#66897](https://github.com/WordPress/gutenberg/pull/66897)).
diff --git a/packages/components/src/input-control/types.ts b/packages/components/src/input-control/types.ts
index 99c5b1aea92c37..edb69def619057 100644
--- a/packages/components/src/input-control/types.ts
+++ b/packages/components/src/input-control/types.ts
@@ -136,7 +136,7 @@ export interface InputBaseProps extends BaseProps, FlexProps {
* If you want to apply standard padding in accordance with the size variant, wrap the element in
* the provided `` component.
*
- * @example
+ * ```jsx
* import {
* __experimentalInputControl as InputControl,
* __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,
@@ -145,6 +145,7 @@ export interface InputBaseProps extends BaseProps, FlexProps {
* @ }
* />
+ * ```
*/
prefix?: ReactNode;
/**
@@ -154,7 +155,7 @@ export interface InputBaseProps extends BaseProps, FlexProps {
* If you want to apply standard padding in accordance with the size variant, wrap the element in
* the provided `` component.
*
- * @example
+ * ```jsx
* import {
* __experimentalInputControl as InputControl,
* __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,
@@ -163,6 +164,7 @@ export interface InputBaseProps extends BaseProps, FlexProps {
* % }
* />
+ * ```
*/
suffix?: ReactNode;
/**
diff --git a/packages/components/src/tree-select/README.md b/packages/components/src/tree-select/README.md
index 3d26488478bd0c..493c83bf993b0c 100644
--- a/packages/components/src/tree-select/README.md
+++ b/packages/components/src/tree-select/README.md
@@ -1,10 +1,10 @@
# TreeSelect
-TreeSelect component is used to generate select input fields.
+
-## Usage
+See the WordPress Storybook for more detailed, interactive documentation.
-Render a user interface to select the parent page in a hierarchy of pages:
+Generates a hierarchical select input.
```jsx
import { useState } from 'react';
@@ -15,7 +15,8 @@ const MyTreeSelect = () => {
return (
setPage( newPage ) }
@@ -50,51 +51,165 @@ const MyTreeSelect = () => {
);
}
```
-
## Props
-The set of props accepted by the component will be specified below.
-Props not included in this set will be applied to the SelectControl component being used.
+### `__next40pxDefaultSize`
+
+Start opting into the larger default height that will become the default size in a future version.
+
+ - Type: `boolean`
+ - Required: No
+ - Default: `false`
+
+### `__nextHasNoMarginBottom`
+
+Start opting into the new margin-free styles that will become the default in a future version.
+
+ - Type: `boolean`
+ - Required: No
+ - Default: `false`
+
+### `children`
+
+As an alternative to the `options` prop, `optgroup`s and `options` can be
+passed in as `children` for more customizability.
+
+ - Type: `ReactNode`
+ - Required: No
+
+### `disabled`
-### label
+If true, the `input` will be disabled.
+
+ - Type: `boolean`
+ - Required: No
+ - Default: `false`
+
+### `hideLabelFromVision`
+
+If true, the label will only be visible to screen readers.
+
+ - Type: `boolean`
+ - Required: No
+ - Default: `false`
+
+### `help`
+
+Additional description for the control.
+
+Only use for meaningful description or instructions for the control. An element containing the description will be programmatically associated to the BaseControl by the means of an `aria-describedby` attribute.
+
+ - Type: `ReactNode`
+ - Required: No
+
+### `label`
If this property is added, a label will be generated using label property as the content.
-- Type: `String`
-- Required: No
+ - Type: `ReactNode`
+ - Required: No
+
+### `labelPosition`
+
+The position of the label.
-### noOptionLabel
+ - Type: `"top" | "bottom" | "side" | "edge"`
+ - Required: No
+ - Default: `'top'`
+
+### `noOptionLabel`
If this property is added, an option will be added with this label to represent empty selection.
-- Type: `String`
-- Required: No
+ - Type: `string`
+ - Required: No
+
+### `onChange`
+
+A function that receives the value of the new option that is being selected as input.
+
+ - Type: `(value: string, extra?: { event?: ChangeEvent; }) => void`
+ - Required: No
+
+### `options`
+
+An array of option property objects to be rendered,
+each with a `label` and `value` property, as well as any other
+`` attributes.
-### onChange
+ - Type: `readonly ({ label: string; value: string; } & Omit, "label" | "value">)[]`
+ - Required: No
-A function that receives the id of the new node element that is being selected.
+### `prefix`
+
+Renders an element on the left side of the input.
+
+By default, the prefix is aligned with the edge of the input border, with no padding.
+If you want to apply standard padding in accordance with the size variant, wrap the element in
+the provided `` component.
+
+```jsx
+import {
+ __experimentalInputControl as InputControl,
+ __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,
+} from '@wordpress/components';
+
+@ }
+/>
+```
-- Type: `function`
-- Required: Yes
+ - Type: `ReactNode`
+ - Required: No
-### selectedId
+### `selectedId`
The id of the currently selected node.
-- Type: `string` | `string[]`
-- Required: No
+ - Type: `string`
+ - Required: No
-### tree
+### `size`
+
+Adjusts the size of the input.
+
+ - Type: `"default" | "small" | "compact" | "__unstable-large"`
+ - Required: No
+ - Default: `'default'`
+
+### `suffix`
+
+Renders an element on the right side of the input.
+
+By default, the suffix is aligned with the edge of the input border, with no padding.
+If you want to apply standard padding in accordance with the size variant, wrap the element in
+the provided `` component.
+
+```jsx
+import {
+ __experimentalInputControl as InputControl,
+ __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,
+} from '@wordpress/components';
+
+% }
+/>
+```
+
+ - Type: `ReactNode`
+ - Required: No
+
+### `tree`
An array containing the tree objects with the possible nodes the user can select.
-- Type: `Object[]`
-- Required: No
+ - Type: `Tree[]`
+ - Required: No
-#### __nextHasNoMarginBottom
+### `variant`
-Start opting into the new margin-free styles that will become the default in a future version.
+The style variant of the control.
-- Type: `Boolean`
-- Required: No
-- Default: `false`
+ - Type: `"default" | "minimal"`
+ - Required: No
+ - Default: `'default'`
diff --git a/packages/components/src/tree-select/docs-manifest.json b/packages/components/src/tree-select/docs-manifest.json
new file mode 100644
index 00000000000000..0e74d71d309e10
--- /dev/null
+++ b/packages/components/src/tree-select/docs-manifest.json
@@ -0,0 +1,5 @@
+{
+ "$schema": "../../schemas/docs-manifest.json",
+ "displayName": "TreeSelect",
+ "filePath": "./index.tsx"
+}
diff --git a/packages/components/src/tree-select/index.tsx b/packages/components/src/tree-select/index.tsx
index 075ae1268e3c72..66116576361623 100644
--- a/packages/components/src/tree-select/index.tsx
+++ b/packages/components/src/tree-select/index.tsx
@@ -11,6 +11,7 @@ import { SelectControl } from '../select-control';
import type { TreeSelectProps, Tree, Truthy } from './types';
import { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';
import { ContextSystemProvider } from '../context';
+import { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';
const CONTEXT_VALUE = {
BaseControl: {
@@ -35,11 +36,11 @@ function getSelectOptions(
}
/**
- * TreeSelect component is used to generate select input fields.
+ * Generates a hierarchical select input.
*
* ```jsx
+ * import { useState } from 'react';
* import { TreeSelect } from '@wordpress/components';
- * import { useState } from '@wordpress/element';
*
* const MyTreeSelect = () => {
* const [ page, setPage ] = useState( 'p21' );
@@ -47,6 +48,7 @@ function getSelectOptions(
* return (
* setPage( newPage ) }
@@ -99,6 +101,12 @@ export function TreeSelect( props: TreeSelectProps ) {
].filter( < T, >( option: T ): option is Truthy< T > => !! option );
}, [ noOptionLabel, tree ] );
+ maybeWarnDeprecated36pxSize( {
+ componentName: 'TreeSelect',
+ size: restProps.size,
+ __next40pxDefaultSize: restProps.__next40pxDefaultSize,
+ } );
+
return (
= ( props ) => {
export const Default = TreeSelectWithState.bind( {} );
Default.args = {
__nextHasNoMarginBottom: true,
+ __next40pxDefaultSize: true,
label: 'Label Text',
noOptionLabel: 'No parent page',
help: 'Help text to explain the select control.',
diff --git a/packages/components/src/tree-select/types.ts b/packages/components/src/tree-select/types.ts
index da90ece3a658e8..59e8e173fab02f 100644
--- a/packages/components/src/tree-select/types.ts
+++ b/packages/components/src/tree-select/types.ts
@@ -16,11 +16,18 @@ export interface Tree {
// `TreeSelect` inherits props from `SelectControl`, but only
// in single selection mode (ie. when the `multiple` prop is not defined).
export interface TreeSelectProps
- extends Omit< SelectControlSingleSelectionProps, 'value' | 'multiple' > {
+ extends Omit<
+ SelectControlSingleSelectionProps,
+ 'value' | 'multiple' | 'onChange'
+ > {
/**
* If this property is added, an option will be added with this label to represent empty selection.
*/
noOptionLabel?: string;
+ /**
+ * A function that receives the value of the new option that is being selected as input.
+ */
+ onChange?: SelectControlSingleSelectionProps[ 'onChange' ];
/**
* An array containing the tree objects with the possible nodes the user can select.
*/
From c8cdff33b275505b2cc39772eab44fea3553100e Mon Sep 17 00:00:00 2001
From: Sukhendu Sekhar Guria
Date: Fri, 13 Dec 2024 20:00:28 +0530
Subject: [PATCH 060/163] Refactor "Settings" panel of Site Title block to use
ToolsPanel instead of PanelBody (#67898)
Co-authored-by: Sukhendu2002
Co-authored-by: fabiankaegy
---
packages/block-library/src/site-title/edit.js | 60 ++++++++++++++-----
1 file changed, 45 insertions(+), 15 deletions(-)
diff --git a/packages/block-library/src/site-title/edit.js b/packages/block-library/src/site-title/edit.js
index 82e3c1d7f7bb40..644629a96fe4e1 100644
--- a/packages/block-library/src/site-title/edit.js
+++ b/packages/block-library/src/site-title/edit.js
@@ -17,7 +17,11 @@ import {
useBlockProps,
HeadingLevelDropdown,
} from '@wordpress/block-editor';
-import { ToggleControl, PanelBody } from '@wordpress/components';
+import {
+ ToggleControl,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
+} from '@wordpress/components';
import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
import { decodeEntities } from '@wordpress/html-entities';
@@ -109,26 +113,52 @@ export default function SiteTitleEdit( {
/>
-
- {
+ setAttributes( {
+ isLink: false,
+ linkTarget: '_self',
+ } );
+ } }
+ >
+ isLink !== false }
label={ __( 'Make title link to home' ) }
- onChange={ () => setAttributes( { isLink: ! isLink } ) }
- checked={ isLink }
- />
- { isLink && (
+ onDeselect={ () => setAttributes( { isLink: false } ) }
+ isShownByDefault
+ >
- setAttributes( {
- linkTarget: value ? '_blank' : '_self',
- } )
+ label={ __( 'Make title link to home' ) }
+ onChange={ () =>
+ setAttributes( { isLink: ! isLink } )
}
- checked={ linkTarget === '_blank' }
+ checked={ isLink }
/>
+
+ { isLink && (
+ linkTarget !== '_self' }
+ label={ __( 'Open in new tab' ) }
+ onDeselect={ () =>
+ setAttributes( { linkTarget: '_self' } )
+ }
+ isShownByDefault
+ >
+
+ setAttributes( {
+ linkTarget: value ? '_blank' : '_self',
+ } )
+ }
+ checked={ linkTarget === '_blank' }
+ />
+
) }
-
+
{ siteTitleContent }
>
From 0d7f1e32f369159dec5352d10fdb89f5a9063d60 Mon Sep 17 00:00:00 2001
From: Sukhendu Sekhar Guria
Date: Fri, 13 Dec 2024 20:02:36 +0530
Subject: [PATCH 061/163] Refactor "Settings" panel of Excerpt block to use
ToolsPanel instead of PanelBody (#67908)
Co-authored-by: Sukhendu2002
Co-authored-by: fabiankaegy
---
.../block-library/src/post-excerpt/edit.js | 73 +++++++++++++------
1 file changed, 52 insertions(+), 21 deletions(-)
diff --git a/packages/block-library/src/post-excerpt/edit.js b/packages/block-library/src/post-excerpt/edit.js
index 05aaf543b59196..ad2b6300e79e4f 100644
--- a/packages/block-library/src/post-excerpt/edit.js
+++ b/packages/block-library/src/post-excerpt/edit.js
@@ -16,7 +16,12 @@ import {
Warning,
useBlockProps,
} from '@wordpress/block-editor';
-import { PanelBody, ToggleControl, RangeControl } from '@wordpress/components';
+import {
+ ToggleControl,
+ RangeControl,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
+} from '@wordpress/components';
import { __, _x } from '@wordpress/i18n';
import { useSelect } from '@wordpress/data';
@@ -219,29 +224,55 @@ export default function PostExcerptEditor( {
/>
-
- {
+ setAttributes( {
+ showMoreOnNewLine: true,
+ excerptLength: 55,
+ } );
+ } }
+ >
+ showMoreOnNewLine !== true }
label={ __( 'Show link on new line' ) }
- checked={ showMoreOnNewLine }
- onChange={ ( newShowMoreOnNewLine ) =>
- setAttributes( {
- showMoreOnNewLine: newShowMoreOnNewLine,
- } )
+ onDeselect={ () =>
+ setAttributes( { showMoreOnNewLine: true } )
}
- />
-
+
+ setAttributes( {
+ showMoreOnNewLine: newShowMoreOnNewLine,
+ } )
+ }
+ />
+
+ excerptLength !== 55 }
label={ __( 'Max number of words' ) }
- value={ excerptLength }
- onChange={ ( value ) => {
- setAttributes( { excerptLength: value } );
- } }
- min="10"
- max="100"
- />
-
+ onDeselect={ () =>
+ setAttributes( { excerptLength: 55 } )
+ }
+ isShownByDefault
+ >
+ {
+ setAttributes( { excerptLength: value } );
+ } }
+ min="10"
+ max="100"
+ />
+
+
{ excerptContent }
From d0d1045056c3c2a6c96609ea0694a5d29761ccde Mon Sep 17 00:00:00 2001
From: George Mamadashvili
Date: Fri, 13 Dec 2024 18:33:40 +0400
Subject: [PATCH 062/163] Button: Replace ButtonGroup usage with
ToggleGroupControl (#65346)
Co-authored-by: Mamaduka
Co-authored-by: ciampo
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: t-hamano
Co-authored-by: tyxla
Co-authored-by: andreawetzel
---
packages/block-library/src/button/edit.js | 48 ++++++++------------
test/e2e/specs/editor/blocks/buttons.spec.js | 14 +++---
2 files changed, 28 insertions(+), 34 deletions(-)
diff --git a/packages/block-library/src/button/edit.js b/packages/block-library/src/button/edit.js
index 9f2a9048af4c0b..520da26ef9671e 100644
--- a/packages/block-library/src/button/edit.js
+++ b/packages/block-library/src/button/edit.js
@@ -16,13 +16,13 @@ import removeAnchorTag from '../utils/remove-anchor-tag';
import { __ } from '@wordpress/i18n';
import { useEffect, useState, useRef, useMemo } from '@wordpress/element';
import {
- Button,
- ButtonGroup,
TextControl,
ToolbarButton,
Popover,
__experimentalToolsPanel as ToolsPanel,
__experimentalToolsPanelItem as ToolsPanelItem,
+ __experimentalToggleGroupControl as ToggleGroupControl,
+ __experimentalToggleGroupControlOption as ToggleGroupControlOption,
} from '@wordpress/components';
import {
AlignmentControl,
@@ -115,46 +115,38 @@ function useEnter( props ) {
}
function WidthPanel( { selectedWidth, setAttributes } ) {
- function handleChange( newWidth ) {
- // Check if we are toggling the width off
- const width = selectedWidth === newWidth ? undefined : newWidth;
-
- // Update attributes.
- setAttributes( { width } );
- }
-
return (
{
- handleChange( undefined );
- } }
+ resetAll={ () => setAttributes( { width: undefined } ) }
>
!! selectedWidth }
- onDeselect={ () => handleChange( undefined ) }
+ onDeselect={ () => setAttributes( { width: undefined } ) }
+ __nextHasNoMarginBottom
>
-
+
+ setAttributes( { width: newWidth } )
+ }
+ isBlock
+ __next40pxDefaultSize
+ __nextHasNoMarginBottom
+ >
{ [ 25, 50, 75, 100 ].map( ( widthValue ) => {
return (
- handleChange( widthValue ) }
- >
- { widthValue }%
-
+ value={ widthValue }
+ label={ `${ widthValue }%` }
+ />
);
} ) }
-
+
);
diff --git a/test/e2e/specs/editor/blocks/buttons.spec.js b/test/e2e/specs/editor/blocks/buttons.spec.js
index d6b0a0a15c4ea2..c7fdc18429e11e 100644
--- a/test/e2e/specs/editor/blocks/buttons.spec.js
+++ b/test/e2e/specs/editor/blocks/buttons.spec.js
@@ -263,12 +263,14 @@ test.describe( 'Buttons', () => {
await editor.insertBlock( { name: 'core/buttons' } );
await page.keyboard.type( 'Content' );
await editor.openDocumentSettingsSidebar();
- await page.click(
- `role=region[name="Editor settings"i] >> role=tab[name="Settings"i]`
- );
- await page.click(
- 'role=group[name="Button width"i] >> role=button[name="25%"i]'
- );
+ await page
+ .getByRole( 'region', { name: 'Editor settings' } )
+ .getByRole( 'tab', { name: 'Settings' } )
+ .click();
+ await page
+ .getByRole( 'radiogroup', { name: 'Button width' } )
+ .getByRole( 'radio', { name: '25%' } )
+ .click();
// Check the content.
const content = await editor.getEditedPostContent();
From 2b5da49117f7bca612099ae39e36c0c184bd4e99 Mon Sep 17 00:00:00 2001
From: Mayank Tripathi <70465598+Mayank-Tripathi32@users.noreply.github.com>
Date: Fri, 13 Dec 2024 20:16:02 +0530
Subject: [PATCH 063/163] Refactor "Settings" panel of Details block to use
ToolsPanel instead of PanelBody (#67966)
Co-authored-by: Mayank-Tripathi32
Co-authored-by: fabiankaegy
---
packages/block-library/src/details/edit.js | 44 ++++++++++++++++------
1 file changed, 33 insertions(+), 11 deletions(-)
diff --git a/packages/block-library/src/details/edit.js b/packages/block-library/src/details/edit.js
index 314556ba6d5919..14c89b7d0f9f0b 100644
--- a/packages/block-library/src/details/edit.js
+++ b/packages/block-library/src/details/edit.js
@@ -9,7 +9,11 @@ import {
InspectorControls,
} from '@wordpress/block-editor';
import { useSelect } from '@wordpress/data';
-import { PanelBody, ToggleControl } from '@wordpress/components';
+import {
+ ToggleControl,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
+} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
const TEMPLATE = [
@@ -46,18 +50,36 @@ function DetailsEdit( { attributes, setAttributes, clientId } ) {
return (
<>
-
- {
+ setAttributes( {
+ showContent: false,
+ } );
+ } }
+ >
+
+ hasValue={ () => showContent }
+ onDeselect={ () => {
setAttributes( {
- showContent: ! showContent,
- } )
- }
- />
-
+ showContent: false,
+ } );
+ } }
+ >
+
+ setAttributes( {
+ showContent: ! showContent,
+ } )
+ }
+ />
+
+
Date: Fri, 13 Dec 2024 20:23:39 +0530
Subject: [PATCH 064/163] Refactor "Settings" panel of Social Icon block to use
ToolsPanel instead of PanelBody (#67974)
Co-authored-by: Mayank-Tripathi32
Co-authored-by: fabiankaegy
---
.../block-library/src/social-link/edit.js | 24 ++++++++++++++-----
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/packages/block-library/src/social-link/edit.js b/packages/block-library/src/social-link/edit.js
index 91f1e4170b33dd..43fb305d52ffaf 100644
--- a/packages/block-library/src/social-link/edit.js
+++ b/packages/block-library/src/social-link/edit.js
@@ -22,10 +22,10 @@ import { useState, useRef } from '@wordpress/element';
import {
Button,
Dropdown,
- PanelBody,
- PanelRow,
TextControl,
ToolbarButton,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,
} from '@wordpress/components';
import { useMergeRefs } from '@wordpress/compose';
@@ -195,8 +195,20 @@ const SocialLinkEdit = ( {
) }
-
-
+ {
+ setAttributes( { label: undefined } );
+ } }
+ >
+ !! label }
+ onDeselect={ () => {
+ setAttributes( { label: undefined } );
+ } }
+ >
-
-
+
+
Date: Fri, 13 Dec 2024 20:26:38 +0530
Subject: [PATCH 065/163] Refactor "Settings" panel of Login/Logour block to
use ToolsPanel instead of PanelBody (#67909)
Co-authored-by: Infinite-Null
Co-authored-by: fabiankaegy
---
packages/block-library/src/loginout/edit.js | 70 +++++++++++++++------
1 file changed, 50 insertions(+), 20 deletions(-)
diff --git a/packages/block-library/src/loginout/edit.js b/packages/block-library/src/loginout/edit.js
index b6c2e9cf013041..76d6e98b1ccc32 100644
--- a/packages/block-library/src/loginout/edit.js
+++ b/packages/block-library/src/loginout/edit.js
@@ -1,9 +1,13 @@
/**
* WordPress dependencies
*/
-import { PanelBody, ToggleControl } from '@wordpress/components';
-import { __ } from '@wordpress/i18n';
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
+import {
+ ToggleControl,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
+} from '@wordpress/components';
+import { __ } from '@wordpress/i18n';
export default function LoginOutEdit( { attributes, setAttributes } ) {
const { displayLoginAsForm, redirectToCurrent } = attributes;
@@ -11,28 +15,54 @@ export default function LoginOutEdit( { attributes, setAttributes } ) {
return (
<>
-
- {
+ setAttributes( {
+ displayLoginAsForm: false,
+ redirectToCurrent: true,
+ } );
+ } }
+ >
+
- setAttributes( {
- displayLoginAsForm: ! displayLoginAsForm,
- } )
+ isShownByDefault
+ hasValue={ () => displayLoginAsForm }
+ onDeselect={ () =>
+ setAttributes( { displayLoginAsForm: false } )
}
- />
-
+
+ setAttributes( {
+ displayLoginAsForm: ! displayLoginAsForm,
+ } )
+ }
+ />
+
+
- setAttributes( {
- redirectToCurrent: ! redirectToCurrent,
- } )
+ isShownByDefault
+ hasValue={ () => ! redirectToCurrent }
+ onDeselect={ () =>
+ setAttributes( { redirectToCurrent: true } )
}
- />
-
+ >
+
+ setAttributes( {
+ redirectToCurrent: ! redirectToCurrent,
+ } )
+ }
+ />
+
+
Date: Fri, 13 Dec 2024 20:27:22 +0530
Subject: [PATCH 066/163] Refactor "Settings" panel of Tag Cloud block to use
ToolsPanel instead of PanelBody (#67911)
Co-authored-by: Sukhendu2002
Co-authored-by: fabiankaegy
---
packages/block-library/src/tag-cloud/edit.js | 61 ++++++++++++++++---
.../block-library/src/tag-cloud/editor.scss | 8 ---
2 files changed, 53 insertions(+), 16 deletions(-)
diff --git a/packages/block-library/src/tag-cloud/edit.js b/packages/block-library/src/tag-cloud/edit.js
index eeb568e7a89ef1..b41e47faec3699 100644
--- a/packages/block-library/src/tag-cloud/edit.js
+++ b/packages/block-library/src/tag-cloud/edit.js
@@ -4,14 +4,14 @@
import {
Flex,
FlexItem,
- PanelBody,
ToggleControl,
SelectControl,
RangeControl,
__experimentalUnitControl as UnitControl,
__experimentalUseCustomUnits as useCustomUnits,
__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,
- __experimentalVStack as VStack,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
Disabled,
} from '@wordpress/components';
import { useSelect } from '@wordpress/data';
@@ -118,10 +118,25 @@ function TagCloudEdit( { attributes, setAttributes } ) {
const inspectorControls = (
-
- {
+ setAttributes( {
+ taxonomy: 'post_tag',
+ showTagCounts: false,
+ numberOfTags: 45,
+ smallestFontSize: '8pt',
+ largestFontSize: '22pt',
+ } );
+ } }
+ >
+ taxonomy !== 'post_tag' }
+ label={ __( 'Taxonomy' ) }
+ onDeselect={ () =>
+ setAttributes( { taxonomy: 'post_tag' } )
+ }
+ isShownByDefault
>
+
+
+ smallestFontSize !== '8pt' || largestFontSize !== '22pt'
+ }
+ label={ __( 'Font size' ) }
+ onDeselect={ () =>
+ setAttributes( {
+ smallestFontSize: '8pt',
+ largestFontSize: '22pt',
+ } )
+ }
+ isShownByDefault
+ >
+
+ numberOfTags !== 45 }
+ label={ __( 'Number of tags' ) }
+ onDeselect={ () => setAttributes( { numberOfTags: 45 } ) }
+ isShownByDefault
+ >
+
+ showTagCounts !== false }
+ label={ __( 'Show tag counts' ) }
+ onDeselect={ () =>
+ setAttributes( { showTagCounts: false } )
+ }
+ isShownByDefault
+ >
-
-
+
+
);
diff --git a/packages/block-library/src/tag-cloud/editor.scss b/packages/block-library/src/tag-cloud/editor.scss
index e85129e22f1aca..d00a450174f2fd 100644
--- a/packages/block-library/src/tag-cloud/editor.scss
+++ b/packages/block-library/src/tag-cloud/editor.scss
@@ -9,11 +9,3 @@
border: none;
border-radius: inherit;
}
-
-.wp-block-tag-cloud__inspector-settings {
- .components-base-control,
- .components-base-control:last-child {
- // Cancel out extra margins added by block inspector
- margin-bottom: 0;
- }
-}
From 75289cf599ec29cda2dfd6d75298252ec52fa0dc Mon Sep 17 00:00:00 2001
From: Mayank Tripathi <70465598+Mayank-Tripathi32@users.noreply.github.com>
Date: Fri, 13 Dec 2024 20:36:17 +0530
Subject: [PATCH 067/163] Refactor "Settings" panel of Social Icons block to
use ToolsPanel instead of PanelBody (#67975)
Co-authored-by: Mayank-Tripathi32
Co-authored-by: fabiankaegy
---
.../block-library/src/social-links/edit.js | 59 ++++++++++++++-----
1 file changed, 44 insertions(+), 15 deletions(-)
diff --git a/packages/block-library/src/social-links/edit.js b/packages/block-library/src/social-links/edit.js
index 068b34a3a70a4e..af39219af25a1a 100644
--- a/packages/block-library/src/social-links/edit.js
+++ b/packages/block-library/src/social-links/edit.js
@@ -22,9 +22,10 @@ import {
import {
MenuGroup,
MenuItem,
- PanelBody,
ToggleControl,
ToolbarDropdownMenu,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { check } from '@wordpress/icons';
@@ -198,24 +199,52 @@ export function SocialLinksEdit( props ) {
-
- {
+ setAttributes( {
+ openInNewTab: false,
+ showLabels: false,
+ } );
+ } }
+ >
+
- setAttributes( { openInNewTab: ! openInNewTab } )
+ hasValue={ () => !! openInNewTab }
+ onDeselect={ () =>
+ setAttributes( { openInNewTab: false } )
}
- />
-
+
+ setAttributes( {
+ openInNewTab: ! openInNewTab,
+ } )
+ }
+ />
+
+
- setAttributes( { showLabels: ! showLabels } )
+ hasValue={ () => !! showLabels }
+ onDeselect={ () =>
+ setAttributes( { showLabels: false } )
}
- />
-
+ >
+
+ setAttributes( { showLabels: ! showLabels } )
+ }
+ />
+
+
{ colorGradientSettings.hasColorsOrGradients && (
From b371f6e44aba95efb00c9d7f8578e145bc2ae5c5 Mon Sep 17 00:00:00 2001
From: Lena Morita
Date: Sat, 14 Dec 2024 00:10:51 +0900
Subject: [PATCH 068/163] Icons: Deprecate `warning` and rename to
`cautionFilled` (#67895)
* Icons: Deprecate `warning` and rename to `cautionFilled`
* Update changelog
* Update icon
* Update mobile snapshots
* Rename original variable
* Update existing usage in native files
---------
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: jameskoster
Co-authored-by: tyxla
---
.../src/components/audio-player/index.native.js | 4 ++--
.../src/components/contrast-checker/index.native.js | 4 ++--
.../src/audio/test/__snapshots__/edit.native.js.snap | 2 +-
packages/block-library/src/cover/edit.native.js | 7 +++++--
.../src/file/test/__snapshots__/edit.native.js.snap | 2 +-
.../src/components/error-boundary/index.native.js | 4 ++--
packages/icons/CHANGELOG.md | 2 ++
packages/icons/src/icon/stories/index.story.js | 9 ++++++++-
packages/icons/src/icon/stories/keywords.ts | 2 +-
packages/icons/src/index.js | 6 +++++-
packages/icons/src/library/caution-filled.js | 12 ++++++++++++
packages/icons/src/library/warning.js | 12 ------------
12 files changed, 41 insertions(+), 25 deletions(-)
create mode 100644 packages/icons/src/library/caution-filled.js
delete mode 100644 packages/icons/src/library/warning.js
diff --git a/packages/block-editor/src/components/audio-player/index.native.js b/packages/block-editor/src/components/audio-player/index.native.js
index bee31ea5872ef5..734226408cb923 100644
--- a/packages/block-editor/src/components/audio-player/index.native.js
+++ b/packages/block-editor/src/components/audio-player/index.native.js
@@ -17,7 +17,7 @@ import { View } from '@wordpress/primitives';
import { Icon } from '@wordpress/components';
import { withPreferredColorScheme } from '@wordpress/compose';
import { __ } from '@wordpress/i18n';
-import { audio, warning } from '@wordpress/icons';
+import { audio, cautionFilled } from '@wordpress/icons';
import {
requestImageFailedRetryDialog,
requestImageUploadCancelDialog,
@@ -167,7 +167,7 @@ function Player( {
{ isUploadFailed && (
-
+
{ msg }
);
diff --git a/packages/block-library/src/audio/test/__snapshots__/edit.native.js.snap b/packages/block-library/src/audio/test/__snapshots__/edit.native.js.snap
index 4cf28f7063ad31..9cf88d804068af 100644
--- a/packages/block-library/src/audio/test/__snapshots__/edit.native.js.snap
+++ b/packages/block-library/src/audio/test/__snapshots__/edit.native.js.snap
@@ -89,7 +89,7 @@ exports[`Audio block renders audio block error state without crashing 1`] = `
diff --git a/packages/block-library/src/cover/edit.native.js b/packages/block-library/src/cover/edit.native.js
index 99324545bf798e..7f73ec85a798e6 100644
--- a/packages/block-library/src/cover/edit.native.js
+++ b/packages/block-library/src/cover/edit.native.js
@@ -58,7 +58,7 @@ import {
useCallback,
useMemo,
} from '@wordpress/element';
-import { cover as icon, replace, image, warning } from '@wordpress/icons';
+import { cover as icon, replace, image, cautionFilled } from '@wordpress/icons';
import { getProtocol } from '@wordpress/url';
// eslint-disable-next-line no-restricted-imports
import { store as editPostStore } from '@wordpress/edit-post';
@@ -665,7 +665,10 @@ const Cover = ( {
style={ styles.uploadFailedContainer }
>
-
+
) }
diff --git a/packages/block-library/src/file/test/__snapshots__/edit.native.js.snap b/packages/block-library/src/file/test/__snapshots__/edit.native.js.snap
index 5ce876137ade00..0c9d88a2074019 100644
--- a/packages/block-library/src/file/test/__snapshots__/edit.native.js.snap
+++ b/packages/block-library/src/file/test/__snapshots__/edit.native.js.snap
@@ -132,7 +132,7 @@ exports[`File block renders file error state without crashing 1`] = `
diff --git a/packages/editor/src/components/error-boundary/index.native.js b/packages/editor/src/components/error-boundary/index.native.js
index 0de048e8114451..4c05ceb3fc150b 100644
--- a/packages/editor/src/components/error-boundary/index.native.js
+++ b/packages/editor/src/components/error-boundary/index.native.js
@@ -16,7 +16,7 @@ import {
usePreferredColorSchemeStyle,
withPreferredColorScheme,
} from '@wordpress/compose';
-import { warning } from '@wordpress/icons';
+import { cautionFilled } from '@wordpress/icons';
import { Icon } from '@wordpress/components';
/**
@@ -141,7 +141,7 @@ class ErrorBoundary extends Component {
diff --git a/packages/icons/CHANGELOG.md b/packages/icons/CHANGELOG.md
index d622019f1ee783..952e3164d45072 100644
--- a/packages/icons/CHANGELOG.md
+++ b/packages/icons/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+- Deprecate `warning` icon and rename to `cautionFilled` ([#67895](https://github.com/WordPress/gutenberg/pull/67895)).
+
## 10.14.0 (2024-12-11)
## 10.13.0 (2024-11-27)
diff --git a/packages/icons/src/icon/stories/index.story.js b/packages/icons/src/icon/stories/index.story.js
index 8cbf65d9f259e9..406f986e6ef5dc 100644
--- a/packages/icons/src/icon/stories/index.story.js
+++ b/packages/icons/src/icon/stories/index.story.js
@@ -11,7 +11,14 @@ import check from '../../library/check';
import * as icons from '../../';
import keywords from './keywords';
-const { Icon: _Icon, ...availableIcons } = icons;
+const {
+ Icon: _Icon,
+
+ // Deprecated aliases
+ warning: _warning,
+
+ ...availableIcons
+} = icons;
const meta = {
component: Icon,
diff --git a/packages/icons/src/icon/stories/keywords.ts b/packages/icons/src/icon/stories/keywords.ts
index 3fd962e047bc1d..4965bc38c3451c 100644
--- a/packages/icons/src/icon/stories/keywords.ts
+++ b/packages/icons/src/icon/stories/keywords.ts
@@ -1,5 +1,6 @@
const keywords: Partial< Record< keyof typeof import('../../'), string[] > > = {
cancelCircleFilled: [ 'close' ],
+ cautionFilled: [ 'alert', 'caution', 'warning' ],
create: [ 'add' ],
file: [ 'folder' ],
seen: [ 'show' ],
@@ -7,7 +8,6 @@ const keywords: Partial< Record< keyof typeof import('../../'), string[] > > = {
thumbsUp: [ 'like' ],
trash: [ 'delete' ],
unseen: [ 'hide' ],
- warning: [ 'alert', 'caution' ],
};
export default keywords;
diff --git a/packages/icons/src/index.js b/packages/icons/src/index.js
index 14eaec92b78c4d..ab7edf65e496b9 100644
--- a/packages/icons/src/index.js
+++ b/packages/icons/src/index.js
@@ -37,6 +37,11 @@ export { default as caption } from './library/caption';
export { default as capturePhoto } from './library/capture-photo';
export { default as captureVideo } from './library/capture-video';
export { default as category } from './library/category';
+export {
+ /** @deprecated Import `cautionFilled` instead. */
+ default as warning,
+ default as cautionFilled,
+} from './library/caution-filled';
export { default as chartBar } from './library/chart-bar';
export { default as check } from './library/check';
export { default as chevronDown } from './library/chevron-down';
@@ -301,6 +306,5 @@ export { default as update } from './library/update';
export { default as upload } from './library/upload';
export { default as verse } from './library/verse';
export { default as video } from './library/video';
-export { default as warning } from './library/warning';
export { default as widget } from './library/widget';
export { default as wordpress } from './library/wordpress';
diff --git a/packages/icons/src/library/caution-filled.js b/packages/icons/src/library/caution-filled.js
new file mode 100644
index 00000000000000..5e7779db85f862
--- /dev/null
+++ b/packages/icons/src/library/caution-filled.js
@@ -0,0 +1,12 @@
+/**
+ * WordPress dependencies
+ */
+import { SVG, Path } from '@wordpress/primitives';
+
+const cautionFilled = (
+
+
+
+);
+
+export default cautionFilled;
diff --git a/packages/icons/src/library/warning.js b/packages/icons/src/library/warning.js
deleted file mode 100644
index 97086c5c9292bd..00000000000000
--- a/packages/icons/src/library/warning.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * WordPress dependencies
- */
-import { SVG, Path } from '@wordpress/primitives';
-
-const warning = (
-
-
-
-);
-
-export default warning;
From 5931dd517d69d3c567c0445a00f8685f26dff6c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com>
Date: Fri, 13 Dec 2024 16:51:27 +0100
Subject: [PATCH 069/163] Pages: scope padding to custom items (#67977)
Co-authored-by: oandregal
Co-authored-by: afercia
Co-authored-by: jameskoster
---
.../components/sidebar-dataviews/custom-dataviews-list.js | 2 +-
.../edit-site/src/components/sidebar-dataviews/style.scss | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/packages/edit-site/src/components/sidebar-dataviews/custom-dataviews-list.js b/packages/edit-site/src/components/sidebar-dataviews/custom-dataviews-list.js
index 847029e8d6dcfe..467648e814276d 100644
--- a/packages/edit-site/src/components/sidebar-dataviews/custom-dataviews-list.js
+++ b/packages/edit-site/src/components/sidebar-dataviews/custom-dataviews-list.js
@@ -212,7 +212,7 @@ export default function CustomDataViewsList( { type, activeView, isCustom } ) {
{ __( 'Custom Views' ) }
-
+
{ customDataViews.map( ( customViewRecord ) => {
return (
Date: Fri, 13 Dec 2024 20:26:41 +0400
Subject: [PATCH 070/163] Enhancement : Badge Component (#66555)
* Create badge component
* Imports and Manifest
* Add test and capability for additional props using spread operator
* Enhance componenet furthermore
* Generate README via manifest & Add in ignore list
* Lock Badge
* Convert Storybook from CSF 2 to CSF 3 Format
* Improve the component
* New iteration
* Add new icons: Error and Caution
* Utilize new icons
* Update icons
* decrease icon size
* Address feedback
* Fix SVG formatting
* Fix unit test
* Remove unnecessary type (already included)
* Update readme
* Adjust icon keywords
* Add changelog
---------
Co-authored-by: Vrishabhsk
Co-authored-by: jameskoster
Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: rogermattic
Co-authored-by: jasmussen
---
docs/tool/manifest.js | 1 +
packages/components/CHANGELOG.md | 4 ++
packages/components/src/badge/README.md | 22 +++++++
.../components/src/badge/docs-manifest.json | 5 ++
packages/components/src/badge/index.tsx | 66 +++++++++++++++++++
.../src/badge/stories/index.story.tsx | 53 +++++++++++++++
packages/components/src/badge/styles.scss | 38 +++++++++++
packages/components/src/badge/test/index.tsx | 40 +++++++++++
packages/components/src/badge/types.ts | 12 ++++
packages/components/src/private-apis.ts | 2 +
packages/components/src/style.scss | 1 +
packages/icons/CHANGELOG.md | 2 +
packages/icons/src/icon/stories/keywords.ts | 4 +-
packages/icons/src/index.js | 2 +
packages/icons/src/library/caution.js | 16 +++++
packages/icons/src/library/error.js | 16 +++++
packages/icons/src/library/info.js | 8 ++-
17 files changed, 289 insertions(+), 3 deletions(-)
create mode 100644 packages/components/src/badge/README.md
create mode 100644 packages/components/src/badge/docs-manifest.json
create mode 100644 packages/components/src/badge/index.tsx
create mode 100644 packages/components/src/badge/stories/index.story.tsx
create mode 100644 packages/components/src/badge/styles.scss
create mode 100644 packages/components/src/badge/test/index.tsx
create mode 100644 packages/components/src/badge/types.ts
create mode 100644 packages/icons/src/library/caution.js
create mode 100644 packages/icons/src/library/error.js
diff --git a/docs/tool/manifest.js b/docs/tool/manifest.js
index 2004fae84f7ccc..569d78bc5bea8a 100644
--- a/docs/tool/manifest.js
+++ b/docs/tool/manifest.js
@@ -18,6 +18,7 @@ const componentPaths = glob( 'packages/components/src/*/**/README.md', {
'packages/components/src/menu/README.md',
'packages/components/src/tabs/README.md',
'packages/components/src/custom-select-control-v2/README.md',
+ 'packages/components/src/badge/README.md',
],
} );
const packagePaths = glob( 'packages/*/package.json' )
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index af71c4104b4d97..c58817a420a746 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -16,6 +16,10 @@
- `BoxControl`: Better respect for the `min` prop in the Range Slider ([#67819](https://github.com/WordPress/gutenberg/pull/67819)).
+### Experimental
+
+- Add new `Badge` component ([#66555](https://github.com/WordPress/gutenberg/pull/66555)).
+
## 29.0.0 (2024-12-11)
### Breaking Changes
diff --git a/packages/components/src/badge/README.md b/packages/components/src/badge/README.md
new file mode 100644
index 00000000000000..0be531ca6f2df8
--- /dev/null
+++ b/packages/components/src/badge/README.md
@@ -0,0 +1,22 @@
+# Badge
+
+
+
+See the WordPress Storybook for more detailed, interactive documentation.
+
+## Props
+
+### `children`
+
+Text to display inside the badge.
+
+ - Type: `string`
+ - Required: Yes
+
+### `intent`
+
+Badge variant.
+
+ - Type: `"default" | "info" | "success" | "warning" | "error"`
+ - Required: No
+ - Default: `default`
diff --git a/packages/components/src/badge/docs-manifest.json b/packages/components/src/badge/docs-manifest.json
new file mode 100644
index 00000000000000..3b70c0ef228432
--- /dev/null
+++ b/packages/components/src/badge/docs-manifest.json
@@ -0,0 +1,5 @@
+{
+ "$schema": "../../schemas/docs-manifest.json",
+ "displayName": "Badge",
+ "filePath": "./index.tsx"
+}
diff --git a/packages/components/src/badge/index.tsx b/packages/components/src/badge/index.tsx
new file mode 100644
index 00000000000000..8a55f3881215f3
--- /dev/null
+++ b/packages/components/src/badge/index.tsx
@@ -0,0 +1,66 @@
+/**
+ * External dependencies
+ */
+import clsx from 'clsx';
+
+/**
+ * WordPress dependencies
+ */
+import { info, caution, error, published } from '@wordpress/icons';
+
+/**
+ * Internal dependencies
+ */
+import type { BadgeProps } from './types';
+import type { WordPressComponentProps } from '../context';
+import Icon from '../icon';
+
+function Badge( {
+ className,
+ intent = 'default',
+ children,
+ ...props
+}: WordPressComponentProps< BadgeProps, 'span', false > ) {
+ /**
+ * Returns an icon based on the badge context.
+ *
+ * @return The corresponding icon for the provided context.
+ */
+ function contextBasedIcon() {
+ switch ( intent ) {
+ case 'info':
+ return info;
+ case 'success':
+ return published;
+ case 'warning':
+ return caution;
+ case 'error':
+ return error;
+ default:
+ return null;
+ }
+ }
+
+ return (
+
+ { intent !== 'default' && (
+
+ ) }
+ { children }
+
+ );
+}
+
+export default Badge;
diff --git a/packages/components/src/badge/stories/index.story.tsx b/packages/components/src/badge/stories/index.story.tsx
new file mode 100644
index 00000000000000..aaa4bfb3c08f60
--- /dev/null
+++ b/packages/components/src/badge/stories/index.story.tsx
@@ -0,0 +1,53 @@
+/**
+ * External dependencies
+ */
+import type { Meta, StoryObj } from '@storybook/react';
+
+/**
+ * Internal dependencies
+ */
+import Badge from '..';
+
+const meta = {
+ component: Badge,
+ title: 'Components/Containers/Badge',
+ tags: [ 'status-private' ],
+} satisfies Meta< typeof Badge >;
+
+export default meta;
+
+type Story = StoryObj< typeof meta >;
+
+export const Default: Story = {
+ args: {
+ children: 'Code is Poetry',
+ },
+};
+
+export const Info: Story = {
+ args: {
+ ...Default.args,
+ intent: 'info',
+ },
+};
+
+export const Success: Story = {
+ args: {
+ ...Default.args,
+ intent: 'success',
+ },
+};
+
+export const Warning: Story = {
+ args: {
+ ...Default.args,
+ intent: 'warning',
+ },
+};
+
+export const Error: Story = {
+ args: {
+ ...Default.args,
+ intent: 'error',
+ },
+};
diff --git a/packages/components/src/badge/styles.scss b/packages/components/src/badge/styles.scss
new file mode 100644
index 00000000000000..e1e9cd5312d11a
--- /dev/null
+++ b/packages/components/src/badge/styles.scss
@@ -0,0 +1,38 @@
+$badge-colors: (
+ "info": #3858e9,
+ "warning": $alert-yellow,
+ "error": $alert-red,
+ "success": $alert-green,
+);
+
+.components-badge {
+ background-color: color-mix(in srgb, $white 90%, var(--base-color));
+ color: color-mix(in srgb, $black 50%, var(--base-color));
+ padding: 0 $grid-unit-10;
+ min-height: $grid-unit-30;
+ border-radius: $radius-small;
+ font-size: $font-size-small;
+ font-weight: 400;
+ flex-shrink: 0;
+ line-height: $font-line-height-small;
+ width: fit-content;
+ display: flex;
+ align-items: center;
+ gap: 2px;
+
+ &:where(.is-default) {
+ background-color: $gray-100;
+ color: $gray-800;
+ }
+
+ &.has-icon {
+ padding-inline-start: $grid-unit-05;
+ }
+
+ // Generate color variants
+ @each $type, $color in $badge-colors {
+ &.is-#{$type} {
+ --base-color: #{$color};
+ }
+ }
+}
diff --git a/packages/components/src/badge/test/index.tsx b/packages/components/src/badge/test/index.tsx
new file mode 100644
index 00000000000000..47c832eb3c8300
--- /dev/null
+++ b/packages/components/src/badge/test/index.tsx
@@ -0,0 +1,40 @@
+/**
+ * External dependencies
+ */
+import { render, screen } from '@testing-library/react';
+
+/**
+ * Internal dependencies
+ */
+import Badge from '..';
+
+describe( 'Badge', () => {
+ it( 'should render correctly with default props', () => {
+ render( Code is Poetry );
+ const badge = screen.getByText( 'Code is Poetry' );
+ expect( badge ).toBeInTheDocument();
+ expect( badge.tagName ).toBe( 'SPAN' );
+ expect( badge ).toHaveClass( 'components-badge' );
+ } );
+
+ it( 'should render as per its intent and contain an icon', () => {
+ render( Code is Poetry );
+ const badge = screen.getByText( 'Code is Poetry' );
+ expect( badge ).toHaveClass( 'components-badge', 'is-error' );
+ expect( badge ).toHaveClass( 'has-icon' );
+ } );
+
+ it( 'should combine custom className with default class', () => {
+ render( Code is Poetry );
+ const badge = screen.getByText( 'Code is Poetry' );
+ expect( badge ).toHaveClass( 'components-badge' );
+ expect( badge ).toHaveClass( 'custom-class' );
+ } );
+
+ it( 'should pass through additional props', () => {
+ render( Code is Poetry );
+ const badge = screen.getByTestId( 'custom-badge' );
+ expect( badge ).toHaveTextContent( 'Code is Poetry' );
+ expect( badge ).toHaveClass( 'components-badge' );
+ } );
+} );
diff --git a/packages/components/src/badge/types.ts b/packages/components/src/badge/types.ts
new file mode 100644
index 00000000000000..91cd7c39b549bb
--- /dev/null
+++ b/packages/components/src/badge/types.ts
@@ -0,0 +1,12 @@
+export type BadgeProps = {
+ /**
+ * Badge variant.
+ *
+ * @default 'default'
+ */
+ intent?: 'default' | 'info' | 'success' | 'warning' | 'error';
+ /**
+ * Text to display inside the badge.
+ */
+ children: string;
+};
diff --git a/packages/components/src/private-apis.ts b/packages/components/src/private-apis.ts
index 2ced100dc576be..f5a9ee90519c2d 100644
--- a/packages/components/src/private-apis.ts
+++ b/packages/components/src/private-apis.ts
@@ -8,6 +8,7 @@ import Theme from './theme';
import { Tabs } from './tabs';
import { kebabCase } from './utils/strings';
import { lock } from './lock-unlock';
+import Badge from './badge';
export const privateApis = {};
lock( privateApis, {
@@ -17,4 +18,5 @@ lock( privateApis, {
Theme,
Menu,
kebabCase,
+ Badge,
} );
diff --git a/packages/components/src/style.scss b/packages/components/src/style.scss
index 70317f4a2d0e0b..368dec0f5e253d 100644
--- a/packages/components/src/style.scss
+++ b/packages/components/src/style.scss
@@ -10,6 +10,7 @@
// Components
@import "./animate/style.scss";
@import "./autocomplete/style.scss";
+@import "./badge/styles.scss";
@import "./button-group/style.scss";
@import "./button/style.scss";
@import "./checkbox-control/style.scss";
diff --git a/packages/icons/CHANGELOG.md b/packages/icons/CHANGELOG.md
index 952e3164d45072..64c1a58b549caf 100644
--- a/packages/icons/CHANGELOG.md
+++ b/packages/icons/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+- Add new `caution` icon ([#66555](https://github.com/WordPress/gutenberg/pull/66555)).
+- Add new `error` icon ([#66555](https://github.com/WordPress/gutenberg/pull/66555)).
- Deprecate `warning` icon and rename to `cautionFilled` ([#67895](https://github.com/WordPress/gutenberg/pull/67895)).
## 10.14.0 (2024-12-11)
diff --git a/packages/icons/src/icon/stories/keywords.ts b/packages/icons/src/icon/stories/keywords.ts
index 4965bc38c3451c..4de5ae9a7dae93 100644
--- a/packages/icons/src/icon/stories/keywords.ts
+++ b/packages/icons/src/icon/stories/keywords.ts
@@ -1,7 +1,9 @@
const keywords: Partial< Record< keyof typeof import('../../'), string[] > > = {
cancelCircleFilled: [ 'close' ],
- cautionFilled: [ 'alert', 'caution', 'warning' ],
+ caution: [ 'alert', 'warning' ],
+ cautionFilled: [ 'alert', 'warning' ],
create: [ 'add' ],
+ error: [ 'alert', 'caution', 'warning' ],
file: [ 'folder' ],
seen: [ 'show' ],
thumbsDown: [ 'dislike' ],
diff --git a/packages/icons/src/index.js b/packages/icons/src/index.js
index ab7edf65e496b9..e82b09e5d5afe9 100644
--- a/packages/icons/src/index.js
+++ b/packages/icons/src/index.js
@@ -37,6 +37,7 @@ export { default as caption } from './library/caption';
export { default as capturePhoto } from './library/capture-photo';
export { default as captureVideo } from './library/capture-video';
export { default as category } from './library/category';
+export { default as caution } from './library/caution';
export {
/** @deprecated Import `cautionFilled` instead. */
default as warning,
@@ -89,6 +90,7 @@ export { default as download } from './library/download';
export { default as edit } from './library/edit';
export { default as envelope } from './library/envelope';
export { default as external } from './library/external';
+export { default as error } from './library/error';
export { default as file } from './library/file';
export { default as filter } from './library/filter';
export { default as flipHorizontal } from './library/flip-horizontal';
diff --git a/packages/icons/src/library/caution.js b/packages/icons/src/library/caution.js
new file mode 100644
index 00000000000000..f6d23fdfc7eddf
--- /dev/null
+++ b/packages/icons/src/library/caution.js
@@ -0,0 +1,16 @@
+/**
+ * WordPress dependencies
+ */
+import { SVG, Path } from '@wordpress/primitives';
+
+const caution = (
+
+
+
+);
+
+export default caution;
diff --git a/packages/icons/src/library/error.js b/packages/icons/src/library/error.js
new file mode 100644
index 00000000000000..2dc2bccbf639ce
--- /dev/null
+++ b/packages/icons/src/library/error.js
@@ -0,0 +1,16 @@
+/**
+ * WordPress dependencies
+ */
+import { SVG, Path } from '@wordpress/primitives';
+
+const error = (
+
+
+
+);
+
+export default error;
diff --git a/packages/icons/src/library/info.js b/packages/icons/src/library/info.js
index f3425d9e950415..24d41d798263f7 100644
--- a/packages/icons/src/library/info.js
+++ b/packages/icons/src/library/info.js
@@ -4,8 +4,12 @@
import { SVG, Path } from '@wordpress/primitives';
const info = (
-
-
+
+
);
From 9bdbadaa011c28b94b01694cafc80e5a3aaa42b1 Mon Sep 17 00:00:00 2001
From: Sarah Norris <1645628+mikachan@users.noreply.github.com>
Date: Fri, 13 Dec 2024 17:29:42 +0000
Subject: [PATCH 071/163] Pages: Add "Set as posts page" action (#67650)
* Move getItemTitle to its own file
* Add unset homepage action
* Add unset as posts page action
* Add set as posts page action
* Update homepage action tests
* Rename unset options to reset
* Reword posts page reset notice
* Ensure Move to trash is always at end of list
* Update packages/editor/src/components/post-actions/actions.js
Co-authored-by: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
* Update packages/editor/src/components/post-actions/reset-homepage.js
Co-authored-by: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
* Remove getItemTitle from utils index.js
* Remove reset actions
* Slight refactor to modal warning in set as posts page action
* Remove use of saveEditedEntityRecord
* Check for currentPostsPage before setting modalwarning
* Add full stop to action success notices
---------
Co-authored-by: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
Co-authored-by: mikachan
Co-authored-by: t-hamano
Co-authored-by: oandregal
Co-authored-by: jameskoster
Co-authored-by: jasmussen
Co-authored-by: paaljoachim
Co-authored-by: youknowriad
---
.../src/components/post-actions/actions.js | 16 +-
.../post-actions/set-as-homepage.js | 38 +----
.../post-actions/set-as-posts-page.js | 158 ++++++++++++++++++
packages/editor/src/utils/get-item-title.js | 25 +++
.../site-editor/homepage-settings.spec.js | 56 ++++++-
5 files changed, 251 insertions(+), 42 deletions(-)
create mode 100644 packages/editor/src/components/post-actions/set-as-posts-page.js
create mode 100644 packages/editor/src/utils/get-item-title.js
diff --git a/packages/editor/src/components/post-actions/actions.js b/packages/editor/src/components/post-actions/actions.js
index 808134ea969a11..023b93d31bb511 100644
--- a/packages/editor/src/components/post-actions/actions.js
+++ b/packages/editor/src/components/post-actions/actions.js
@@ -11,6 +11,7 @@ import { store as coreStore } from '@wordpress/core-data';
import { store as editorStore } from '../../store';
import { unlock } from '../../lock-unlock';
import { useSetAsHomepageAction } from './set-as-homepage';
+import { useSetAsPostsPageAction } from './set-as-posts-page';
export function usePostActions( { postType, onActionPerformed, context } ) {
const { defaultActions } = useSelect(
@@ -43,7 +44,8 @@ export function usePostActions( { postType, onActionPerformed, context } ) {
);
const setAsHomepageAction = useSetAsHomepageAction();
- const shouldShowSetAsHomepageAction =
+ const setAsPostsPageAction = useSetAsPostsPageAction();
+ const shouldShowHomepageActions =
canManageOptions && ! hasFrontPageTemplate;
const { registerPostTypeSchema } = unlock( useDispatch( editorStore ) );
@@ -53,10 +55,15 @@ export function usePostActions( { postType, onActionPerformed, context } ) {
return useMemo( () => {
let actions = [ ...defaultActions ];
- if ( shouldShowSetAsHomepageAction ) {
- actions.push( setAsHomepageAction );
+ if ( shouldShowHomepageActions ) {
+ actions.push( setAsHomepageAction, setAsPostsPageAction );
}
+ // Ensure "Move to trash" is always the last action.
+ actions = actions.sort( ( a, b ) =>
+ b.id === 'move-to-trash' ? -1 : 0
+ );
+
// Filter actions based on provided context. If not provided
// all actions are returned. We'll have a single entry for getting the actions
// and the consumer should provide the context to filter the actions, if needed.
@@ -123,6 +130,7 @@ export function usePostActions( { postType, onActionPerformed, context } ) {
defaultActions,
onActionPerformed,
setAsHomepageAction,
- shouldShowSetAsHomepageAction,
+ setAsPostsPageAction,
+ shouldShowHomepageActions,
] );
}
diff --git a/packages/editor/src/components/post-actions/set-as-homepage.js b/packages/editor/src/components/post-actions/set-as-homepage.js
index 0252c84e3ab3ff..671906575b4123 100644
--- a/packages/editor/src/components/post-actions/set-as-homepage.js
+++ b/packages/editor/src/components/post-actions/set-as-homepage.js
@@ -12,20 +12,11 @@ import {
import { useDispatch, useSelect } from '@wordpress/data';
import { store as coreStore } from '@wordpress/core-data';
import { store as noticesStore } from '@wordpress/notices';
-import { decodeEntities } from '@wordpress/html-entities';
-const getItemTitle = ( item ) => {
- if ( typeof item.title === 'string' ) {
- return decodeEntities( item.title );
- }
- if ( item.title && 'rendered' in item.title ) {
- return decodeEntities( item.title.rendered );
- }
- if ( item.title && 'raw' in item.title ) {
- return decodeEntities( item.title.raw );
- }
- return '';
-};
+/**
+ * Internal dependencies
+ */
+import { getItemTitle } from '../../utils/get-item-title';
const SetAsHomepageModal = ( { items, closeModal } ) => {
const [ item ] = items;
@@ -48,8 +39,7 @@ const SetAsHomepageModal = ( { items, closeModal } ) => {
}
);
- const { saveEditedEntityRecord, saveEntityRecord } =
- useDispatch( coreStore );
+ const { saveEntityRecord } = useDispatch( coreStore );
const { createSuccessNotice, createErrorNotice } =
useDispatch( noticesStore );
@@ -57,29 +47,19 @@ const SetAsHomepageModal = ( { items, closeModal } ) => {
event.preventDefault();
try {
- // Save new home page settings.
- await saveEditedEntityRecord( 'root', 'site', undefined, {
- page_on_front: item.id,
- show_on_front: 'page',
- } );
-
- // This second call to a save function is a workaround for a bug in
- // `saveEditedEntityRecord`. This forces the root site settings to be updated.
- // See https://github.com/WordPress/gutenberg/issues/67161.
await saveEntityRecord( 'root', 'site', {
page_on_front: item.id,
show_on_front: 'page',
} );
- createSuccessNotice( __( 'Homepage updated' ), {
+ createSuccessNotice( __( 'Homepage updated.' ), {
type: 'snackbar',
} );
} catch ( error ) {
- const typedError = error;
const errorMessage =
- typedError.message && typedError.code !== 'unknown_error'
- ? typedError.message
- : __( 'An error occurred while setting the homepage' );
+ error.message && error.code !== 'unknown_error'
+ ? error.message
+ : __( 'An error occurred while setting the homepage.' );
createErrorNotice( errorMessage, { type: 'snackbar' } );
} finally {
closeModal?.();
diff --git a/packages/editor/src/components/post-actions/set-as-posts-page.js b/packages/editor/src/components/post-actions/set-as-posts-page.js
new file mode 100644
index 00000000000000..67c42a7991fe45
--- /dev/null
+++ b/packages/editor/src/components/post-actions/set-as-posts-page.js
@@ -0,0 +1,158 @@
+/**
+ * WordPress dependencies
+ */
+import { __, sprintf } from '@wordpress/i18n';
+import { useMemo } from '@wordpress/element';
+import {
+ Button,
+ __experimentalText as Text,
+ __experimentalHStack as HStack,
+ __experimentalVStack as VStack,
+} from '@wordpress/components';
+import { useDispatch, useSelect } from '@wordpress/data';
+import { store as coreStore } from '@wordpress/core-data';
+import { store as noticesStore } from '@wordpress/notices';
+
+/**
+ * Internal dependencies
+ */
+import { getItemTitle } from '../../utils/get-item-title';
+
+const SetAsPostsPageModal = ( { items, closeModal } ) => {
+ const [ item ] = items;
+ const pageTitle = getItemTitle( item );
+ const { currentPostsPage, isPageForPostsSet, isSaving } = useSelect(
+ ( select ) => {
+ const { getEntityRecord, isSavingEntityRecord } =
+ select( coreStore );
+ const siteSettings = getEntityRecord( 'root', 'site' );
+ const currentPostsPageItem = getEntityRecord(
+ 'postType',
+ 'page',
+ siteSettings?.page_for_posts
+ );
+ return {
+ currentPostsPage: currentPostsPageItem,
+ isPageForPostsSet: siteSettings?.page_for_posts !== 0,
+ isSaving: isSavingEntityRecord( 'root', 'site' ),
+ };
+ }
+ );
+
+ const { saveEntityRecord } = useDispatch( coreStore );
+ const { createSuccessNotice, createErrorNotice } =
+ useDispatch( noticesStore );
+
+ async function onSetPageAsPostsPage( event ) {
+ event.preventDefault();
+
+ try {
+ await saveEntityRecord( 'root', 'site', {
+ page_for_posts: item.id,
+ show_on_front: 'page',
+ } );
+
+ createSuccessNotice( __( 'Posts page updated.' ), {
+ type: 'snackbar',
+ } );
+ } catch ( error ) {
+ const errorMessage =
+ error.message && error.code !== 'unknown_error'
+ ? error.message
+ : __( 'An error occurred while setting the posts page.' );
+ createErrorNotice( errorMessage, { type: 'snackbar' } );
+ } finally {
+ closeModal?.();
+ }
+ }
+
+ const modalWarning =
+ isPageForPostsSet && currentPostsPage
+ ? sprintf(
+ // translators: %s: title of the current posts page.
+ __( 'This will replace the current posts page: "%s"' ),
+ getItemTitle( currentPostsPage )
+ )
+ : __( 'This page will show the latest posts.' );
+
+ const modalText = sprintf(
+ // translators: %1$s: title of the page to be set as the posts page, %2$s: posts page replacement warning message.
+ __( 'Set "%1$s" as the posts page? %2$s' ),
+ pageTitle,
+ modalWarning
+ );
+
+ // translators: Button label to confirm setting the specified page as the posts page.
+ const modalButtonLabel = __( 'Set posts page' );
+
+ return (
+
+ );
+};
+
+export const useSetAsPostsPageAction = () => {
+ const { pageOnFront, pageForPosts } = useSelect( ( select ) => {
+ const { getEntityRecord } = select( coreStore );
+ const siteSettings = getEntityRecord( 'root', 'site' );
+ return {
+ pageOnFront: siteSettings?.page_on_front,
+ pageForPosts: siteSettings?.page_for_posts,
+ };
+ } );
+
+ return useMemo(
+ () => ( {
+ id: 'set-as-posts-page',
+ label: __( 'Set as posts page' ),
+ isEligible( post ) {
+ if ( post.status !== 'publish' ) {
+ return false;
+ }
+
+ if ( post.type !== 'page' ) {
+ return false;
+ }
+
+ // Don't show the action if the page is already set as the homepage.
+ if ( pageOnFront === post.id ) {
+ return false;
+ }
+
+ // Don't show the action if the page is already set as the page for posts.
+ if ( pageForPosts === post.id ) {
+ return false;
+ }
+
+ return true;
+ },
+ RenderModal: SetAsPostsPageModal,
+ } ),
+ [ pageForPosts, pageOnFront ]
+ );
+};
diff --git a/packages/editor/src/utils/get-item-title.js b/packages/editor/src/utils/get-item-title.js
new file mode 100644
index 00000000000000..86929c27408a81
--- /dev/null
+++ b/packages/editor/src/utils/get-item-title.js
@@ -0,0 +1,25 @@
+/**
+ * WordPress dependencies
+ */
+import { decodeEntities } from '@wordpress/html-entities';
+
+/**
+ * Helper function to get the title of a post item.
+ * This is duplicated from the `@wordpress/fields` package.
+ * `packages/fields/src/actions/utils.ts`
+ *
+ * @param {Object} item The post item.
+ * @return {string} The title of the item, or an empty string if the title is not found.
+ */
+export function getItemTitle( item ) {
+ if ( typeof item.title === 'string' ) {
+ return decodeEntities( item.title );
+ }
+ if ( item.title && 'rendered' in item.title ) {
+ return decodeEntities( item.title.rendered );
+ }
+ if ( item.title && 'raw' in item.title ) {
+ return decodeEntities( item.title.raw );
+ }
+ return '';
+}
diff --git a/test/e2e/specs/site-editor/homepage-settings.spec.js b/test/e2e/specs/site-editor/homepage-settings.spec.js
index d53130af23ac8b..e80e14830364ce 100644
--- a/test/e2e/specs/site-editor/homepage-settings.spec.js
+++ b/test/e2e/specs/site-editor/homepage-settings.spec.js
@@ -10,6 +10,14 @@ test.describe( 'Homepage Settings via Editor', () => {
title: 'Homepage',
status: 'publish',
} );
+ await requestUtils.createPage( {
+ title: 'Sample page',
+ status: 'publish',
+ } );
+ await requestUtils.createPage( {
+ title: 'Draft page',
+ status: 'draft',
+ } );
} );
test.beforeEach( async ( { admin, page } ) => {
@@ -28,27 +36,30 @@ test.describe( 'Homepage Settings via Editor', () => {
] );
} );
- test( 'should show "Set as homepage" action on pages with `publish` status', async ( {
+ test( 'should not show "Set as homepage" and "Set as posts page" action on pages with `draft` status', async ( {
page,
} ) => {
- const samplePage = page
+ const draftPage = page
.getByRole( 'gridcell' )
- .getByLabel( 'Homepage' );
- const samplePageRow = page
+ .getByLabel( 'Draft page' );
+ const draftPageRow = page
.getByRole( 'row' )
- .filter( { has: samplePage } );
- await samplePageRow.hover();
- await samplePageRow
+ .filter( { has: draftPage } );
+ await draftPageRow.hover();
+ await draftPageRow
.getByRole( 'button', {
name: 'Actions',
} )
.click();
await expect(
page.getByRole( 'menuitem', { name: 'Set as homepage' } )
- ).toBeVisible();
+ ).toBeHidden();
+ await expect(
+ page.getByRole( 'menuitem', { name: 'Set as posts page' } )
+ ).toBeHidden();
} );
- test( 'should not show "Set as homepage" action on current homepage', async ( {
+ test( 'should show correct homepage actions based on current homepage or posts page', async ( {
page,
} ) => {
const samplePage = page
@@ -68,5 +79,32 @@ test.describe( 'Homepage Settings via Editor', () => {
await expect(
page.getByRole( 'menuitem', { name: 'Set as homepage' } )
).toBeHidden();
+ await expect(
+ page.getByRole( 'menuitem', { name: 'Set as posts page' } )
+ ).toBeHidden();
+
+ const samplePageTwo = page
+ .getByRole( 'gridcell' )
+ .getByLabel( 'Sample page' );
+ const samplePageTwoRow = page
+ .getByRole( 'row' )
+ .filter( { has: samplePageTwo } );
+ // eslint-disable-next-line playwright/no-force-option
+ await samplePageTwoRow.click( { force: true } );
+ await samplePageTwoRow
+ .getByRole( 'button', {
+ name: 'Actions',
+ } )
+ .click();
+ await page
+ .getByRole( 'menuitem', { name: 'Set as posts page' } )
+ .click();
+ await page.getByRole( 'button', { name: 'Set posts page' } ).click();
+ await expect(
+ page.getByRole( 'menuitem', { name: 'Set as homepage' } )
+ ).toBeHidden();
+ await expect(
+ page.getByRole( 'menuitem', { name: 'Set as posts page' } )
+ ).toBeHidden();
} );
} );
From 8066995500dd2370dfc3c3b0f5b471506bf3c6ae Mon Sep 17 00:00:00 2001
From: Jarda Snajdr
Date: Fri, 13 Dec 2024 22:23:00 +0100
Subject: [PATCH 072/163] SlotFill: use observableMap everywhere, remove manual
rerendering (#67400)
* SlotFill: use observableMap in base version
* Add changelog entry
---
packages/components/CHANGELOG.md | 4 +
packages/components/src/slot-fill/context.ts | 8 +-
packages/components/src/slot-fill/fill.ts | 25 ++--
.../components/src/slot-fill/provider.tsx | 127 +++++++++---------
packages/components/src/slot-fill/slot.tsx | 63 +++++----
packages/components/src/slot-fill/types.ts | 34 +++--
packages/components/src/slot-fill/use-slot.ts | 27 ----
7 files changed, 143 insertions(+), 145 deletions(-)
delete mode 100644 packages/components/src/slot-fill/use-slot.ts
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index c58817a420a746..fef1769c19b0f7 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -20,6 +20,10 @@
- Add new `Badge` component ([#66555](https://github.com/WordPress/gutenberg/pull/66555)).
+### Internal
+
+- `SlotFill`: rewrite the non-portal version to use `observableMap` ([#67400](https://github.com/WordPress/gutenberg/pull/67400)).
+
## 29.0.0 (2024-12-11)
### Breaking Changes
diff --git a/packages/components/src/slot-fill/context.ts b/packages/components/src/slot-fill/context.ts
index c4839462fbce0c..b1f0718180e9eb 100644
--- a/packages/components/src/slot-fill/context.ts
+++ b/packages/components/src/slot-fill/context.ts
@@ -1,20 +1,22 @@
/**
* WordPress dependencies
*/
+import { observableMap } from '@wordpress/compose';
import { createContext } from '@wordpress/element';
+
/**
* Internal dependencies
*/
import type { BaseSlotFillContext } from './types';
const initialValue: BaseSlotFillContext = {
+ slots: observableMap(),
+ fills: observableMap(),
registerSlot: () => {},
unregisterSlot: () => {},
registerFill: () => {},
unregisterFill: () => {},
- getSlot: () => undefined,
- getFills: () => [],
- subscribe: () => () => {},
+ updateFill: () => {},
};
export const SlotFillContext = createContext( initialValue );
diff --git a/packages/components/src/slot-fill/fill.ts b/packages/components/src/slot-fill/fill.ts
index 0a31c8276b3f10..0bd1aec8fa3e0e 100644
--- a/packages/components/src/slot-fill/fill.ts
+++ b/packages/components/src/slot-fill/fill.ts
@@ -7,31 +7,26 @@ import { useContext, useLayoutEffect, useRef } from '@wordpress/element';
* Internal dependencies
*/
import SlotFillContext from './context';
-import useSlot from './use-slot';
import type { FillComponentProps } from './types';
export default function Fill( { name, children }: FillComponentProps ) {
const registry = useContext( SlotFillContext );
- const slot = useSlot( name );
+ const instanceRef = useRef( {} );
+ const childrenRef = useRef( children );
- const ref = useRef( {
- name,
- children,
- } );
+ useLayoutEffect( () => {
+ childrenRef.current = children;
+ }, [ children ] );
useLayoutEffect( () => {
- const refValue = ref.current;
- refValue.name = name;
- registry.registerFill( name, refValue );
- return () => registry.unregisterFill( name, refValue );
+ const instance = instanceRef.current;
+ registry.registerFill( name, instance, childrenRef.current );
+ return () => registry.unregisterFill( name, instance );
}, [ registry, name ] );
useLayoutEffect( () => {
- ref.current.children = children;
- if ( slot ) {
- slot.rerender();
- }
- }, [ slot, children ] );
+ registry.updateFill( name, instanceRef.current, childrenRef.current );
+ } );
return null;
}
diff --git a/packages/components/src/slot-fill/provider.tsx b/packages/components/src/slot-fill/provider.tsx
index e2b98e73e1b707..e5319bc7f33e44 100644
--- a/packages/components/src/slot-fill/provider.tsx
+++ b/packages/components/src/slot-fill/provider.tsx
@@ -8,103 +8,102 @@ import { useState } from '@wordpress/element';
*/
import SlotFillContext from './context';
import type {
- FillComponentProps,
+ FillInstance,
+ FillChildren,
+ BaseSlotInstance,
BaseSlotFillContext,
SlotFillProviderProps,
SlotKey,
- Rerenderable,
} from './types';
+import { observableMap } from '@wordpress/compose';
function createSlotRegistry(): BaseSlotFillContext {
- const slots: Record< SlotKey, Rerenderable > = {};
- const fills: Record< SlotKey, FillComponentProps[] > = {};
- let listeners: Array< () => void > = [];
-
- function registerSlot( name: SlotKey, slot: Rerenderable ) {
- const previousSlot = slots[ name ];
- slots[ name ] = slot;
- triggerListeners();
-
- // Sometimes the fills are registered after the initial render of slot
- // But before the registerSlot call, we need to rerender the slot.
- forceUpdateSlot( name );
-
- // If a new instance of a slot is being mounted while another with the
- // same name exists, force its update _after_ the new slot has been
- // assigned into the instance, such that its own rendering of children
- // will be empty (the new Slot will subsume all fills for this name).
- if ( previousSlot ) {
- previousSlot.rerender();
- }
- }
-
- function registerFill( name: SlotKey, instance: FillComponentProps ) {
- fills[ name ] = [ ...( fills[ name ] || [] ), instance ];
- forceUpdateSlot( name );
+ const slots = observableMap< SlotKey, BaseSlotInstance >();
+ const fills = observableMap<
+ SlotKey,
+ { instance: FillInstance; children: FillChildren }[]
+ >();
+
+ function registerSlot( name: SlotKey, instance: BaseSlotInstance ) {
+ slots.set( name, instance );
}
- function unregisterSlot( name: SlotKey, instance: Rerenderable ) {
+ function unregisterSlot( name: SlotKey, instance: BaseSlotInstance ) {
// If a previous instance of a Slot by this name unmounts, do nothing,
// as the slot and its fills should only be removed for the current
// known instance.
- if ( slots[ name ] !== instance ) {
+ if ( slots.get( name ) !== instance ) {
return;
}
- delete slots[ name ];
- triggerListeners();
+ slots.delete( name );
}
- function unregisterFill( name: SlotKey, instance: FillComponentProps ) {
- fills[ name ] =
- fills[ name ]?.filter( ( fill ) => fill !== instance ) ?? [];
- forceUpdateSlot( name );
+ function registerFill(
+ name: SlotKey,
+ instance: FillInstance,
+ children: FillChildren
+ ) {
+ fills.set( name, [
+ ...( fills.get( name ) || [] ),
+ { instance, children },
+ ] );
}
- function getSlot( name: SlotKey ): Rerenderable | undefined {
- return slots[ name ];
+ function unregisterFill( name: SlotKey, instance: FillInstance ) {
+ const fillsForName = fills.get( name );
+ if ( ! fillsForName ) {
+ return;
+ }
+
+ fills.set(
+ name,
+ fillsForName.filter( ( fill ) => fill.instance !== instance )
+ );
}
- function getFills(
+ function updateFill(
name: SlotKey,
- slotInstance: Rerenderable
- ): FillComponentProps[] {
- // Fills should only be returned for the current instance of the slot
- // in which they occupy.
- if ( slots[ name ] !== slotInstance ) {
- return [];
+ instance: FillInstance,
+ children: FillChildren
+ ) {
+ const fillsForName = fills.get( name );
+ if ( ! fillsForName ) {
+ return;
}
- return fills[ name ];
- }
-
- function forceUpdateSlot( name: SlotKey ) {
- const slot = getSlot( name );
- if ( slot ) {
- slot.rerender();
+ const fillForInstance = fillsForName.find(
+ ( f ) => f.instance === instance
+ );
+ if ( ! fillForInstance ) {
+ return;
}
- }
- function triggerListeners() {
- listeners.forEach( ( listener ) => listener() );
- }
-
- function subscribe( listener: () => void ) {
- listeners.push( listener );
+ if ( fillForInstance.children === children ) {
+ return;
+ }
- return () => {
- listeners = listeners.filter( ( l ) => l !== listener );
- };
+ fills.set(
+ name,
+ fillsForName.map( ( f ) => {
+ if ( f.instance === instance ) {
+ // Replace with new record with updated `children`.
+ return { instance, children };
+ }
+
+ return f;
+ } )
+ );
}
return {
+ slots,
+ fills,
registerSlot,
unregisterSlot,
registerFill,
unregisterFill,
- getSlot,
- getFills,
- subscribe,
+ updateFill,
};
}
diff --git a/packages/components/src/slot-fill/slot.tsx b/packages/components/src/slot-fill/slot.tsx
index fe4a741ddbfbad..82feaa04199f51 100644
--- a/packages/components/src/slot-fill/slot.tsx
+++ b/packages/components/src/slot-fill/slot.tsx
@@ -6,10 +6,10 @@ import type { ReactElement, ReactNode, Key } from 'react';
/**
* WordPress dependencies
*/
+import { useObservableValue } from '@wordpress/compose';
import {
useContext,
useEffect,
- useReducer,
useRef,
Children,
cloneElement,
@@ -32,41 +32,48 @@ function isFunction( maybeFunc: any ): maybeFunc is Function {
return typeof maybeFunc === 'function';
}
+function addKeysToChildren( children: ReactNode ) {
+ return Children.map( children, ( child, childIndex ) => {
+ if ( ! child || typeof child === 'string' ) {
+ return child;
+ }
+ let childKey: Key = childIndex;
+ if ( typeof child === 'object' && 'key' in child && child?.key ) {
+ childKey = child.key;
+ }
+
+ return cloneElement( child as ReactElement, {
+ key: childKey,
+ } );
+ } );
+}
+
function Slot( props: Omit< SlotComponentProps, 'bubblesVirtually' > ) {
const registry = useContext( SlotFillContext );
- const [ , rerender ] = useReducer( () => [], [] );
- const ref = useRef( { rerender } );
+ const instanceRef = useRef( {} );
const { name, children, fillProps = {} } = props;
useEffect( () => {
- const refValue = ref.current;
- registry.registerSlot( name, refValue );
- return () => registry.unregisterSlot( name, refValue );
+ const instance = instanceRef.current;
+ registry.registerSlot( name, instance );
+ return () => registry.unregisterSlot( name, instance );
}, [ registry, name ] );
- const fills: ReactNode[] = ( registry.getFills( name, ref.current ) ?? [] )
+ let fills = useObservableValue( registry.fills, name ) ?? [];
+ const currentSlot = useObservableValue( registry.slots, name );
+
+ // Fills should only be rendered in the currently registered instance of the slot.
+ if ( currentSlot !== instanceRef.current ) {
+ fills = [];
+ }
+
+ const renderedFills = fills
.map( ( fill ) => {
const fillChildren = isFunction( fill.children )
? fill.children( fillProps )
: fill.children;
- return Children.map( fillChildren, ( child, childIndex ) => {
- if ( ! child || typeof child === 'string' ) {
- return child;
- }
- let childKey: Key = childIndex;
- if (
- typeof child === 'object' &&
- 'key' in child &&
- child?.key
- ) {
- childKey = child.key;
- }
-
- return cloneElement( child as ReactElement, {
- key: childKey,
- } );
- } );
+ return addKeysToChildren( fillChildren );
} )
.filter(
// In some cases fills are rendered only when some conditions apply.
@@ -75,7 +82,13 @@ function Slot( props: Omit< SlotComponentProps, 'bubblesVirtually' > ) {
( element ) => ! isEmptyElement( element )
);
- return <>{ isFunction( children ) ? children( fills ) : fills }>;
+ return (
+ <>
+ { isFunction( children )
+ ? children( renderedFills )
+ : renderedFills }
+ >
+ );
}
export default Slot;
diff --git a/packages/components/src/slot-fill/types.ts b/packages/components/src/slot-fill/types.ts
index 6668057323edd9..758f1c8257d548 100644
--- a/packages/components/src/slot-fill/types.ts
+++ b/packages/components/src/slot-fill/types.ts
@@ -84,6 +84,10 @@ export type SlotComponentProps =
style?: never;
} );
+export type FillChildren =
+ | ReactNode
+ | ( ( fillProps: FillProps ) => ReactNode );
+
export type FillComponentProps = {
/**
* The name of the slot to fill into.
@@ -93,7 +97,7 @@ export type FillComponentProps = {
/**
* Children elements or render function.
*/
- children?: ReactNode | ( ( fillProps: FillProps ) => ReactNode );
+ children?: FillChildren;
};
export type SlotFillProviderProps = {
@@ -109,8 +113,8 @@ export type SlotFillProviderProps = {
};
export type SlotRef = RefObject< HTMLElement >;
-export type Rerenderable = { rerender: () => void };
export type FillInstance = {};
+export type BaseSlotInstance = {};
export type SlotFillBubblesVirtuallyContext = {
slots: ObservableMap< SlotKey, { ref: SlotRef; fillProps: FillProps } >;
@@ -128,14 +132,22 @@ export type SlotFillBubblesVirtuallyContext = {
};
export type BaseSlotFillContext = {
- registerSlot: ( name: SlotKey, slot: Rerenderable ) => void;
- unregisterSlot: ( name: SlotKey, slot: Rerenderable ) => void;
- registerFill: ( name: SlotKey, instance: FillComponentProps ) => void;
- unregisterFill: ( name: SlotKey, instance: FillComponentProps ) => void;
- getSlot: ( name: SlotKey ) => Rerenderable | undefined;
- getFills: (
+ slots: ObservableMap< SlotKey, BaseSlotInstance >;
+ fills: ObservableMap<
+ SlotKey,
+ { instance: FillInstance; children: FillChildren }[]
+ >;
+ registerSlot: ( name: SlotKey, slot: BaseSlotInstance ) => void;
+ unregisterSlot: ( name: SlotKey, slot: BaseSlotInstance ) => void;
+ registerFill: (
+ name: SlotKey,
+ instance: FillInstance,
+ children: FillChildren
+ ) => void;
+ unregisterFill: ( name: SlotKey, instance: FillInstance ) => void;
+ updateFill: (
name: SlotKey,
- slotInstance: Rerenderable
- ) => FillComponentProps[];
- subscribe: ( listener: () => void ) => () => void;
+ instance: FillInstance,
+ children: FillChildren
+ ) => void;
};
diff --git a/packages/components/src/slot-fill/use-slot.ts b/packages/components/src/slot-fill/use-slot.ts
deleted file mode 100644
index 4ab419be1ad2bd..00000000000000
--- a/packages/components/src/slot-fill/use-slot.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * WordPress dependencies
- */
-import { useContext, useSyncExternalStore } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import SlotFillContext from './context';
-import type { SlotKey } from './types';
-
-/**
- * React hook returning the active slot given a name.
- *
- * @param name Slot name.
- * @return Slot object.
- */
-const useSlot = ( name: SlotKey ) => {
- const { getSlot, subscribe } = useContext( SlotFillContext );
- return useSyncExternalStore(
- subscribe,
- () => getSlot( name ),
- () => getSlot( name )
- );
-};
-
-export default useSlot;
From e9fb12f396fd1d93c4d0f7f1f4ebad5719c769ad Mon Sep 17 00:00:00 2001
From: Eshaan Dabasiya <76681468+im3dabasia@users.noreply.github.com>
Date: Sat, 14 Dec 2024 04:18:33 +0530
Subject: [PATCH 073/163] Refactor "Settings" panel of Page List block to use
ToolsPanel instead of PanelBody (#67903)
Co-authored-by: im3dabasia
Co-authored-by: fabiankaegy
---
packages/block-library/src/page-list/edit.js | 85 +++++++++++++-------
1 file changed, 54 insertions(+), 31 deletions(-)
diff --git a/packages/block-library/src/page-list/edit.js b/packages/block-library/src/page-list/edit.js
index 31e400b8676717..d9fee67968ac08 100644
--- a/packages/block-library/src/page-list/edit.js
+++ b/packages/block-library/src/page-list/edit.js
@@ -17,12 +17,13 @@ import {
Warning,
} from '@wordpress/block-editor';
import {
- PanelBody,
ToolbarButton,
Spinner,
Notice,
ComboboxControl,
Button,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import { __, sprintf } from '@wordpress/i18n';
import { useMemo, useState, useEffect, useCallback } from '@wordpress/element';
@@ -320,38 +321,60 @@ export default function PageListEdit( {
return (
<>
- { pagesTree.length > 0 && (
-
-
- setAttributes( { parentPageID: value ?? 0 } )
+ {
+ setAttributes( { parentPageID: 0 } );
+ } }
+ >
+ { pagesTree.length > 0 && (
+ parentPageID !== 0 }
+ onDeselect={ () =>
+ setAttributes( { parentPageID: 0 } )
}
- help={ __(
- 'Choose a page to show only its subpages.'
- ) }
- />
-
- ) }
- { allowConvertToLinks && (
-
- { convertDescription }
-
- { __( 'Edit' ) }
-
-
- ) }
+
+ setAttributes( {
+ parentPageID: value ?? 0,
+ } )
+ }
+ help={ __(
+ 'Choose a page to show only its subpages.'
+ ) }
+ />
+
+ ) }
+
+ { allowConvertToLinks && (
+
+
+
{ convertDescription }
+
+ { __( 'Edit' ) }
+
+
+
+ ) }
+
{ allowConvertToLinks && (
<>
From 84d26fcb7235f70a6e83dc51a9b64030b541b19b Mon Sep 17 00:00:00 2001
From: Eshaan Dabasiya <76681468+im3dabasia@users.noreply.github.com>
Date: Sat, 14 Dec 2024 04:22:43 +0530
Subject: [PATCH 074/163] Refactor "Settings" panel of Navigation Submenu block
to use ToolsPanel instead of PanelBody (#67969)
Co-authored-by: im3dabasia
Co-authored-by: fabiankaegy
---
.../src/navigation-submenu/edit.js | 167 ++++++++++++------
1 file changed, 110 insertions(+), 57 deletions(-)
diff --git a/packages/block-library/src/navigation-submenu/edit.js b/packages/block-library/src/navigation-submenu/edit.js
index c89eadf1cb589e..dbdbd23b13b2f6 100644
--- a/packages/block-library/src/navigation-submenu/edit.js
+++ b/packages/block-library/src/navigation-submenu/edit.js
@@ -8,11 +8,12 @@ import clsx from 'clsx';
*/
import { useSelect, useDispatch } from '@wordpress/data';
import {
- PanelBody,
TextControl,
TextareaControl,
ToolbarButton,
ToolbarGroup,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';
import { __ } from '@wordpress/i18n';
@@ -382,67 +383,119 @@ export default function NavigationSubmenuEdit( {
{ /* Warning, this duplicated in packages/block-library/src/navigation-link/edit.js */ }
-
- {
- setAttributes( { label: labelValue } );
- } }
+ {
+ setAttributes( {
+ label: '',
+ url: '',
+ description: '',
+ title: '',
+ rel: '',
+ } );
+ } }
+ >
+
- {
- setAttributes( { url: urlValue } );
- } }
+ isShownByDefault
+ hasValue={ () => !! label }
+ onDeselect={ () => setAttributes( { label: '' } ) }
+ >
+ {
+ setAttributes( { label: labelValue } );
+ } }
+ label={ __( 'Text' ) }
+ autoComplete="off"
+ />
+
+
+
- {
- setAttributes( {
- description: descriptionValue,
- } );
- } }
+ isShownByDefault
+ hasValue={ () => !! url }
+ onDeselect={ () => setAttributes( { url: '' } ) }
+ >
+ {
+ setAttributes( { url: urlValue } );
+ } }
+ label={ __( 'Link' ) }
+ autoComplete="off"
+ />
+
+
+
- {
- setAttributes( { title: titleValue } );
- } }
+ isShownByDefault
+ hasValue={ () => !! description }
+ onDeselect={ () =>
+ setAttributes( { description: '' } )
+ }
+ >
+ {
+ setAttributes( {
+ description: descriptionValue,
+ } );
+ } }
+ label={ __( 'Description' ) }
+ help={ __(
+ 'The description will be displayed in the menu if the current theme supports it.'
+ ) }
+ />
+
+
+
- {
- setAttributes( { rel: relValue } );
- } }
+ isShownByDefault
+ hasValue={ () => !! title }
+ onDeselect={ () => setAttributes( { title: '' } ) }
+ >
+ {
+ setAttributes( { title: titleValue } );
+ } }
+ label={ __( 'Title attribute' ) }
+ autoComplete="off"
+ help={ __(
+ 'Additional information to help clarify the purpose of the link.'
+ ) }
+ />
+
+
+
-
+ isShownByDefault
+ hasValue={ () => !! rel }
+ onDeselect={ () => setAttributes( { rel: '' } ) }
+ >
+ {
+ setAttributes( { rel: relValue } );
+ } }
+ label={ __( 'Rel attribute' ) }
+ autoComplete="off"
+ help={ __(
+ 'The relationship of the linked URL as space-separated link types.'
+ ) }
+ />
+
+
{ /* eslint-disable jsx-a11y/anchor-is-valid */ }
From 85912cb17595b028f2a8477c36209b5342cbed0e Mon Sep 17 00:00:00 2001
From: Eshaan Dabasiya <76681468+im3dabasia@users.noreply.github.com>
Date: Sat, 14 Dec 2024 04:24:04 +0530
Subject: [PATCH 075/163] Refactor "Settings" panel of Query Page Numbers block
to use ToolsPanel instead of PanelBody (#67958)
Co-authored-by: im3dabasia
Co-authored-by: fabiankaegy
---
.../src/query-pagination-numbers/edit.js | 53 ++++++++++++-------
1 file changed, 34 insertions(+), 19 deletions(-)
diff --git a/packages/block-library/src/query-pagination-numbers/edit.js b/packages/block-library/src/query-pagination-numbers/edit.js
index b8d8c160cc874d..0497393e2a4edc 100644
--- a/packages/block-library/src/query-pagination-numbers/edit.js
+++ b/packages/block-library/src/query-pagination-numbers/edit.js
@@ -3,7 +3,11 @@
*/
import { __ } from '@wordpress/i18n';
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
-import { PanelBody, RangeControl } from '@wordpress/components';
+import {
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
+ RangeControl,
+} from '@wordpress/components';
const createPaginationItem = ( content, Tag = 'a', extraClass = '' ) => (
@@ -46,28 +50,39 @@ export default function QueryPaginationNumbersEdit( {
const paginationNumbers = previewPaginationNumbers(
parseInt( midSize, 10 )
);
+
return (
<>
-
- setAttributes( { midSize: 2 } ) }
+ >
+ {
- setAttributes( {
- midSize: parseInt( value, 10 ),
- } );
- } }
- min={ 0 }
- max={ 5 }
- withInputField={ false }
- />
-
+ hasValue={ () => midSize !== undefined }
+ onDeselect={ () => setAttributes( { midSize: 2 } ) }
+ isShownByDefault
+ >
+ {
+ setAttributes( {
+ midSize: parseInt( value, 10 ),
+ } );
+ } }
+ min={ 0 }
+ max={ 5 }
+ withInputField={ false }
+ />
+
+
{ paginationNumbers }
>
From 183d93a90b9eaf9ebe08ce6ae9df4e12abeb14ae Mon Sep 17 00:00:00 2001
From: Sunil Prajapati <61308756+akasunil@users.noreply.github.com>
Date: Sat, 14 Dec 2024 11:07:11 +0530
Subject: [PATCH 076/163] Featured Image Block: Refactor setting panel (#67456)
* Refactor setting panel of featured image block control
* Fix link target attribute reset
Co-authored-by: akasunil
Co-authored-by: fabiankaegy
Co-authored-by: aaronrobertshaw
---
.../src/post-featured-image/edit.js | 77 ++++++++++++++++---
1 file changed, 67 insertions(+), 10 deletions(-)
diff --git a/packages/block-library/src/post-featured-image/edit.js b/packages/block-library/src/post-featured-image/edit.js
index 95441a5a55cfd0..05888c41fecf23 100644
--- a/packages/block-library/src/post-featured-image/edit.js
+++ b/packages/block-library/src/post-featured-image/edit.js
@@ -11,11 +11,12 @@ import { useEntityProp, store as coreStore } from '@wordpress/core-data';
import { useSelect, useDispatch } from '@wordpress/data';
import {
ToggleControl,
- PanelBody,
Placeholder,
Button,
Spinner,
TextControl,
+ __experimentalToolsPanel as ToolsPanel,
+ __experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import {
InspectorControls,
@@ -38,6 +39,7 @@ import { store as noticesStore } from '@wordpress/notices';
import DimensionControls from './dimension-controls';
import OverlayControls from './overlay-controls';
import Overlay from './overlay';
+import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
const ALLOWED_MEDIA_TYPES = [ 'image' ];
@@ -183,6 +185,8 @@ export default function PostFeaturedImageEdit( {
setTemporaryURL();
};
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
+
const controls = blockEditingMode === 'default' && (
<>
@@ -201,9 +205,18 @@ export default function PostFeaturedImageEdit( {
/>
-
- {
+ setAttributes( {
+ isLink: false,
+ linkTarget: '_self',
+ rel: '',
+ } );
+ } }
+ dropdownMenuProps={ dropdownMenuProps }
+ >
+ setAttributes( { isLink: ! isLink } ) }
- checked={ isLink }
- />
+ isShownByDefault
+ hasValue={ () => !! isLink }
+ onDeselect={ () =>
+ setAttributes( {
+ isLink: false,
+ } )
+ }
+ >
+
+ setAttributes( { isLink: ! isLink } )
+ }
+ checked={ isLink }
+ />
+
{ isLink && (
- <>
+ '_self' !== linkTarget }
+ onDeselect={ () =>
+ setAttributes( {
+ linkTarget: '_self',
+ } )
+ }
+ >
+
+ ) }
+ { isLink && (
+ !! rel }
+ onDeselect={ () =>
+ setAttributes( {
+ rel: '',
+ } )
+ }
+ >
- >
+
) }
-
+
>
);
From aed83a9f30583f9b4627956c7e3d3b56b910aef1 Mon Sep 17 00:00:00 2001
From: Mayur Prajapati <91679132+mayurprajapatii@users.noreply.github.com>
Date: Sat, 14 Dec 2024 13:14:02 +0530
Subject: [PATCH 077/163] Updated Document URL in Documentation (#67990)
Co-authored-by: mayurprajapatii
Co-authored-by: pateljaymin29
---
docs/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/README.md b/docs/README.md
index 31471a9928b2cf..4fd7d16595e133 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -48,7 +48,7 @@ This handbook should be considered the canonical resource for all things related
## Are you in the right place?
-The Block Editor Handbook is designed for those looking to create and develop for the Block Editor. However, it's important to note that there are multiple other handbooks available within the [Developer Resources](http://developer.wordpress.org/) that you may find beneficial:
+The Block Editor Handbook is designed for those looking to create and develop for the Block Editor. However, it's important to note that there are multiple other handbooks available within the [Developer Resources](https://developer.wordpress.org/) that you may find beneficial:
- [Theme Handbook](https://developer.wordpress.org/themes)
- [Plugin Handbook](https://developer.wordpress.org/plugins)
From 6e8588865ed61c990227dfb9d1324a52f4ff39af Mon Sep 17 00:00:00 2001
From: George Mamadashvili
Date: Sat, 14 Dec 2024 13:09:11 +0400
Subject: [PATCH 078/163] Columns: Replace some store selectors with
'getBlockOrder' (#67991)
Co-authored-by: Mamaduka
Co-authored-by: t-hamano
---
packages/block-library/src/columns/edit.js | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/packages/block-library/src/columns/edit.js b/packages/block-library/src/columns/edit.js
index 3d5f298aef8358..d79dfe4fc94a49 100644
--- a/packages/block-library/src/columns/edit.js
+++ b/packages/block-library/src/columns/edit.js
@@ -52,19 +52,15 @@ function ColumnInspectorControls( {
} ) {
const { count, canInsertColumnBlock, minCount } = useSelect(
( select ) => {
- const {
- canInsertBlockType,
- canRemoveBlock,
- getBlocks,
- getBlockCount,
- } = select( blockEditorStore );
- const innerBlocks = getBlocks( clientId );
+ const { canInsertBlockType, canRemoveBlock, getBlockOrder } =
+ select( blockEditorStore );
+ const blockOrder = getBlockOrder( clientId );
// Get the indexes of columns for which removal is prevented.
// The highest index will be used to determine the minimum column count.
- const preventRemovalBlockIndexes = innerBlocks.reduce(
- ( acc, block, index ) => {
- if ( ! canRemoveBlock( block.clientId ) ) {
+ const preventRemovalBlockIndexes = blockOrder.reduce(
+ ( acc, blockId, index ) => {
+ if ( ! canRemoveBlock( blockId ) ) {
acc.push( index );
}
return acc;
@@ -73,7 +69,7 @@ function ColumnInspectorControls( {
);
return {
- count: getBlockCount( clientId ),
+ count: blockOrder.length,
canInsertColumnBlock: canInsertBlockType(
'core/column',
clientId
From 737698812d1991396fe49cfc14d36f57eeba59be Mon Sep 17 00:00:00 2001
From: Jorge Costa
Date: Sun, 15 Dec 2024 11:52:04 +0000
Subject: [PATCH 079/163] Dataviews List layout: do not use grid role on a `ul`
element. (#67849)
Co-authored-by: jorgefilipecosta
Co-authored-by: oandregal
---
.../dataviews/src/dataviews-layouts/list/index.tsx | 4 ++--
.../dataviews/src/dataviews-layouts/list/style.scss | 10 +++++-----
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/packages/dataviews/src/dataviews-layouts/list/index.tsx b/packages/dataviews/src/dataviews-layouts/list/index.tsx
index fd6cdff6dbcdc6..960865164fd6c1 100644
--- a/packages/dataviews/src/dataviews-layouts/list/index.tsx
+++ b/packages/dataviews/src/dataviews-layouts/list/index.tsx
@@ -257,7 +257,7 @@ function ListItem< Item >( {
return (
}
+ render={
}
role="row"
className={ clsx( {
'is-selected': isSelected,
@@ -482,7 +482,7 @@ export default function ViewList< Item >( props: ViewListProps< Item > ) {
return (
}
+ render={
}
className="dataviews-view-list"
role="grid"
activeId={ activeCompositeId }
diff --git a/packages/dataviews/src/dataviews-layouts/list/style.scss b/packages/dataviews/src/dataviews-layouts/list/style.scss
index 82ef269d46964e..e892006faecb00 100644
--- a/packages/dataviews/src/dataviews-layouts/list/style.scss
+++ b/packages/dataviews/src/dataviews-layouts/list/style.scss
@@ -1,11 +1,11 @@
-ul.dataviews-view-list {
+div.dataviews-view-list {
list-style-type: none;
}
.dataviews-view-list {
margin: 0 0 auto;
- li {
+ div[role="row"] {
margin: 0;
border-top: 1px solid $gray-100;
@@ -45,7 +45,7 @@ ul.dataviews-view-list {
&.is-selected.is-selected {
border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12);
- & + li {
+ & + div[role="row"] {
border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12);
}
}
@@ -69,8 +69,8 @@ ul.dataviews-view-list {
}
- li.is-selected,
- li.is-selected:focus-within {
+ div[role="row"].is-selected,
+ div[role="row"].is-selected:focus-within {
.dataviews-view-list__item-wrapper {
background-color: rgba(var(--wp-admin-theme-color--rgb), 0.04);
color: $gray-900;
From 6893b2d87910bdc2f1c5dab899f0e352cd774c33 Mon Sep 17 00:00:00 2001
From: tellthemachines
Date: Mon, 16 Dec 2024 14:18:48 +1100
Subject: [PATCH 080/163] Try toggle instead of dropdown to show stylebook.
(#67810)
* Try toggle instead of dropdown to show stylebook.
* Use button instead of actual toggle
* Make button icon except if text labels are enabled
---
.../edit-site/src/components/editor/index.js | 8 +---
.../edit-site/src/components/layout/index.js | 13 ++++-
.../sidebar-global-styles-wrapper/index.js | 47 +++++--------------
.../sidebar-global-styles-wrapper/style.scss | 22 +++++++++
4 files changed, 46 insertions(+), 44 deletions(-)
diff --git a/packages/edit-site/src/components/editor/index.js b/packages/edit-site/src/components/editor/index.js
index c045bafd8a6839..ad88ee07e2150f 100644
--- a/packages/edit-site/src/components/editor/index.js
+++ b/packages/edit-site/src/components/editor/index.js
@@ -20,7 +20,6 @@ import { privateApis as blockLibraryPrivateApis } from '@wordpress/block-library
import { useCallback, useMemo } from '@wordpress/element';
import { store as noticesStore } from '@wordpress/notices';
import { privateApis as routerPrivateApis } from '@wordpress/router';
-import { store as preferencesStore } from '@wordpress/preferences';
import { decodeEntities } from '@wordpress/html-entities';
import { Icon, arrowUpLeft } from '@wordpress/icons';
import { store as blockEditorStore } from '@wordpress/block-editor';
@@ -130,7 +129,6 @@ export default function EditSiteEditor( { isPostsList = false } ) {
const { postType, postId, context } = entity;
const {
supportsGlobalStyles,
- showIconLabels,
editorCanvasView,
currentPostIsTrashed,
hasSiteIcon,
@@ -138,13 +136,11 @@ export default function EditSiteEditor( { isPostsList = false } ) {
const { getEditorCanvasContainerView } = unlock(
select( editSiteStore )
);
- const { get } = select( preferencesStore );
const { getCurrentTheme, getEntityRecord } = select( coreDataStore );
const siteData = getEntityRecord( 'root', '__unstableBase', undefined );
return {
supportsGlobalStyles: getCurrentTheme()?.is_block_theme,
- showIconLabels: get( 'core', 'showIconLabels' ),
editorCanvasView: getEditorCanvasContainerView(),
currentPostIsTrashed:
select( editorStore ).getCurrentPostAttribute( 'status' ) ===
@@ -267,9 +263,7 @@ export default function EditSiteEditor( { isPostsList = false } ) {
postId={ postWithTemplate ? context.postId : postId }
templateId={ postWithTemplate ? postId : undefined }
settings={ settings }
- className={ clsx( 'edit-site-editor__editor-interface', {
- 'show-icon-labels': showIconLabels,
- } ) }
+ className="edit-site-editor__editor-interface"
styles={ styles }
customSaveButton={
_isPreviewingTheme &&
diff --git a/packages/edit-site/src/components/layout/index.js b/packages/edit-site/src/components/layout/index.js
index 20162c5272f2ef..a5e14f0be82816 100644
--- a/packages/edit-site/src/components/layout/index.js
+++ b/packages/edit-site/src/components/layout/index.js
@@ -32,7 +32,8 @@ import { privateApis as coreCommandsPrivateApis } from '@wordpress/core-commands
import { privateApis as routerPrivateApis } from '@wordpress/router';
import { PluginArea } from '@wordpress/plugins';
import { store as noticesStore } from '@wordpress/notices';
-import { useDispatch } from '@wordpress/data';
+import { useDispatch, useSelect } from '@wordpress/data';
+import { store as preferencesStore } from '@wordpress/preferences';
/**
* Internal dependencies
@@ -70,6 +71,15 @@ function Layout() {
triggerAnimationOnChange: routeKey + '-' + canvas,
} );
+ const { showIconLabels } = useSelect( ( select ) => {
+ return {
+ showIconLabels: select( preferencesStore ).get(
+ 'core',
+ 'showIconLabels'
+ ),
+ };
+ } );
+
const [ backgroundColor ] = useGlobalStyle( 'color.background' );
const [ gradientValue ] = useGlobalStyle( 'color.gradient' );
const previousCanvaMode = usePrevious( canvas );
@@ -93,6 +103,7 @@ function Layout() {
navigateRegionsProps.className,
{
'is-full-canvas': canvas === 'edit',
+ 'show-icon-labels': showIconLabels,
}
) }
>
diff --git a/packages/edit-site/src/components/sidebar-global-styles-wrapper/index.js b/packages/edit-site/src/components/sidebar-global-styles-wrapper/index.js
index 980f20c49821b0..030512a38fab3a 100644
--- a/packages/edit-site/src/components/sidebar-global-styles-wrapper/index.js
+++ b/packages/edit-site/src/components/sidebar-global-styles-wrapper/index.js
@@ -5,11 +5,9 @@ import { __ } from '@wordpress/i18n';
import { useMemo, useState } from '@wordpress/element';
import { privateApis as routerPrivateApis } from '@wordpress/router';
import { useViewportMatch } from '@wordpress/compose';
-import {
- Button,
- privateApis as componentsPrivateApis,
-} from '@wordpress/components';
+import { Button } from '@wordpress/components';
import { addQueryArgs } from '@wordpress/url';
+import { seen } from '@wordpress/icons';
/**
* Internal dependencies
@@ -21,44 +19,21 @@ import StyleBook from '../style-book';
import { STYLE_BOOK_COLOR_GROUPS } from '../style-book/constants';
const { useLocation, useHistory } = unlock( routerPrivateApis );
-const { Menu } = unlock( componentsPrivateApis );
const GlobalStylesPageActions = ( {
isStyleBookOpened,
setIsStyleBookOpened,
} ) => {
return (
-
- { __( 'Preview' ) }
-
- }
- >
- setIsStyleBookOpened( true ) }
- defaultChecked
- >
- { __( 'Style book' ) }
-
- { __( 'Preview blocks and styles.' ) }
-
-
- setIsStyleBookOpened( false ) }
- >
- { __( 'Site' ) }
-
- { __( 'Preview your site.' ) }
-
-
-
+ {
+ setIsStyleBookOpened( ! isStyleBookOpened );
+ } }
+ size="compact"
+ />
);
};
diff --git a/packages/edit-site/src/components/sidebar-global-styles-wrapper/style.scss b/packages/edit-site/src/components/sidebar-global-styles-wrapper/style.scss
index 88aa9ddf0c1618..0fa4e158fe7f10 100644
--- a/packages/edit-site/src/components/sidebar-global-styles-wrapper/style.scss
+++ b/packages/edit-site/src/components/sidebar-global-styles-wrapper/style.scss
@@ -33,3 +33,25 @@
color: $gray-900;
}
}
+
+.show-icon-labels {
+ .edit-site-styles .edit-site-page-content {
+ .edit-site-page-header__actions {
+ .components-button.has-icon {
+ width: auto;
+ padding: 0 $grid-unit-10;
+
+ // Hide the button icons when labels are set to display...
+ svg {
+ display: none;
+ }
+ // ... and display labels.
+ &::after {
+ content: attr(aria-label);
+ font-size: $helptext-font-size;
+ }
+ }
+
+ }
+ }
+}
From 34d25a8faf8f60faa23bf11c150b4ff48a4d020a Mon Sep 17 00:00:00 2001
From: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
Date: Mon, 16 Dec 2024 15:45:39 +0900
Subject: [PATCH 081/163] DateFormatPicker: Improve line breaks in JSDoc and
README (#68006)
Co-authored-by: t-hamano
Co-authored-by: Mamaduka
---
.../components/date-format-picker/README.md | 19 ++++++-------------
.../components/date-format-picker/index.js | 19 ++++---------------
2 files changed, 10 insertions(+), 28 deletions(-)
diff --git a/packages/block-editor/src/components/date-format-picker/README.md b/packages/block-editor/src/components/date-format-picker/README.md
index e057bdc31a1680..f6160cb90955b5 100644
--- a/packages/block-editor/src/components/date-format-picker/README.md
+++ b/packages/block-editor/src/components/date-format-picker/README.md
@@ -1,17 +1,12 @@
# DateFormatPicker
-The `DateFormatPicker` component renders controls that let the user choose a
-_date format_. That is, how they want their dates to be formatted.
+The `DateFormatPicker` component renders controls that let the user choose a _date format_. That is, how they want their dates to be formatted.
-A user can pick _Default_ to use the default date format (usually set at the
-site level).
+A user can pick _Default_ to use the default date format (usually set at the site level).
-Otherwise, a user may choose a suggested date format or type in their own date
-format by selecting _Custom_.
+Otherwise, a user may choose a suggested date format or type in their own date format by selecting _Custom_.
-All date format strings should be in the format accepted by by the [`dateI18n`
-function in
-`@wordpress/date`](https://github.com/WordPress/gutenberg/tree/trunk/packages/date#datei18n).
+All date format strings should be in the format accepted by by the [`dateI18n` function in `@wordpress/date`](https://github.com/WordPress/gutenberg/tree/trunk/packages/date#datei18n).
## Usage
@@ -43,16 +38,14 @@ The current date format selected by the user. If `null`, _Default_ is selected.
### `defaultFormat`
-The default format string. Used to show to the user what the date will look like
-if _Default_ is selected.
+The default format string. Used to show to the user what the date will look like if _Default_ is selected.
- Type: `string`
- Required: Yes
### `onChange`
-Called when the user makes a selection, or when the user types in a date format.
-`null` indicates that _Default_ is selected.
+Called when the user makes a selection, or when the user types in a date format. `null` indicates that _Default_ is selected.
- Type: `( format: string|null ) => void`
- Required: Yes
diff --git a/packages/block-editor/src/components/date-format-picker/index.js b/packages/block-editor/src/components/date-format-picker/index.js
index eb269e03ca5abc..719390a1d6f903 100644
--- a/packages/block-editor/src/components/date-format-picker/index.js
+++ b/packages/block-editor/src/components/date-format-picker/index.js
@@ -29,21 +29,10 @@ if ( exampleDate.getMonth() === 4 ) {
*
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/date-format-picker/README.md
*
- * @param {Object} props
- * @param {string|null} props.format The selected date
- * format. If
- * `null`,
- * _Default_ is
- * selected.
- * @param {string} props.defaultFormat The date format that
- * will be used if the
- * user selects
- * 'Default'.
- * @param {( format: string|null ) => void} props.onChange Called when a
- * selection is
- * made. If `null`,
- * _Default_ is
- * selected.
+ * @param {Object} props
+ * @param {string|null} props.format The selected date format. If `null`, _Default_ is selected.
+ * @param {string} props.defaultFormat The date format that will be used if the user selects 'Default'.
+ * @param {Function} props.onChange Called when a selection is made. If `null`, _Default_ is selected.
*/
export default function DateFormatPicker( {
format,
From bc4f6c6632f52dfc455709bd27bda08041e225ec Mon Sep 17 00:00:00 2001
From: Ankit Kumar Shah
Date: Mon, 16 Dec 2024 13:22:32 +0530
Subject: [PATCH 082/163] LoginOut: Add dropdown menu props to ToolsPanel
component (#68009)
Co-authored-by: Infinite-Null
Co-authored-by: fabiankaegy
---
packages/block-library/src/loginout/edit.js | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/packages/block-library/src/loginout/edit.js b/packages/block-library/src/loginout/edit.js
index 76d6e98b1ccc32..9af634c87371cf 100644
--- a/packages/block-library/src/loginout/edit.js
+++ b/packages/block-library/src/loginout/edit.js
@@ -8,9 +8,14 @@ import {
__experimentalToolsPanelItem as ToolsPanelItem,
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
+/**
+ * Internal dependencies
+ */
+import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
export default function LoginOutEdit( { attributes, setAttributes } ) {
const { displayLoginAsForm, redirectToCurrent } = attributes;
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
return (
<>
@@ -23,6 +28,7 @@ export default function LoginOutEdit( { attributes, setAttributes } ) {
redirectToCurrent: true,
} );
} }
+ dropdownMenuProps={ dropdownMenuProps }
>
Date: Mon, 16 Dec 2024 12:12:45 +0400
Subject: [PATCH 083/163] DOM: Support class wildcard matcher in
'cleanNodeList' (#67830)
Co-authored-by: Mamaduka
Co-authored-by: ntsekouras
---
packages/block-library/src/image/transforms.js | 2 +-
packages/dom/src/dom/clean-node-list.js | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/packages/block-library/src/image/transforms.js b/packages/block-library/src/image/transforms.js
index 32824c372efdcb..0119009b2182c4 100644
--- a/packages/block-library/src/image/transforms.js
+++ b/packages/block-library/src/image/transforms.js
@@ -59,7 +59,7 @@ const schema = ( { phrasingContentSchema } ) => ( {
...imageSchema,
a: {
attributes: [ 'href', 'rel', 'target' ],
- classes: [ /[\w-]*/ ],
+ classes: [ '*' ],
children: imageSchema,
},
figcaption: {
diff --git a/packages/dom/src/dom/clean-node-list.js b/packages/dom/src/dom/clean-node-list.js
index bbdff13b470d69..f1b7e1be7264f4 100644
--- a/packages/dom/src/dom/clean-node-list.js
+++ b/packages/dom/src/dom/clean-node-list.js
@@ -76,7 +76,10 @@ export default function cleanNodeList( nodeList, doc, schema, inline ) {
// TODO: Explore patching this in jsdom-jscore.
if ( node.classList && node.classList.length ) {
const mattchers = classes.map( ( item ) => {
- if ( typeof item === 'string' ) {
+ if ( item === '*' ) {
+ // Keep all classes.
+ return () => true;
+ } else if ( typeof item === 'string' ) {
return (
/** @type {string} */ className
) => className === item;
From d02331c2d22a636f20818dd311f9cc8a48b9f82d Mon Sep 17 00:00:00 2001
From: Eshaan Dabasiya <76681468+im3dabasia@users.noreply.github.com>
Date: Mon, 16 Dec 2024 14:00:46 +0530
Subject: [PATCH 084/163] Page List Block: Add dropdown menu props to
ToolsPanel component (#68012)
Co-authored-by: im3dabasia
Co-authored-by: fabiankaegy
---
packages/block-library/src/page-list/edit.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/packages/block-library/src/page-list/edit.js b/packages/block-library/src/page-list/edit.js
index d9fee67968ac08..00d96e9ba307bd 100644
--- a/packages/block-library/src/page-list/edit.js
+++ b/packages/block-library/src/page-list/edit.js
@@ -38,6 +38,7 @@ import {
convertDescription,
ConvertToLinksModal,
} from './convert-to-links-modal';
+import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
// We only show the edit option when page count is <= MAX_PAGE_COUNT
// Performance of Navigation Links is not good past this value.
@@ -124,6 +125,7 @@ export default function PageListEdit( {
const [ isOpen, setOpen ] = useState( false );
const openModal = useCallback( () => setOpen( true ), [] );
const closeModal = () => setOpen( false );
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
const { records: pages, hasResolved: hasResolvedPages } = useEntityRecords(
'postType',
@@ -326,6 +328,7 @@ export default function PageListEdit( {
resetAll={ () => {
setAttributes( { parentPageID: 0 } );
} }
+ dropdownMenuProps={ dropdownMenuProps }
>
{ pagesTree.length > 0 && (
Date: Mon, 16 Dec 2024 14:01:42 +0530
Subject: [PATCH 085/163] Archive: Add dropdown menu props to ToolsPanel
component (#68010)
Co-authored-by: im3dabasia
Co-authored-by: fabiankaegy
---
packages/block-library/src/archives/edit.js | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/packages/block-library/src/archives/edit.js b/packages/block-library/src/archives/edit.js
index b51bd9a4fe1e6b..d4f25da8507f3e 100644
--- a/packages/block-library/src/archives/edit.js
+++ b/packages/block-library/src/archives/edit.js
@@ -12,9 +12,16 @@ import { __ } from '@wordpress/i18n';
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
import ServerSideRender from '@wordpress/server-side-render';
+/**
+ * Internal dependencies
+ */
+import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
+
export default function ArchivesEdit( { attributes, setAttributes } ) {
const { showLabel, showPostCounts, displayAsDropdown, type } = attributes;
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
+
return (
<>
@@ -28,6 +35,7 @@ export default function ArchivesEdit( { attributes, setAttributes } ) {
type: 'monthly',
} );
} }
+ dropdownMenuProps={ dropdownMenuProps }
>
Date: Mon, 16 Dec 2024 14:14:40 +0530
Subject: [PATCH 086/163] Query Page Numbers: Add dropdown menu props to
ToolsPanel component (#68013)
Co-authored-by: im3dabasia
Co-authored-by: fabiankaegy < fabiankaegy@git.wordpress.org>
---
.../block-library/src/query-pagination-numbers/edit.js | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/packages/block-library/src/query-pagination-numbers/edit.js b/packages/block-library/src/query-pagination-numbers/edit.js
index 0497393e2a4edc..cf2f92f41791ff 100644
--- a/packages/block-library/src/query-pagination-numbers/edit.js
+++ b/packages/block-library/src/query-pagination-numbers/edit.js
@@ -9,6 +9,11 @@ import {
RangeControl,
} from '@wordpress/components';
+/**
+ * Internal dependencies
+ */
+import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
+
const createPaginationItem = ( content, Tag = 'a', extraClass = '' ) => (
{ content }
@@ -50,6 +55,7 @@ export default function QueryPaginationNumbersEdit( {
const paginationNumbers = previewPaginationNumbers(
parseInt( midSize, 10 )
);
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
return (
<>
@@ -57,6 +63,7 @@ export default function QueryPaginationNumbersEdit( {
setAttributes( { midSize: 2 } ) }
+ dropdownMenuProps={ dropdownMenuProps }
>
Date: Mon, 16 Dec 2024 10:08:59 +0100
Subject: [PATCH 087/163] Add new private `upload-media` package (#66290)
Co-authored-by: ndiego
Co-authored-by: fabiankaegy
Co-authored-by: carolinan
Co-authored-by: Jon Surrell
Co-authored-by: t-hamano
Co-authored-by: sirreal
Co-authored-by: Andrew Serong <14988353+andrewserong@users.noreply.github.com>
Co-authored-by: stokesman
Co-authored-by: andrewserong
Co-authored-by: ramonjd
Co-authored-by: ntsekouras
Co-authored-by: Mamaduka
Co-authored-by: youknowriad
Co-authored-by: Nick Diego
Co-authored-by: Ella <4710635+ellatrix@users.noreply.github.com>
Co-authored-by: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
Co-authored-by: Mitchell Austin
Co-authored-by: Nik Tsekouras
Co-authored-by: George Mamadashvili
---
bin/check-licenses.mjs | 2 +-
package-lock.json | 60 +++
.../src/components/provider/index.js | 85 +++-
.../provider/use-media-upload-settings.js | 25 ++
.../block-editor/src/store/private-actions.js | 1 +
packages/editor/README.md | 1 +
.../provider/use-block-editor-settings.js | 3 +
.../editor/src/utils/media-sideload/index.js | 13 +
.../src/utils/media-sideload/index.native.js | 1 +
.../editor/src/utils/media-upload/index.js | 5 +-
packages/media-utils/src/utils/types.ts | 1 -
.../media-utils/src/utils/upload-media.ts | 27 +-
packages/private-apis/src/implementation.ts | 1 +
packages/upload-media/CHANGELOG.md | 5 +
packages/upload-media/README.md | 136 ++++++
packages/upload-media/package.json | 45 ++
.../src/components/provider/index.tsx | 25 ++
.../provider/with-registry-provider.tsx | 59 +++
.../upload-media/src/get-mime-types-array.ts | 29 ++
packages/upload-media/src/image-file.ts | 38 ++
packages/upload-media/src/index.ts | 11 +
packages/upload-media/src/lock-unlock.ts | 10 +
packages/upload-media/src/store/actions.ts | 183 ++++++++
packages/upload-media/src/store/constants.ts | 1 +
packages/upload-media/src/store/index.ts | 43 ++
.../upload-media/src/store/private-actions.ts | 407 ++++++++++++++++++
.../src/store/private-selectors.ts | 113 +++++
packages/upload-media/src/store/reducer.ts | 195 +++++++++
packages/upload-media/src/store/selectors.ts | 67 +++
.../upload-media/src/store/test/actions.ts | 112 +++++
.../upload-media/src/store/test/reducer.ts | 279 ++++++++++++
.../upload-media/src/store/test/selectors.ts | 105 +++++
packages/upload-media/src/store/types.ts | 172 ++++++++
packages/upload-media/src/stub-file.ts | 5 +
.../src/test/get-file-basename.ts | 15 +
.../src/test/get-file-extension.ts | 15 +
.../src/test/get-file-name-from-url.ts | 14 +
.../src/test/get-mime-types-array.ts | 47 ++
packages/upload-media/src/test/image-file.ts | 15 +
.../upload-media/src/test/upload-error.ts | 24 ++
.../src/test/validate-file-size.ts | 70 +++
.../src/test/validate-mime-type-for-user.ts | 37 ++
.../src/test/validate-mime-type.ts | 57 +++
packages/upload-media/src/upload-error.ts | 26 ++
packages/upload-media/src/utils.ts | 90 ++++
.../upload-media/src/validate-file-size.ts | 44 ++
.../src/validate-mime-type-for-user.ts | 46 ++
.../upload-media/src/validate-mime-type.ts | 43 ++
packages/upload-media/tsconfig.json | 20 +
tsconfig.json | 1 +
50 files changed, 2813 insertions(+), 16 deletions(-)
create mode 100644 packages/block-editor/src/components/provider/use-media-upload-settings.js
create mode 100644 packages/editor/src/utils/media-sideload/index.js
create mode 100644 packages/editor/src/utils/media-sideload/index.native.js
create mode 100644 packages/upload-media/CHANGELOG.md
create mode 100644 packages/upload-media/README.md
create mode 100644 packages/upload-media/package.json
create mode 100644 packages/upload-media/src/components/provider/index.tsx
create mode 100644 packages/upload-media/src/components/provider/with-registry-provider.tsx
create mode 100644 packages/upload-media/src/get-mime-types-array.ts
create mode 100644 packages/upload-media/src/image-file.ts
create mode 100644 packages/upload-media/src/index.ts
create mode 100644 packages/upload-media/src/lock-unlock.ts
create mode 100644 packages/upload-media/src/store/actions.ts
create mode 100644 packages/upload-media/src/store/constants.ts
create mode 100644 packages/upload-media/src/store/index.ts
create mode 100644 packages/upload-media/src/store/private-actions.ts
create mode 100644 packages/upload-media/src/store/private-selectors.ts
create mode 100644 packages/upload-media/src/store/reducer.ts
create mode 100644 packages/upload-media/src/store/selectors.ts
create mode 100644 packages/upload-media/src/store/test/actions.ts
create mode 100644 packages/upload-media/src/store/test/reducer.ts
create mode 100644 packages/upload-media/src/store/test/selectors.ts
create mode 100644 packages/upload-media/src/store/types.ts
create mode 100644 packages/upload-media/src/stub-file.ts
create mode 100644 packages/upload-media/src/test/get-file-basename.ts
create mode 100644 packages/upload-media/src/test/get-file-extension.ts
create mode 100644 packages/upload-media/src/test/get-file-name-from-url.ts
create mode 100644 packages/upload-media/src/test/get-mime-types-array.ts
create mode 100644 packages/upload-media/src/test/image-file.ts
create mode 100644 packages/upload-media/src/test/upload-error.ts
create mode 100644 packages/upload-media/src/test/validate-file-size.ts
create mode 100644 packages/upload-media/src/test/validate-mime-type-for-user.ts
create mode 100644 packages/upload-media/src/test/validate-mime-type.ts
create mode 100644 packages/upload-media/src/upload-error.ts
create mode 100644 packages/upload-media/src/utils.ts
create mode 100644 packages/upload-media/src/validate-file-size.ts
create mode 100644 packages/upload-media/src/validate-mime-type-for-user.ts
create mode 100644 packages/upload-media/src/validate-mime-type.ts
create mode 100644 packages/upload-media/tsconfig.json
diff --git a/bin/check-licenses.mjs b/bin/check-licenses.mjs
index 458590e696a9fd..b453ebd84cd3a7 100755
--- a/bin/check-licenses.mjs
+++ b/bin/check-licenses.mjs
@@ -10,7 +10,7 @@ import { spawnSync } from 'node:child_process';
*/
import { checkDepsInTree } from '../packages/scripts/utils/license.js';
-const ignored = [ '@ampproject/remapping' ];
+const ignored = [ '@ampproject/remapping', 'webpack' ];
/*
* `wp-scripts check-licenses` uses prod and dev dependencies of the package to scan for dependencies. With npm workspaces, workspace packages (the @wordpress/* packages) are not listed in the main package json and this approach does not work.
diff --git a/package-lock.json b/package-lock.json
index 32ff2db4986512..e2063a35c7d0a0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11071,6 +11071,12 @@
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/@remote-ui/rpc": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/@remote-ui/rpc/-/rpc-1.4.5.tgz",
+ "integrity": "sha512-Cr+06niG/vmE4A9YsmaKngRuuVSWKMY42NMwtZfy+gctRWGu6Wj9BWuMJg5CEp+JTkRBPToqT5rqnrg1G/Wvow==",
+ "license": "MIT"
+ },
"node_modules/@samverschueren/stream-to-observable": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz",
@@ -11170,6 +11176,34 @@
"node": ">=8"
}
},
+ "node_modules/@shopify/web-worker": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/@shopify/web-worker/-/web-worker-6.4.0.tgz",
+ "integrity": "sha512-RvY1mgRyAqawFiYBvsBkek2pVK4GVpV9mmhWFCZXwx01usxXd2HMhKNTFeRYhSp29uoUcfBlKZAwCwQzt826tg==",
+ "license": "MIT",
+ "dependencies": {
+ "@remote-ui/rpc": "^1.2.5"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "webpack": "^5.38.0",
+ "webpack-virtual-modules": "^0.4.3 || ^0.5.0 || ^0.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ },
+ "webpack-virtual-modules": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@sideway/address": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
@@ -15823,6 +15857,10 @@
"resolved": "packages/undo-manager",
"link": true
},
+ "node_modules/@wordpress/upload-media": {
+ "resolved": "packages/upload-media",
+ "link": true
+ },
"node_modules/@wordpress/url": {
"resolved": "packages/url",
"link": true
@@ -52562,6 +52600,28 @@
"npm": ">=8.19.2"
}
},
+ "packages/upload-media": {
+ "name": "@wordpress/upload-media",
+ "version": "1.0.0-prerelease",
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@shopify/web-worker": "^6.4.0",
+ "@wordpress/api-fetch": "file:../api-fetch",
+ "@wordpress/blob": "file:../blob",
+ "@wordpress/compose": "file:../compose",
+ "@wordpress/data": "file:../data",
+ "@wordpress/element": "file:../element",
+ "@wordpress/i18n": "file:../i18n",
+ "@wordpress/preferences": "file:../preferences",
+ "@wordpress/private-apis": "file:../private-apis",
+ "@wordpress/url": "file:../url",
+ "uuid": "^9.0.1"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ }
+ },
"packages/url": {
"name": "@wordpress/url",
"version": "4.14.0",
diff --git a/packages/block-editor/src/components/provider/index.js b/packages/block-editor/src/components/provider/index.js
index abbb122ae3a0e0..97aa0b95216870 100644
--- a/packages/block-editor/src/components/provider/index.js
+++ b/packages/block-editor/src/components/provider/index.js
@@ -2,8 +2,13 @@
* WordPress dependencies
*/
import { useDispatch } from '@wordpress/data';
-import { useEffect } from '@wordpress/element';
+import { useEffect, useMemo } from '@wordpress/element';
import { SlotFillProvider } from '@wordpress/components';
+//eslint-disable-next-line import/no-extraneous-dependencies -- Experimental package, not published.
+import {
+ MediaUploadProvider,
+ store as uploadStore,
+} from '@wordpress/upload-media';
/**
* Internal dependencies
@@ -14,12 +19,71 @@ import { store as blockEditorStore } from '../../store';
import { BlockRefsProvider } from './block-refs-provider';
import { unlock } from '../../lock-unlock';
import KeyboardShortcuts from '../keyboard-shortcuts';
+import useMediaUploadSettings from './use-media-upload-settings';
/** @typedef {import('@wordpress/data').WPDataRegistry} WPDataRegistry */
+const noop = () => {};
+
+/**
+ * Upload a media file when the file upload button is activated
+ * or when adding a file to the editor via drag & drop.
+ *
+ * @param {WPDataRegistry} registry
+ * @param {Object} $3 Parameters object passed to the function.
+ * @param {Array} $3.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed.
+ * @param {Object} $3.additionalData Additional data to include in the request.
+ * @param {Array} $3.filesList List of files.
+ * @param {Function} $3.onError Function called when an error happens.
+ * @param {Function} $3.onFileChange Function called each time a file or a temporary representation of the file is available.
+ * @param {Function} $3.onSuccess Function called once a file has completely finished uploading, including thumbnails.
+ * @param {Function} $3.onBatchSuccess Function called once all files in a group have completely finished uploading, including thumbnails.
+ */
+function mediaUpload(
+ registry,
+ {
+ allowedTypes,
+ additionalData = {},
+ filesList,
+ onError = noop,
+ onFileChange,
+ onSuccess,
+ onBatchSuccess,
+ }
+) {
+ void registry.dispatch( uploadStore ).addItems( {
+ files: filesList,
+ onChange: onFileChange,
+ onSuccess,
+ onBatchSuccess,
+ onError: ( { message } ) => onError( message ),
+ additionalData,
+ allowedTypes,
+ } );
+}
+
export const ExperimentalBlockEditorProvider = withRegistryProvider(
( props ) => {
- const { children, settings, stripExperimentalSettings = false } = props;
+ const {
+ settings: _settings,
+ registry,
+ stripExperimentalSettings = false,
+ } = props;
+
+ const mediaUploadSettings = useMediaUploadSettings( _settings );
+
+ let settings = _settings;
+
+ if ( window.__experimentalMediaProcessing && _settings.mediaUpload ) {
+ // Create a new variable so that the original props.settings.mediaUpload is not modified.
+ settings = useMemo(
+ () => ( {
+ ..._settings,
+ mediaUpload: mediaUpload.bind( null, registry ),
+ } ),
+ [ _settings, registry ]
+ );
+ }
const { __experimentalUpdateSettings } = unlock(
useDispatch( blockEditorStore )
@@ -44,12 +108,25 @@ export const ExperimentalBlockEditorProvider = withRegistryProvider(
// Syncs the entity provider with changes in the block-editor store.
useBlockSync( props );
- return (
+ const children = (
{ ! settings?.isPreviewMode && }
- { children }
+ { props.children }
);
+
+ if ( window.__experimentalMediaProcessing ) {
+ return (
+
+ { children }
+
+ );
+ }
+
+ return children;
}
);
diff --git a/packages/block-editor/src/components/provider/use-media-upload-settings.js b/packages/block-editor/src/components/provider/use-media-upload-settings.js
new file mode 100644
index 00000000000000..486066c7aa7303
--- /dev/null
+++ b/packages/block-editor/src/components/provider/use-media-upload-settings.js
@@ -0,0 +1,25 @@
+/**
+ * WordPress dependencies
+ */
+import { useMemo } from '@wordpress/element';
+
+/**
+ * React hook used to compute the media upload settings to use in the post editor.
+ *
+ * @param {Object} settings Media upload settings prop.
+ *
+ * @return {Object} Media upload settings.
+ */
+function useMediaUploadSettings( settings ) {
+ return useMemo(
+ () => ( {
+ mediaUpload: settings.mediaUpload,
+ mediaSideload: settings.mediaSideload,
+ maxUploadFileSize: settings.maxUploadFileSize,
+ allowedMimeTypes: settings.allowedMimeTypes,
+ } ),
+ [ settings ]
+ );
+}
+
+export default useMediaUploadSettings;
diff --git a/packages/block-editor/src/store/private-actions.js b/packages/block-editor/src/store/private-actions.js
index e79833e0a73da7..f085eb2807c6fd 100644
--- a/packages/block-editor/src/store/private-actions.js
+++ b/packages/block-editor/src/store/private-actions.js
@@ -26,6 +26,7 @@ const castArray = ( maybeArray ) =>
const privateSettings = [
'inserterMediaCategories',
'blockInspectorAnimation',
+ 'mediaSideload',
];
/**
diff --git a/packages/editor/README.md b/packages/editor/README.md
index 3211e6664256d0..c006ec097982c9 100644
--- a/packages/editor/README.md
+++ b/packages/editor/README.md
@@ -499,6 +499,7 @@ _Parameters_
- _$0.maxUploadFileSize_ `?number`: Maximum upload size in bytes allowed for the site.
- _$0.onError_ `Function`: Function called when an error happens.
- _$0.onFileChange_ `Function`: Function called each time a file or a temporary representation of the file is available.
+- _$0.onSuccess_ `Function`: Function called after the final representation of the file is available.
### MediaUploadCheck
diff --git a/packages/editor/src/components/provider/use-block-editor-settings.js b/packages/editor/src/components/provider/use-block-editor-settings.js
index f5c45f431e2c85..d0c2e36d474433 100644
--- a/packages/editor/src/components/provider/use-block-editor-settings.js
+++ b/packages/editor/src/components/provider/use-block-editor-settings.js
@@ -23,6 +23,7 @@ import {
*/
import inserterMediaCategories from '../media-categories';
import { mediaUpload } from '../../utils';
+import { default as mediaSideload } from '../../utils/media-sideload';
import { store as editorStore } from '../../store';
import { unlock } from '../../lock-unlock';
import { useGlobalStylesContext } from '../global-styles-provider';
@@ -45,6 +46,7 @@ const BLOCK_EDITOR_SETTINGS = [
'__experimentalGlobalStylesBaseStyles',
'alignWide',
'blockInspectorTabs',
+ 'maxUploadFileSize',
'allowedMimeTypes',
'bodyPlaceholder',
'canLockBlocks',
@@ -290,6 +292,7 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
isDistractionFree,
keepCaretInsideBlock,
mediaUpload: hasUploadPermissions ? mediaUpload : undefined,
+ mediaSideload: hasUploadPermissions ? mediaSideload : undefined,
__experimentalBlockPatterns: blockPatterns,
[ selectBlockPatternsKey ]: ( select ) => {
const { hasFinishedResolution, getBlockPatternsForPostType } =
diff --git a/packages/editor/src/utils/media-sideload/index.js b/packages/editor/src/utils/media-sideload/index.js
new file mode 100644
index 00000000000000..86fcdc688abf8f
--- /dev/null
+++ b/packages/editor/src/utils/media-sideload/index.js
@@ -0,0 +1,13 @@
+/**
+ * WordPress dependencies
+ */
+import { privateApis } from '@wordpress/media-utils';
+
+/**
+ * Internal dependencies
+ */
+import { unlock } from '../../lock-unlock';
+
+const { sideloadMedia: mediaSideload } = unlock( privateApis );
+
+export default mediaSideload;
diff --git a/packages/editor/src/utils/media-sideload/index.native.js b/packages/editor/src/utils/media-sideload/index.native.js
new file mode 100644
index 00000000000000..d84a912ec92de0
--- /dev/null
+++ b/packages/editor/src/utils/media-sideload/index.native.js
@@ -0,0 +1 @@
+export default function mediaSideload() {}
diff --git a/packages/editor/src/utils/media-upload/index.js b/packages/editor/src/utils/media-upload/index.js
index 6b39db2443cc33..0d970d91ce745c 100644
--- a/packages/editor/src/utils/media-upload/index.js
+++ b/packages/editor/src/utils/media-upload/index.js
@@ -27,6 +27,7 @@ const noop = () => {};
* @param {?number} $0.maxUploadFileSize Maximum upload size in bytes allowed for the site.
* @param {Function} $0.onError Function called when an error happens.
* @param {Function} $0.onFileChange Function called each time a file or a temporary representation of the file is available.
+ * @param {Function} $0.onSuccess Function called after the final representation of the file is available.
*/
export default function mediaUpload( {
additionalData = {},
@@ -35,6 +36,7 @@ export default function mediaUpload( {
maxUploadFileSize,
onError = noop,
onFileChange,
+ onSuccess,
} ) {
const { getCurrentPost, getEditorSettings } = select( editorStore );
const {
@@ -77,8 +79,9 @@ export default function mediaUpload( {
} else {
clearSaveLock();
}
- onFileChange( file );
+ onFileChange?.( file );
},
+ onSuccess,
additionalData: {
...postData,
...additionalData,
diff --git a/packages/media-utils/src/utils/types.ts b/packages/media-utils/src/utils/types.ts
index c91d4c67cfc466..c4c6882ea2532e 100644
--- a/packages/media-utils/src/utils/types.ts
+++ b/packages/media-utils/src/utils/types.ts
@@ -199,7 +199,6 @@ export type Attachment = BetterOmit<
};
export type OnChangeHandler = ( attachments: Partial< Attachment >[] ) => void;
-export type OnSuccessHandler = ( attachments: Partial< Attachment >[] ) => void;
export type OnErrorHandler = ( error: Error ) => void;
export type CreateRestAttachment = Partial< RestAttachment >;
diff --git a/packages/media-utils/src/utils/upload-media.ts b/packages/media-utils/src/utils/upload-media.ts
index 1bc861cfb3b607..ff3f718076512b 100644
--- a/packages/media-utils/src/utils/upload-media.ts
+++ b/packages/media-utils/src/utils/upload-media.ts
@@ -12,7 +12,6 @@ import type {
Attachment,
OnChangeHandler,
OnErrorHandler,
- OnSuccessHandler,
} from './types';
import { uploadToServer } from './upload-to-server';
import { validateMimeType } from './validate-mime-type';
@@ -20,6 +19,12 @@ import { validateMimeTypeForUser } from './validate-mime-type-for-user';
import { validateFileSize } from './validate-file-size';
import { UploadError } from './upload-error';
+declare global {
+ interface Window {
+ __experimentalMediaProcessing?: boolean;
+ }
+}
+
interface UploadMediaArgs {
// Additional data to include in the request.
additionalData?: AdditionalData;
@@ -33,8 +38,6 @@ interface UploadMediaArgs {
onError?: OnErrorHandler;
// Function called each time a file or a temporary representation of the file is available.
onFileChange?: OnChangeHandler;
- // Function called once a file has completely finished uploading, including thumbnails.
- onSuccess?: OnSuccessHandler;
// List of allowed mime types and file extensions.
wpAllowedMimeTypes?: Record< string, string > | null;
// Abort signal.
@@ -69,8 +72,11 @@ export function uploadMedia( {
const filesSet: Array< Partial< Attachment > | null > = [];
const setAndUpdateFiles = ( index: number, value: Attachment | null ) => {
- if ( filesSet[ index ]?.url ) {
- revokeBlobURL( filesSet[ index ].url );
+ // For client-side media processing, this is handled by the upload-media package.
+ if ( ! window.__experimentalMediaProcessing ) {
+ if ( filesSet[ index ]?.url ) {
+ revokeBlobURL( filesSet[ index ].url );
+ }
}
filesSet[ index ] = value;
onFileChange?.(
@@ -107,10 +113,13 @@ export function uploadMedia( {
validFiles.push( mediaFile );
- // Set temporary URL to create placeholder media file, this is replaced
- // with final file from media gallery when upload is `done` below.
- filesSet.push( { url: createBlobURL( mediaFile ) } );
- onFileChange?.( filesSet as Array< Partial< Attachment > > );
+ // For client-side media processing, this is handled by the upload-media package.
+ if ( ! window.__experimentalMediaProcessing ) {
+ // Set temporary URL to create placeholder media file, this is replaced
+ // with final file from media gallery when upload is `done` below.
+ filesSet.push( { url: createBlobURL( mediaFile ) } );
+ onFileChange?.( filesSet as Array< Partial< Attachment > > );
+ }
}
validFiles.map( async ( file, index ) => {
diff --git a/packages/private-apis/src/implementation.ts b/packages/private-apis/src/implementation.ts
index 5a5fb3f39fa183..1ac08a71550ff1 100644
--- a/packages/private-apis/src/implementation.ts
+++ b/packages/private-apis/src/implementation.ts
@@ -32,6 +32,7 @@ const CORE_MODULES_USING_PRIVATE_APIS = [
'@wordpress/dataviews',
'@wordpress/fields',
'@wordpress/media-utils',
+ '@wordpress/upload-media',
];
/**
diff --git a/packages/upload-media/CHANGELOG.md b/packages/upload-media/CHANGELOG.md
new file mode 100644
index 00000000000000..e04ce921cdfdc4
--- /dev/null
+++ b/packages/upload-media/CHANGELOG.md
@@ -0,0 +1,5 @@
+
+
+## Unreleased
+
+Initial release.
diff --git a/packages/upload-media/README.md b/packages/upload-media/README.md
new file mode 100644
index 00000000000000..982e59148fe87c
--- /dev/null
+++ b/packages/upload-media/README.md
@@ -0,0 +1,136 @@
+# (Experimental) Upload Media
+
+This module is a media upload handler with a queue-like system that is implemented using a custom `@wordpress/data` store.
+
+Such a system is useful for additional client-side processing of media files (e.g. image compression) before uploading them to a server.
+
+It is typically used by `@wordpress/block-editor` but can also be leveraged outside of it.
+
+## Installation
+
+Install the module
+
+```bash
+npm install @wordpress/upload-media --save
+```
+
+## Usage
+
+This is a basic example of how one can interact with the upload data store:
+
+```js
+import { store as uploadStore } from '@wordpress/upload-media';
+import { dispatch } from '@wordpress/data';
+
+dispatch( uploadStore ).updateSettings( /* ... */ );
+dispatch( uploadStore ).addItems( [
+ /* ... */
+] );
+```
+
+Refer to the API reference below or the TypeScript types for further help.
+
+## API Reference
+
+### Actions
+
+The following set of dispatching action creators are available on the object returned by `wp.data.dispatch( 'core/upload-media' )`:
+
+
+
+#### addItems
+
+Adds a new item to the upload queue.
+
+_Parameters_
+
+- _$0_ `AddItemsArgs`:
+- _$0.files_ `AddItemsArgs[ 'files' ]`: Files
+- _$0.onChange_ `[AddItemsArgs[ 'onChange' ]]`: Function called each time a file or a temporary representation of the file is available.
+- _$0.onSuccess_ `[AddItemsArgs[ 'onSuccess' ]]`: Function called after the file is uploaded.
+- _$0.onBatchSuccess_ `[AddItemsArgs[ 'onBatchSuccess' ]]`: Function called after a batch of files is uploaded.
+- _$0.onError_ `[AddItemsArgs[ 'onError' ]]`: Function called when an error happens.
+- _$0.additionalData_ `[AddItemsArgs[ 'additionalData' ]]`: Additional data to include in the request.
+- _$0.allowedTypes_ `[AddItemsArgs[ 'allowedTypes' ]]`: Array with the types of media that can be uploaded, if unset all types are allowed.
+
+#### cancelItem
+
+Cancels an item in the queue based on an error.
+
+_Parameters_
+
+- _id_ `QueueItemId`: Item ID.
+- _error_ `Error`: Error instance.
+- _silent_ Whether to cancel the item silently, without invoking its `onError` callback.
+
+
+
+### Selectors
+
+The following selectors are available on the object returned by `wp.data.select( 'core/upload-media' )`:
+
+
+
+#### getItems
+
+Returns all items currently being uploaded.
+
+_Parameters_
+
+- _state_ `State`: Upload state.
+
+_Returns_
+
+- `QueueItem[]`: Queue items.
+
+#### getSettings
+
+Returns the media upload settings.
+
+_Parameters_
+
+- _state_ `State`: Upload state.
+
+_Returns_
+
+- `Settings`: Settings
+
+#### isUploading
+
+Determines whether any upload is currently in progress.
+
+_Parameters_
+
+- _state_ `State`: Upload state.
+
+_Returns_
+
+- `boolean`: Whether any upload is currently in progress.
+
+#### isUploadingById
+
+Determines whether an upload is currently in progress given an attachment ID.
+
+_Parameters_
+
+- _state_ `State`: Upload state.
+- _attachmentId_ `number`: Attachment ID.
+
+_Returns_
+
+- `boolean`: Whether upload is currently in progress for the given attachment.
+
+#### isUploadingByUrl
+
+Determines whether an upload is currently in progress given an attachment URL.
+
+_Parameters_
+
+- _state_ `State`: Upload state.
+- _url_ `string`: Attachment URL.
+
+_Returns_
+
+- `boolean`: Whether upload is currently in progress for the given attachment.
+
+
diff --git a/packages/upload-media/package.json b/packages/upload-media/package.json
new file mode 100644
index 00000000000000..ec7eaabbb3940e
--- /dev/null
+++ b/packages/upload-media/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "@wordpress/upload-media",
+ "version": "1.0.0-prerelease",
+ "private": true,
+ "description": "Core media upload logic.",
+ "author": "The WordPress Contributors",
+ "license": "GPL-2.0-or-later",
+ "keywords": [
+ "wordpress",
+ "media"
+ ],
+ "homepage": "https://github.com/WordPress/gutenberg/tree/HEAD/packages/upload-media/README.md",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/WordPress/gutenberg.git",
+ "directory": "packages/upload-media"
+ },
+ "bugs": {
+ "url": "https://github.com/WordPress/gutenberg/issues"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ },
+ "main": "build/index.js",
+ "module": "build-module/index.js",
+ "wpScript": true,
+ "types": "build-types",
+ "dependencies": {
+ "@shopify/web-worker": "^6.4.0",
+ "@wordpress/api-fetch": "file:../api-fetch",
+ "@wordpress/blob": "file:../blob",
+ "@wordpress/compose": "file:../compose",
+ "@wordpress/data": "file:../data",
+ "@wordpress/element": "file:../element",
+ "@wordpress/i18n": "file:../i18n",
+ "@wordpress/preferences": "file:../preferences",
+ "@wordpress/private-apis": "file:../private-apis",
+ "@wordpress/url": "file:../url",
+ "uuid": "^9.0.1"
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/packages/upload-media/src/components/provider/index.tsx b/packages/upload-media/src/components/provider/index.tsx
new file mode 100644
index 00000000000000..0bc187e6a1d861
--- /dev/null
+++ b/packages/upload-media/src/components/provider/index.tsx
@@ -0,0 +1,25 @@
+/**
+ * WordPress dependencies
+ */
+import { useEffect } from '@wordpress/element';
+import { useDispatch } from '@wordpress/data';
+
+/**
+ * Internal dependencies
+ */
+import withRegistryProvider from './with-registry-provider';
+import { unlock } from '../../lock-unlock';
+import { store as uploadStore } from '../../store';
+
+const MediaUploadProvider = withRegistryProvider( ( props: any ) => {
+ const { children, settings } = props;
+ const { updateSettings } = unlock( useDispatch( uploadStore ) );
+
+ useEffect( () => {
+ updateSettings( settings );
+ }, [ settings, updateSettings ] );
+
+ return <>{ children }>;
+} );
+
+export default MediaUploadProvider;
diff --git a/packages/upload-media/src/components/provider/with-registry-provider.tsx b/packages/upload-media/src/components/provider/with-registry-provider.tsx
new file mode 100644
index 00000000000000..9a47a5601d33ed
--- /dev/null
+++ b/packages/upload-media/src/components/provider/with-registry-provider.tsx
@@ -0,0 +1,59 @@
+/**
+ * WordPress dependencies
+ */
+import { useState } from '@wordpress/element';
+import { useRegistry, createRegistry, RegistryProvider } from '@wordpress/data';
+import { createHigherOrderComponent } from '@wordpress/compose';
+
+/**
+ * Internal dependencies
+ */
+import { storeConfig } from '../../store';
+import { STORE_NAME as mediaUploadStoreName } from '../../store/constants';
+
+type WPDataRegistry = ReturnType< typeof createRegistry >;
+
+function getSubRegistry(
+ subRegistries: WeakMap< WPDataRegistry, WPDataRegistry >,
+ registry: WPDataRegistry,
+ useSubRegistry: boolean
+) {
+ if ( ! useSubRegistry ) {
+ return registry;
+ }
+ let subRegistry = subRegistries.get( registry );
+ if ( ! subRegistry ) {
+ subRegistry = createRegistry( {}, registry );
+ subRegistry.registerStore( mediaUploadStoreName, storeConfig );
+ subRegistries.set( registry, subRegistry );
+ }
+ return subRegistry;
+}
+
+const withRegistryProvider = createHigherOrderComponent(
+ ( WrappedComponent ) =>
+ ( { useSubRegistry = true, ...props } ) => {
+ const registry = useRegistry() as unknown as WPDataRegistry;
+ const [ subRegistries ] = useState<
+ WeakMap< WPDataRegistry, WPDataRegistry >
+ >( () => new WeakMap() );
+ const subRegistry = getSubRegistry(
+ subRegistries,
+ registry,
+ useSubRegistry
+ );
+
+ if ( subRegistry === registry ) {
+ return ;
+ }
+
+ return (
+
+
+
+ );
+ },
+ 'withRegistryProvider'
+);
+
+export default withRegistryProvider;
diff --git a/packages/upload-media/src/get-mime-types-array.ts b/packages/upload-media/src/get-mime-types-array.ts
new file mode 100644
index 00000000000000..d4940d36cd6ae5
--- /dev/null
+++ b/packages/upload-media/src/get-mime-types-array.ts
@@ -0,0 +1,29 @@
+/**
+ * Browsers may use unexpected mime types, and they differ from browser to browser.
+ * This function computes a flexible array of mime types from the mime type structured provided by the server.
+ * Converts { jpg|jpeg|jpe: "image/jpeg" } into [ "image/jpeg", "image/jpg", "image/jpeg", "image/jpe" ]
+ *
+ * @param {?Object} wpMimeTypesObject Mime type object received from the server.
+ * Extensions are keys separated by '|' and values are mime types associated with an extension.
+ *
+ * @return An array of mime types or null
+ */
+export function getMimeTypesArray(
+ wpMimeTypesObject?: Record< string, string > | null
+) {
+ if ( ! wpMimeTypesObject ) {
+ return null;
+ }
+ return Object.entries( wpMimeTypesObject ).flatMap(
+ ( [ extensionsString, mime ] ) => {
+ const [ type ] = mime.split( '/' );
+ const extensions = extensionsString.split( '|' );
+ return [
+ mime,
+ ...extensions.map(
+ ( extension ) => `${ type }/${ extension }`
+ ),
+ ];
+ }
+ );
+}
diff --git a/packages/upload-media/src/image-file.ts b/packages/upload-media/src/image-file.ts
new file mode 100644
index 00000000000000..2c1a43ee1ab67e
--- /dev/null
+++ b/packages/upload-media/src/image-file.ts
@@ -0,0 +1,38 @@
+/**
+ * ImageFile class.
+ *
+ * Small wrapper around the `File` class to hold
+ * information about current dimensions and original
+ * dimensions, in case the image was resized.
+ */
+export class ImageFile extends File {
+ width = 0;
+ height = 0;
+ originalWidth? = 0;
+ originalHeight? = 0;
+
+ get wasResized() {
+ return (
+ ( this.originalWidth || 0 ) > this.width ||
+ ( this.originalHeight || 0 ) > this.height
+ );
+ }
+
+ constructor(
+ file: File,
+ width: number,
+ height: number,
+ originalWidth?: number,
+ originalHeight?: number
+ ) {
+ super( [ file ], file.name, {
+ type: file.type,
+ lastModified: file.lastModified,
+ } );
+
+ this.width = width;
+ this.height = height;
+ this.originalWidth = originalWidth;
+ this.originalHeight = originalHeight;
+ }
+}
diff --git a/packages/upload-media/src/index.ts b/packages/upload-media/src/index.ts
new file mode 100644
index 00000000000000..d105c2dba90392
--- /dev/null
+++ b/packages/upload-media/src/index.ts
@@ -0,0 +1,11 @@
+/**
+ * Internal dependencies
+ */
+import { store as uploadStore } from './store';
+
+export { uploadStore as store };
+
+export { default as MediaUploadProvider } from './components/provider';
+export { UploadError } from './upload-error';
+
+export type { ImageFormat } from './store/types';
diff --git a/packages/upload-media/src/lock-unlock.ts b/packages/upload-media/src/lock-unlock.ts
new file mode 100644
index 00000000000000..5089cb80e4bb46
--- /dev/null
+++ b/packages/upload-media/src/lock-unlock.ts
@@ -0,0 +1,10 @@
+/**
+ * WordPress dependencies
+ */
+import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';
+
+export const { lock, unlock } =
+ __dangerousOptInToUnstableAPIsOnlyForCoreModules(
+ 'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',
+ '@wordpress/upload-media'
+ );
diff --git a/packages/upload-media/src/store/actions.ts b/packages/upload-media/src/store/actions.ts
new file mode 100644
index 00000000000000..4cc3c3e31ae0e2
--- /dev/null
+++ b/packages/upload-media/src/store/actions.ts
@@ -0,0 +1,183 @@
+/**
+ * External dependencies
+ */
+import { v4 as uuidv4 } from 'uuid';
+
+/**
+ * WordPress dependencies
+ */
+import type { createRegistry } from '@wordpress/data';
+
+type WPDataRegistry = ReturnType< typeof createRegistry >;
+
+/**
+ * Internal dependencies
+ */
+import type {
+ AdditionalData,
+ CancelAction,
+ OnBatchSuccessHandler,
+ OnChangeHandler,
+ OnErrorHandler,
+ OnSuccessHandler,
+ QueueItemId,
+ State,
+} from './types';
+import { Type } from './types';
+import type {
+ addItem,
+ processItem,
+ removeItem,
+ revokeBlobUrls,
+} from './private-actions';
+import { validateMimeType } from '../validate-mime-type';
+import { validateMimeTypeForUser } from '../validate-mime-type-for-user';
+import { validateFileSize } from '../validate-file-size';
+
+type ActionCreators = {
+ addItem: typeof addItem;
+ addItems: typeof addItems;
+ removeItem: typeof removeItem;
+ processItem: typeof processItem;
+ cancelItem: typeof cancelItem;
+ revokeBlobUrls: typeof revokeBlobUrls;
+ < T = Record< string, unknown > >( args: T ): void;
+};
+
+type AllSelectors = typeof import('./selectors') &
+ typeof import('./private-selectors');
+type CurriedState< F > = F extends ( state: State, ...args: infer P ) => infer R
+ ? ( ...args: P ) => R
+ : F;
+type Selectors = {
+ [ key in keyof AllSelectors ]: CurriedState< AllSelectors[ key ] >;
+};
+
+type ThunkArgs = {
+ select: Selectors;
+ dispatch: ActionCreators;
+ registry: WPDataRegistry;
+};
+
+interface AddItemsArgs {
+ files: File[];
+ onChange?: OnChangeHandler;
+ onSuccess?: OnSuccessHandler;
+ onBatchSuccess?: OnBatchSuccessHandler;
+ onError?: OnErrorHandler;
+ additionalData?: AdditionalData;
+ allowedTypes?: string[];
+}
+
+/**
+ * Adds a new item to the upload queue.
+ *
+ * @param $0
+ * @param $0.files Files
+ * @param [$0.onChange] Function called each time a file or a temporary representation of the file is available.
+ * @param [$0.onSuccess] Function called after the file is uploaded.
+ * @param [$0.onBatchSuccess] Function called after a batch of files is uploaded.
+ * @param [$0.onError] Function called when an error happens.
+ * @param [$0.additionalData] Additional data to include in the request.
+ * @param [$0.allowedTypes] Array with the types of media that can be uploaded, if unset all types are allowed.
+ */
+export function addItems( {
+ files,
+ onChange,
+ onSuccess,
+ onError,
+ onBatchSuccess,
+ additionalData,
+ allowedTypes,
+}: AddItemsArgs ) {
+ return async ( { select, dispatch }: ThunkArgs ) => {
+ const batchId = uuidv4();
+ for ( const file of files ) {
+ /*
+ Check if the caller (e.g. a block) supports this mime type.
+ Special case for file types such as HEIC which will be converted before upload anyway.
+ Another check will be done before upload.
+ */
+ try {
+ validateMimeType( file, allowedTypes );
+ validateMimeTypeForUser(
+ file,
+ select.getSettings().allowedMimeTypes
+ );
+ } catch ( error: unknown ) {
+ onError?.( error as Error );
+ continue;
+ }
+
+ try {
+ validateFileSize(
+ file,
+ select.getSettings().maxUploadFileSize
+ );
+ } catch ( error: unknown ) {
+ onError?.( error as Error );
+ continue;
+ }
+
+ dispatch.addItem( {
+ file,
+ batchId,
+ onChange,
+ onSuccess,
+ onBatchSuccess,
+ onError,
+ additionalData,
+ } );
+ }
+ };
+}
+
+/**
+ * Cancels an item in the queue based on an error.
+ *
+ * @param id Item ID.
+ * @param error Error instance.
+ * @param silent Whether to cancel the item silently,
+ * without invoking its `onError` callback.
+ */
+export function cancelItem( id: QueueItemId, error: Error, silent = false ) {
+ return async ( { select, dispatch }: ThunkArgs ) => {
+ const item = select.getItem( id );
+
+ if ( ! item ) {
+ /*
+ * Do nothing if item has already been removed.
+ * This can happen if an upload is cancelled manually
+ * while transcoding with vips is still in progress.
+ * Then, cancelItem() is once invoked manually and once
+ * by the error handler in optimizeImageItem().
+ */
+ return;
+ }
+
+ item.abortController?.abort();
+
+ if ( ! silent ) {
+ const { onError } = item;
+ onError?.( error ?? new Error( 'Upload cancelled' ) );
+ if ( ! onError && error ) {
+ // TODO: Find better way to surface errors with sideloads etc.
+ // eslint-disable-next-line no-console -- Deliberately log errors here.
+ console.error( 'Upload cancelled', error );
+ }
+ }
+
+ dispatch< CancelAction >( {
+ type: Type.Cancel,
+ id,
+ error,
+ } );
+ dispatch.removeItem( id );
+ dispatch.revokeBlobUrls( id );
+
+ // All items of this batch were cancelled or finished.
+ if ( item.batchId && select.isBatchUploaded( item.batchId ) ) {
+ item.onBatchSuccess?.();
+ }
+ };
+}
diff --git a/packages/upload-media/src/store/constants.ts b/packages/upload-media/src/store/constants.ts
new file mode 100644
index 00000000000000..ad0960cf62f46d
--- /dev/null
+++ b/packages/upload-media/src/store/constants.ts
@@ -0,0 +1 @@
+export const STORE_NAME = 'core/upload-media';
diff --git a/packages/upload-media/src/store/index.ts b/packages/upload-media/src/store/index.ts
new file mode 100644
index 00000000000000..c74f59ea7a7cf3
--- /dev/null
+++ b/packages/upload-media/src/store/index.ts
@@ -0,0 +1,43 @@
+/**
+ * WordPress dependencies
+ */
+import { createReduxStore, register } from '@wordpress/data';
+
+/**
+ * Internal dependencies
+ */
+import reducer from './reducer';
+import * as selectors from './selectors';
+import * as privateSelectors from './private-selectors';
+import * as actions from './actions';
+import * as privateActions from './private-actions';
+import { unlock } from '../lock-unlock';
+import { STORE_NAME } from './constants';
+
+/**
+ * Media upload data store configuration.
+ *
+ * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore
+ */
+export const storeConfig = {
+ reducer,
+ selectors,
+ actions,
+};
+
+/**
+ * Store definition for the media upload namespace.
+ *
+ * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
+ */
+export const store = createReduxStore( STORE_NAME, {
+ reducer,
+ selectors,
+ actions,
+} );
+
+register( store );
+// @ts-ignore
+unlock( store ).registerPrivateActions( privateActions );
+// @ts-ignore
+unlock( store ).registerPrivateSelectors( privateSelectors );
diff --git a/packages/upload-media/src/store/private-actions.ts b/packages/upload-media/src/store/private-actions.ts
new file mode 100644
index 00000000000000..a4d4ee7b99c781
--- /dev/null
+++ b/packages/upload-media/src/store/private-actions.ts
@@ -0,0 +1,407 @@
+/**
+ * External dependencies
+ */
+import { v4 as uuidv4 } from 'uuid';
+
+/**
+ * WordPress dependencies
+ */
+import { createBlobURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';
+import type { createRegistry } from '@wordpress/data';
+
+type WPDataRegistry = ReturnType< typeof createRegistry >;
+
+/**
+ * Internal dependencies
+ */
+import { cloneFile, convertBlobToFile } from '../utils';
+import { StubFile } from '../stub-file';
+import type {
+ AddAction,
+ AdditionalData,
+ AddOperationsAction,
+ BatchId,
+ CacheBlobUrlAction,
+ OnBatchSuccessHandler,
+ OnChangeHandler,
+ OnErrorHandler,
+ OnSuccessHandler,
+ Operation,
+ OperationFinishAction,
+ OperationStartAction,
+ PauseQueueAction,
+ QueueItem,
+ QueueItemId,
+ ResumeQueueAction,
+ RevokeBlobUrlsAction,
+ Settings,
+ State,
+ UpdateSettingsAction,
+} from './types';
+import { ItemStatus, OperationType, Type } from './types';
+import type { cancelItem } from './actions';
+
+type ActionCreators = {
+ cancelItem: typeof cancelItem;
+ addItem: typeof addItem;
+ removeItem: typeof removeItem;
+ prepareItem: typeof prepareItem;
+ processItem: typeof processItem;
+ finishOperation: typeof finishOperation;
+ uploadItem: typeof uploadItem;
+ revokeBlobUrls: typeof revokeBlobUrls;
+ < T = Record< string, unknown > >( args: T ): void;
+};
+
+type AllSelectors = typeof import('./selectors') &
+ typeof import('./private-selectors');
+type CurriedState< F > = F extends ( state: State, ...args: infer P ) => infer R
+ ? ( ...args: P ) => R
+ : F;
+type Selectors = {
+ [ key in keyof AllSelectors ]: CurriedState< AllSelectors[ key ] >;
+};
+
+type ThunkArgs = {
+ select: Selectors;
+ dispatch: ActionCreators;
+ registry: WPDataRegistry;
+};
+
+interface AddItemArgs {
+ // It should always be a File, but some consumers might still pass Blobs only.
+ file: File | Blob;
+ batchId?: BatchId;
+ onChange?: OnChangeHandler;
+ onSuccess?: OnSuccessHandler;
+ onError?: OnErrorHandler;
+ onBatchSuccess?: OnBatchSuccessHandler;
+ additionalData?: AdditionalData;
+ sourceUrl?: string;
+ sourceAttachmentId?: number;
+ abortController?: AbortController;
+ operations?: Operation[];
+}
+
+/**
+ * Adds a new item to the upload queue.
+ *
+ * @param $0
+ * @param $0.file File
+ * @param [$0.batchId] Batch ID.
+ * @param [$0.onChange] Function called each time a file or a temporary representation of the file is available.
+ * @param [$0.onSuccess] Function called after the file is uploaded.
+ * @param [$0.onBatchSuccess] Function called after a batch of files is uploaded.
+ * @param [$0.onError] Function called when an error happens.
+ * @param [$0.additionalData] Additional data to include in the request.
+ * @param [$0.sourceUrl] Source URL. Used when importing a file from a URL or optimizing an existing file.
+ * @param [$0.sourceAttachmentId] Source attachment ID. Used when optimizing an existing file for example.
+ * @param [$0.abortController] Abort controller for upload cancellation.
+ * @param [$0.operations] List of operations to perform. Defaults to automatically determined list, based on the file.
+ */
+export function addItem( {
+ file: fileOrBlob,
+ batchId,
+ onChange,
+ onSuccess,
+ onBatchSuccess,
+ onError,
+ additionalData = {} as AdditionalData,
+ sourceUrl,
+ sourceAttachmentId,
+ abortController,
+ operations,
+}: AddItemArgs ) {
+ return async ( { dispatch }: ThunkArgs ) => {
+ const itemId = uuidv4();
+
+ // Hardening in case a Blob is passed instead of a File.
+ // See https://github.com/WordPress/gutenberg/pull/65693 for an example.
+ const file = convertBlobToFile( fileOrBlob );
+
+ let blobUrl;
+
+ // StubFile could be coming from addItemFromUrl().
+ if ( ! ( file instanceof StubFile ) ) {
+ blobUrl = createBlobURL( file );
+ dispatch< CacheBlobUrlAction >( {
+ type: Type.CacheBlobUrl,
+ id: itemId,
+ blobUrl,
+ } );
+ }
+
+ dispatch< AddAction >( {
+ type: Type.Add,
+ item: {
+ id: itemId,
+ batchId,
+ status: ItemStatus.Processing,
+ sourceFile: cloneFile( file ),
+ file,
+ attachment: {
+ url: blobUrl,
+ },
+ additionalData: {
+ convert_format: false,
+ ...additionalData,
+ },
+ onChange,
+ onSuccess,
+ onBatchSuccess,
+ onError,
+ sourceUrl,
+ sourceAttachmentId,
+ abortController: abortController || new AbortController(),
+ operations: Array.isArray( operations )
+ ? operations
+ : [ OperationType.Prepare ],
+ },
+ } );
+
+ dispatch.processItem( itemId );
+ };
+}
+
+/**
+ * Processes a single item in the queue.
+ *
+ * Runs the next operation in line and invokes any callbacks.
+ *
+ * @param id Item ID.
+ */
+export function processItem( id: QueueItemId ) {
+ return async ( { select, dispatch }: ThunkArgs ) => {
+ if ( select.isPaused() ) {
+ return;
+ }
+
+ const item = select.getItem( id ) as QueueItem;
+
+ const { attachment, onChange, onSuccess, onBatchSuccess, batchId } =
+ item;
+
+ const operation = Array.isArray( item.operations?.[ 0 ] )
+ ? item.operations[ 0 ][ 0 ]
+ : item.operations?.[ 0 ];
+
+ if ( attachment ) {
+ onChange?.( [ attachment ] );
+ }
+
+ /*
+ If there are no more operations, the item can be removed from the queue,
+ but only if there are no thumbnails still being side-loaded,
+ or if itself is a side-loaded item.
+ */
+
+ if ( ! operation ) {
+ if ( attachment ) {
+ onSuccess?.( [ attachment ] );
+ }
+
+ // dispatch.removeItem( id );
+ dispatch.revokeBlobUrls( id );
+
+ if ( batchId && select.isBatchUploaded( batchId ) ) {
+ onBatchSuccess?.();
+ }
+
+ /*
+ At this point we are dealing with a parent whose children haven't fully uploaded yet.
+ Do nothing and let the removal happen once the last side-loaded item finishes.
+ */
+
+ return;
+ }
+
+ if ( ! operation ) {
+ // This shouldn't really happen.
+ return;
+ }
+
+ dispatch< OperationStartAction >( {
+ type: Type.OperationStart,
+ id,
+ operation,
+ } );
+
+ switch ( operation ) {
+ case OperationType.Prepare:
+ dispatch.prepareItem( item.id );
+ break;
+
+ case OperationType.Upload:
+ dispatch.uploadItem( id );
+ break;
+ }
+ };
+}
+
+/**
+ * Returns an action object that pauses all processing in the queue.
+ *
+ * Useful for testing purposes.
+ *
+ * @return Action object.
+ */
+export function pauseQueue(): PauseQueueAction {
+ return {
+ type: Type.PauseQueue,
+ };
+}
+
+/**
+ * Resumes all processing in the queue.
+ *
+ * Dispatches an action object for resuming the queue itself,
+ * and triggers processing for each remaining item in the queue individually.
+ */
+export function resumeQueue() {
+ return async ( { select, dispatch }: ThunkArgs ) => {
+ dispatch< ResumeQueueAction >( {
+ type: Type.ResumeQueue,
+ } );
+
+ for ( const item of select.getAllItems() ) {
+ dispatch.processItem( item.id );
+ }
+ };
+}
+
+/**
+ * Removes a specific item from the queue.
+ *
+ * @param id Item ID.
+ */
+export function removeItem( id: QueueItemId ) {
+ return async ( { select, dispatch }: ThunkArgs ) => {
+ const item = select.getItem( id );
+ if ( ! item ) {
+ return;
+ }
+
+ dispatch( {
+ type: Type.Remove,
+ id,
+ } );
+ };
+}
+
+/**
+ * Finishes an operation for a given item ID and immediately triggers processing the next one.
+ *
+ * @param id Item ID.
+ * @param updates Updated item data.
+ */
+export function finishOperation(
+ id: QueueItemId,
+ updates: Partial< QueueItem >
+) {
+ return async ( { dispatch }: ThunkArgs ) => {
+ dispatch< OperationFinishAction >( {
+ type: Type.OperationFinish,
+ id,
+ item: updates,
+ } );
+
+ dispatch.processItem( id );
+ };
+}
+
+/**
+ * Prepares an item for initial processing.
+ *
+ * Determines the list of operations to perform for a given image,
+ * depending on its media type.
+ *
+ * For example, HEIF images first need to be converted, resized,
+ * compressed, and then uploaded.
+ *
+ * Or videos need to be compressed, and then need poster generation
+ * before upload.
+ *
+ * @param id Item ID.
+ */
+export function prepareItem( id: QueueItemId ) {
+ return async ( { dispatch }: ThunkArgs ) => {
+ const operations: Operation[] = [ OperationType.Upload ];
+
+ dispatch< AddOperationsAction >( {
+ type: Type.AddOperations,
+ id,
+ operations,
+ } );
+
+ dispatch.finishOperation( id, {} );
+ };
+}
+
+/**
+ * Uploads an item to the server.
+ *
+ * @param id Item ID.
+ */
+export function uploadItem( id: QueueItemId ) {
+ return async ( { select, dispatch }: ThunkArgs ) => {
+ const item = select.getItem( id ) as QueueItem;
+
+ select.getSettings().mediaUpload( {
+ filesList: [ item.file ],
+ additionalData: item.additionalData,
+ signal: item.abortController?.signal,
+ onFileChange: ( [ attachment ] ) => {
+ if ( ! isBlobURL( attachment.url ) ) {
+ dispatch.finishOperation( id, {
+ attachment,
+ } );
+ }
+ },
+ onSuccess: ( [ attachment ] ) => {
+ dispatch.finishOperation( id, {
+ attachment,
+ } );
+ },
+ onError: ( error ) => {
+ dispatch.cancelItem( id, error );
+ },
+ } );
+ };
+}
+
+/**
+ * Revokes all blob URLs for a given item, freeing up memory.
+ *
+ * @param id Item ID.
+ */
+export function revokeBlobUrls( id: QueueItemId ) {
+ return async ( { select, dispatch }: ThunkArgs ) => {
+ const blobUrls = select.getBlobUrls( id );
+
+ for ( const blobUrl of blobUrls ) {
+ revokeBlobURL( blobUrl );
+ }
+
+ dispatch< RevokeBlobUrlsAction >( {
+ type: Type.RevokeBlobUrls,
+ id,
+ } );
+ };
+}
+
+/**
+ * Returns an action object that pauses all processing in the queue.
+ *
+ * Useful for testing purposes.
+ *
+ * @param settings
+ * @return Action object.
+ */
+export function updateSettings(
+ settings: Partial< Settings >
+): UpdateSettingsAction {
+ return {
+ type: Type.UpdateSettings,
+ settings,
+ };
+}
diff --git a/packages/upload-media/src/store/private-selectors.ts b/packages/upload-media/src/store/private-selectors.ts
new file mode 100644
index 00000000000000..f2cfdbef76df86
--- /dev/null
+++ b/packages/upload-media/src/store/private-selectors.ts
@@ -0,0 +1,113 @@
+/**
+ * Internal dependencies
+ */
+import {
+ type BatchId,
+ ItemStatus,
+ OperationType,
+ type QueueItem,
+ type QueueItemId,
+ type State,
+} from './types';
+
+/**
+ * Returns all items currently being uploaded.
+ *
+ * @param state Upload state.
+ *
+ * @return Queue items.
+ */
+export function getAllItems( state: State ): QueueItem[] {
+ return state.queue;
+}
+
+/**
+ * Returns a specific item given its unique ID.
+ *
+ * @param state Upload state.
+ * @param id Item ID.
+ *
+ * @return Queue item.
+ */
+export function getItem(
+ state: State,
+ id: QueueItemId
+): QueueItem | undefined {
+ return state.queue.find( ( item ) => item.id === id );
+}
+
+/**
+ * Determines whether a batch has been successfully uploaded, given its unique ID.
+ *
+ * @param state Upload state.
+ * @param batchId Batch ID.
+ *
+ * @return Whether a batch has been uploaded.
+ */
+export function isBatchUploaded( state: State, batchId: BatchId ): boolean {
+ const batchItems = state.queue.filter(
+ ( item ) => batchId === item.batchId
+ );
+ return batchItems.length === 0;
+}
+
+/**
+ * Determines whether an upload is currently in progress given a post or attachment ID.
+ *
+ * @param state Upload state.
+ * @param postOrAttachmentId Post ID or attachment ID.
+ *
+ * @return Whether upload is currently in progress for the given post or attachment.
+ */
+export function isUploadingToPost(
+ state: State,
+ postOrAttachmentId: number
+): boolean {
+ return state.queue.some(
+ ( item ) =>
+ item.currentOperation === OperationType.Upload &&
+ item.additionalData.post === postOrAttachmentId
+ );
+}
+
+/**
+ * Returns the next paused upload for a given post or attachment ID.
+ *
+ * @param state Upload state.
+ * @param postOrAttachmentId Post ID or attachment ID.
+ *
+ * @return Paused item.
+ */
+export function getPausedUploadForPost(
+ state: State,
+ postOrAttachmentId: number
+): QueueItem | undefined {
+ return state.queue.find(
+ ( item ) =>
+ item.status === ItemStatus.Paused &&
+ item.additionalData.post === postOrAttachmentId
+ );
+}
+
+/**
+ * Determines whether uploading is currently paused.
+ *
+ * @param state Upload state.
+ *
+ * @return Whether uploading is currently paused.
+ */
+export function isPaused( state: State ): boolean {
+ return state.queueStatus === 'paused';
+}
+
+/**
+ * Returns all cached blob URLs for a given item ID.
+ *
+ * @param state Upload state.
+ * @param id Item ID
+ *
+ * @return List of blob URLs.
+ */
+export function getBlobUrls( state: State, id: QueueItemId ): string[] {
+ return state.blobUrls[ id ] || [];
+}
diff --git a/packages/upload-media/src/store/reducer.ts b/packages/upload-media/src/store/reducer.ts
new file mode 100644
index 00000000000000..290a319fcbc1da
--- /dev/null
+++ b/packages/upload-media/src/store/reducer.ts
@@ -0,0 +1,195 @@
+/**
+ * Internal dependencies
+ */
+import {
+ type AddAction,
+ type AddOperationsAction,
+ type CacheBlobUrlAction,
+ type CancelAction,
+ type OperationFinishAction,
+ type OperationStartAction,
+ type PauseQueueAction,
+ type QueueItem,
+ type RemoveAction,
+ type ResumeQueueAction,
+ type RevokeBlobUrlsAction,
+ type State,
+ Type,
+ type UnknownAction,
+ type UpdateSettingsAction,
+} from './types';
+
+const noop = () => {};
+
+const DEFAULT_STATE: State = {
+ queue: [],
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: noop,
+ },
+};
+
+type Action =
+ | AddAction
+ | RemoveAction
+ | CancelAction
+ | PauseQueueAction
+ | ResumeQueueAction
+ | AddOperationsAction
+ | OperationFinishAction
+ | OperationStartAction
+ | CacheBlobUrlAction
+ | RevokeBlobUrlsAction
+ | UpdateSettingsAction
+ | UnknownAction;
+
+function reducer(
+ state = DEFAULT_STATE,
+ action: Action = { type: Type.Unknown }
+) {
+ switch ( action.type ) {
+ case Type.PauseQueue: {
+ return {
+ ...state,
+ queueStatus: 'paused',
+ };
+ }
+
+ case Type.ResumeQueue: {
+ return {
+ ...state,
+ queueStatus: 'active',
+ };
+ }
+
+ case Type.Add:
+ return {
+ ...state,
+ queue: [ ...state.queue, action.item ],
+ };
+
+ case Type.Cancel:
+ return {
+ ...state,
+ queue: state.queue.map(
+ ( item ): QueueItem =>
+ item.id === action.id
+ ? {
+ ...item,
+ error: action.error,
+ }
+ : item
+ ),
+ };
+
+ case Type.Remove:
+ return {
+ ...state,
+ queue: state.queue.filter( ( item ) => item.id !== action.id ),
+ };
+
+ case Type.OperationStart: {
+ return {
+ ...state,
+ queue: state.queue.map(
+ ( item ): QueueItem =>
+ item.id === action.id
+ ? {
+ ...item,
+ currentOperation: action.operation,
+ }
+ : item
+ ),
+ };
+ }
+
+ case Type.AddOperations:
+ return {
+ ...state,
+ queue: state.queue.map( ( item ): QueueItem => {
+ if ( item.id !== action.id ) {
+ return item;
+ }
+
+ return {
+ ...item,
+ operations: [
+ ...( item.operations || [] ),
+ ...action.operations,
+ ],
+ };
+ } ),
+ };
+
+ case Type.OperationFinish:
+ return {
+ ...state,
+ queue: state.queue.map( ( item ): QueueItem => {
+ if ( item.id !== action.id ) {
+ return item;
+ }
+
+ const operations = item.operations
+ ? item.operations.slice( 1 )
+ : [];
+
+ // Prevent an empty object if there's no attachment data.
+ const attachment =
+ item.attachment || action.item.attachment
+ ? {
+ ...item.attachment,
+ ...action.item.attachment,
+ }
+ : undefined;
+
+ return {
+ ...item,
+ currentOperation: undefined,
+ operations,
+ ...action.item,
+ attachment,
+ additionalData: {
+ ...item.additionalData,
+ ...action.item.additionalData,
+ },
+ };
+ } ),
+ };
+
+ case Type.CacheBlobUrl: {
+ const blobUrls = state.blobUrls[ action.id ] || [];
+ return {
+ ...state,
+ blobUrls: {
+ ...state.blobUrls,
+ [ action.id ]: [ ...blobUrls, action.blobUrl ],
+ },
+ };
+ }
+
+ case Type.RevokeBlobUrls: {
+ const newBlobUrls = { ...state.blobUrls };
+ delete newBlobUrls[ action.id ];
+
+ return {
+ ...state,
+ blobUrls: newBlobUrls,
+ };
+ }
+
+ case Type.UpdateSettings: {
+ return {
+ ...state,
+ settings: {
+ ...state.settings,
+ ...action.settings,
+ },
+ };
+ }
+ }
+
+ return state;
+}
+
+export default reducer;
diff --git a/packages/upload-media/src/store/selectors.ts b/packages/upload-media/src/store/selectors.ts
new file mode 100644
index 00000000000000..8bcb8c5d63b6a7
--- /dev/null
+++ b/packages/upload-media/src/store/selectors.ts
@@ -0,0 +1,67 @@
+/**
+ * Internal dependencies
+ */
+import type { QueueItem, Settings, State } from './types';
+
+/**
+ * Returns all items currently being uploaded.
+ *
+ * @param state Upload state.
+ *
+ * @return Queue items.
+ */
+export function getItems( state: State ): QueueItem[] {
+ return state.queue;
+}
+
+/**
+ * Determines whether any upload is currently in progress.
+ *
+ * @param state Upload state.
+ *
+ * @return Whether any upload is currently in progress.
+ */
+export function isUploading( state: State ): boolean {
+ return state.queue.length >= 1;
+}
+
+/**
+ * Determines whether an upload is currently in progress given an attachment URL.
+ *
+ * @param state Upload state.
+ * @param url Attachment URL.
+ *
+ * @return Whether upload is currently in progress for the given attachment.
+ */
+export function isUploadingByUrl( state: State, url: string ): boolean {
+ return state.queue.some(
+ ( item ) => item.attachment?.url === url || item.sourceUrl === url
+ );
+}
+
+/**
+ * Determines whether an upload is currently in progress given an attachment ID.
+ *
+ * @param state Upload state.
+ * @param attachmentId Attachment ID.
+ *
+ * @return Whether upload is currently in progress for the given attachment.
+ */
+export function isUploadingById( state: State, attachmentId: number ): boolean {
+ return state.queue.some(
+ ( item ) =>
+ item.attachment?.id === attachmentId ||
+ item.sourceAttachmentId === attachmentId
+ );
+}
+
+/**
+ * Returns the media upload settings.
+ *
+ * @param state Upload state.
+ *
+ * @return Settings
+ */
+export function getSettings( state: State ): Settings {
+ return state.settings;
+}
diff --git a/packages/upload-media/src/store/test/actions.ts b/packages/upload-media/src/store/test/actions.ts
new file mode 100644
index 00000000000000..adb38ab27128e3
--- /dev/null
+++ b/packages/upload-media/src/store/test/actions.ts
@@ -0,0 +1,112 @@
+/**
+ * WordPress dependencies
+ */
+import { createRegistry } from '@wordpress/data';
+
+type WPDataRegistry = ReturnType< typeof createRegistry >;
+
+/**
+ * Internal dependencies
+ */
+import { store as uploadStore } from '..';
+import { ItemStatus } from '../types';
+import { unlock } from '../../lock-unlock';
+
+jest.mock( '@wordpress/blob', () => ( {
+ __esModule: true,
+ createBlobURL: jest.fn( () => 'blob:foo' ),
+ isBlobURL: jest.fn( ( str: string ) => str.startsWith( 'blob:' ) ),
+ revokeBlobURL: jest.fn(),
+} ) );
+
+function createRegistryWithStores() {
+ // Create a registry and register used stores.
+ const registry = createRegistry();
+ // @ts-ignore
+ [ uploadStore ].forEach( registry.register );
+ return registry;
+}
+
+const jpegFile = new File( [ 'foo' ], 'example.jpg', {
+ lastModified: 1234567891,
+ type: 'image/jpeg',
+} );
+
+const mp4File = new File( [ 'foo' ], 'amazing-video.mp4', {
+ lastModified: 1234567891,
+ type: 'video/mp4',
+} );
+
+describe( 'actions', () => {
+ let registry: WPDataRegistry;
+ beforeEach( () => {
+ registry = createRegistryWithStores();
+ unlock( registry.dispatch( uploadStore ) ).pauseQueue();
+ } );
+
+ describe( 'addItem', () => {
+ it( 'adds an item to the queue', () => {
+ unlock( registry.dispatch( uploadStore ) ).addItem( {
+ file: jpegFile,
+ } );
+
+ expect( registry.select( uploadStore ).getItems() ).toHaveLength(
+ 1
+ );
+ expect(
+ registry.select( uploadStore ).getItems()[ 0 ]
+ ).toStrictEqual(
+ expect.objectContaining( {
+ id: expect.any( String ),
+ file: jpegFile,
+ sourceFile: jpegFile,
+ status: ItemStatus.Processing,
+ attachment: {
+ url: expect.stringMatching( /^blob:/ ),
+ },
+ } )
+ );
+ } );
+ } );
+
+ describe( 'addItems', () => {
+ it( 'adds multiple items to the queue', () => {
+ const onError = jest.fn();
+ registry.dispatch( uploadStore ).addItems( {
+ files: [ jpegFile, mp4File ],
+ onError,
+ } );
+
+ expect( onError ).not.toHaveBeenCalled();
+ expect( registry.select( uploadStore ).getItems() ).toHaveLength(
+ 2
+ );
+ expect(
+ registry.select( uploadStore ).getItems()[ 0 ]
+ ).toStrictEqual(
+ expect.objectContaining( {
+ id: expect.any( String ),
+ file: jpegFile,
+ sourceFile: jpegFile,
+ status: ItemStatus.Processing,
+ attachment: {
+ url: expect.stringMatching( /^blob:/ ),
+ },
+ } )
+ );
+ expect(
+ registry.select( uploadStore ).getItems()[ 1 ]
+ ).toStrictEqual(
+ expect.objectContaining( {
+ id: expect.any( String ),
+ file: mp4File,
+ sourceFile: mp4File,
+ status: ItemStatus.Processing,
+ attachment: {
+ url: expect.stringMatching( /^blob:/ ),
+ },
+ } )
+ );
+ } );
+ } );
+} );
diff --git a/packages/upload-media/src/store/test/reducer.ts b/packages/upload-media/src/store/test/reducer.ts
new file mode 100644
index 00000000000000..80b92e4b14c3d1
--- /dev/null
+++ b/packages/upload-media/src/store/test/reducer.ts
@@ -0,0 +1,279 @@
+/**
+ * Internal dependencies
+ */
+import reducer from '../reducer';
+import {
+ ItemStatus,
+ OperationType,
+ type QueueItem,
+ type State,
+ Type,
+} from '../types';
+
+describe( 'reducer', () => {
+ describe( `${ Type.Add }`, () => {
+ it( 'adds an item to the queue', () => {
+ const initialState: State = {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ queue: [
+ {
+ id: '1',
+ status: ItemStatus.Processing,
+ } as QueueItem,
+ ],
+ };
+ const state = reducer( initialState, {
+ type: Type.Add,
+ item: {
+ id: '2',
+ status: ItemStatus.Processing,
+ } as QueueItem,
+ } );
+
+ expect( state ).toEqual( {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: expect.any( Function ),
+ },
+ queue: [
+ {
+ id: '1',
+ status: ItemStatus.Processing,
+ } as QueueItem,
+ {
+ id: '2',
+ status: ItemStatus.Processing,
+ },
+ ],
+ } );
+ } );
+ } );
+
+ describe( `${ Type.Cancel }`, () => {
+ it( 'removes an item from the queue', () => {
+ const initialState: State = {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ queue: [
+ {
+ id: '1',
+ status: ItemStatus.Processing,
+ } as QueueItem,
+ {
+ id: '2',
+ status: ItemStatus.Processing,
+ } as QueueItem,
+ ],
+ };
+ const state = reducer( initialState, {
+ type: Type.Cancel,
+ id: '2',
+ error: new Error(),
+ } );
+
+ expect( state ).toEqual( {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: expect.any( Function ),
+ },
+ queue: [
+ {
+ id: '1',
+ status: ItemStatus.Processing,
+ },
+ {
+ id: '2',
+ status: ItemStatus.Processing,
+ error: expect.any( Error ),
+ },
+ ],
+ } );
+ } );
+ } );
+
+ describe( `${ Type.Remove }`, () => {
+ it( 'removes an item from the queue', () => {
+ const initialState: State = {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ queue: [
+ {
+ id: '1',
+ status: ItemStatus.Processing,
+ } as QueueItem,
+ {
+ id: '2',
+ status: ItemStatus.Processing,
+ } as QueueItem,
+ ],
+ };
+ const state = reducer( initialState, {
+ type: Type.Remove,
+ id: '1',
+ } );
+
+ expect( state ).toEqual( {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: expect.any( Function ),
+ },
+ queue: [
+ {
+ id: '2',
+ status: ItemStatus.Processing,
+ },
+ ],
+ } );
+ } );
+ } );
+
+ describe( `${ Type.AddOperations }`, () => {
+ it( 'appends operations to the list', () => {
+ const initialState: State = {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ queue: [
+ {
+ id: '1',
+ status: ItemStatus.Processing,
+ operations: [ OperationType.Upload ],
+ } as QueueItem,
+ ],
+ };
+ const state = reducer( initialState, {
+ type: Type.AddOperations,
+ id: '1',
+ operations: [ OperationType.Upload ],
+ } );
+
+ expect( state ).toEqual( {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: expect.any( Function ),
+ },
+ queue: [
+ {
+ id: '1',
+ status: ItemStatus.Processing,
+ operations: [
+ OperationType.Upload,
+ OperationType.Upload,
+ ],
+ },
+ ],
+ } );
+ } );
+ } );
+
+ describe( `${ Type.OperationStart }`, () => {
+ it( 'marks an item as processing', () => {
+ const initialState: State = {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ queue: [
+ {
+ id: '1',
+ status: ItemStatus.Processing,
+ operations: [ OperationType.Upload ],
+ } as QueueItem,
+ {
+ id: '2',
+ status: ItemStatus.Processing,
+ operations: [ OperationType.Upload ],
+ } as QueueItem,
+ ],
+ };
+ const state = reducer( initialState, {
+ type: Type.OperationStart,
+ id: '2',
+ operation: OperationType.Upload,
+ } );
+
+ expect( state ).toEqual( {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: expect.any( Function ),
+ },
+ queue: [
+ {
+ id: '1',
+ status: ItemStatus.Processing,
+ operations: [ OperationType.Upload ],
+ },
+ {
+ id: '2',
+ status: ItemStatus.Processing,
+ operations: [ OperationType.Upload ],
+ currentOperation: OperationType.Upload,
+ },
+ ],
+ } );
+ } );
+ } );
+
+ describe( `${ Type.OperationFinish }`, () => {
+ it( 'marks an item as processing', () => {
+ const initialState: State = {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ queue: [
+ {
+ id: '1',
+ additionalData: {},
+ attachment: {},
+ status: ItemStatus.Processing,
+ operations: [ OperationType.Upload ],
+ currentOperation: OperationType.Upload,
+ } as QueueItem,
+ ],
+ };
+ const state = reducer( initialState, {
+ type: Type.OperationFinish,
+ id: '1',
+ item: {},
+ } );
+
+ expect( state ).toEqual( {
+ queueStatus: 'active',
+ blobUrls: {},
+ settings: {
+ mediaUpload: expect.any( Function ),
+ },
+ queue: [
+ {
+ id: '1',
+ additionalData: {},
+ attachment: {},
+ status: ItemStatus.Processing,
+ currentOperation: undefined,
+ operations: [],
+ },
+ ],
+ } );
+ } );
+ } );
+} );
diff --git a/packages/upload-media/src/store/test/selectors.ts b/packages/upload-media/src/store/test/selectors.ts
new file mode 100644
index 00000000000000..716b7792ef77a4
--- /dev/null
+++ b/packages/upload-media/src/store/test/selectors.ts
@@ -0,0 +1,105 @@
+/**
+ * Internal dependencies
+ */
+import {
+ getItems,
+ isUploading,
+ isUploadingById,
+ isUploadingByUrl,
+} from '../selectors';
+import { ItemStatus, type QueueItem, type State } from '../types';
+
+describe( 'selectors', () => {
+ describe( 'getItems', () => {
+ it( 'should return empty array by default', () => {
+ const state: State = {
+ queue: [],
+ queueStatus: 'paused',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ };
+
+ expect( getItems( state ) ).toHaveLength( 0 );
+ } );
+ } );
+
+ describe( 'isUploading', () => {
+ it( 'should return true if there are items in the pipeline', () => {
+ const state: State = {
+ queue: [
+ {
+ status: ItemStatus.Processing,
+ },
+ {
+ status: ItemStatus.Processing,
+ },
+ {
+ status: ItemStatus.Paused,
+ },
+ ] as QueueItem[],
+ queueStatus: 'paused',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ };
+
+ expect( isUploading( state ) ).toBe( true );
+ } );
+ } );
+
+ describe( 'isUploadingByUrl', () => {
+ it( 'should return true if there are items in the pipeline', () => {
+ const state: State = {
+ queue: [
+ {
+ status: ItemStatus.Processing,
+ attachment: {
+ url: 'https://example.com/one.jpeg',
+ },
+ },
+ {
+ status: ItemStatus.Processing,
+ },
+ ] as QueueItem[],
+ queueStatus: 'paused',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ };
+
+ expect(
+ isUploadingByUrl( state, 'https://example.com/one.jpeg' )
+ ).toBe( true );
+ expect(
+ isUploadingByUrl( state, 'https://example.com/three.jpeg' )
+ ).toBe( false );
+ } );
+ } );
+
+ describe( 'isUploadingById', () => {
+ it( 'should return true if there are items in the pipeline', () => {
+ const state: State = {
+ queue: [
+ {
+ status: ItemStatus.Processing,
+ attachment: {
+ id: 123,
+ },
+ },
+ ] as QueueItem[],
+ queueStatus: 'paused',
+ blobUrls: {},
+ settings: {
+ mediaUpload: jest.fn(),
+ },
+ };
+
+ expect( isUploadingById( state, 123 ) ).toBe( true );
+ expect( isUploadingById( state, 789 ) ).toBe( false );
+ } );
+ } );
+} );
diff --git a/packages/upload-media/src/store/types.ts b/packages/upload-media/src/store/types.ts
new file mode 100644
index 00000000000000..5084e006a2cfa9
--- /dev/null
+++ b/packages/upload-media/src/store/types.ts
@@ -0,0 +1,172 @@
+export type QueueItemId = string;
+
+export type QueueStatus = 'active' | 'paused';
+
+export type BatchId = string;
+
+export interface QueueItem {
+ id: QueueItemId;
+ sourceFile: File;
+ file: File;
+ poster?: File;
+ attachment?: Partial< Attachment >;
+ status: ItemStatus;
+ additionalData: AdditionalData;
+ onChange?: OnChangeHandler;
+ onSuccess?: OnSuccessHandler;
+ onError?: OnErrorHandler;
+ onBatchSuccess?: OnBatchSuccessHandler;
+ currentOperation?: OperationType;
+ operations?: Operation[];
+ error?: Error;
+ batchId?: string;
+ sourceUrl?: string;
+ sourceAttachmentId?: number;
+ abortController?: AbortController;
+}
+
+export interface State {
+ queue: QueueItem[];
+ queueStatus: QueueStatus;
+ blobUrls: Record< QueueItemId, string[] >;
+ settings: Settings;
+}
+
+export enum Type {
+ Unknown = 'REDUX_UNKNOWN',
+ Add = 'ADD_ITEM',
+ Prepare = 'PREPARE_ITEM',
+ Cancel = 'CANCEL_ITEM',
+ Remove = 'REMOVE_ITEM',
+ PauseItem = 'PAUSE_ITEM',
+ ResumeItem = 'RESUME_ITEM',
+ PauseQueue = 'PAUSE_QUEUE',
+ ResumeQueue = 'RESUME_QUEUE',
+ OperationStart = 'OPERATION_START',
+ OperationFinish = 'OPERATION_FINISH',
+ AddOperations = 'ADD_OPERATIONS',
+ CacheBlobUrl = 'CACHE_BLOB_URL',
+ RevokeBlobUrls = 'REVOKE_BLOB_URLS',
+ UpdateSettings = 'UPDATE_SETTINGS',
+}
+
+type Action< T = Type, Payload = Record< string, unknown > > = {
+ type: T;
+} & Payload;
+
+export type UnknownAction = Action< Type.Unknown >;
+export type AddAction = Action<
+ Type.Add,
+ {
+ item: Omit< QueueItem, 'operations' > &
+ Partial< Pick< QueueItem, 'operations' > >;
+ }
+>;
+export type OperationStartAction = Action<
+ Type.OperationStart,
+ { id: QueueItemId; operation: OperationType }
+>;
+export type OperationFinishAction = Action<
+ Type.OperationFinish,
+ {
+ id: QueueItemId;
+ item: Partial< QueueItem >;
+ }
+>;
+export type AddOperationsAction = Action<
+ Type.AddOperations,
+ { id: QueueItemId; operations: Operation[] }
+>;
+export type CancelAction = Action<
+ Type.Cancel,
+ { id: QueueItemId; error: Error }
+>;
+export type PauseItemAction = Action< Type.PauseItem, { id: QueueItemId } >;
+export type ResumeItemAction = Action< Type.ResumeItem, { id: QueueItemId } >;
+export type PauseQueueAction = Action< Type.PauseQueue >;
+export type ResumeQueueAction = Action< Type.ResumeQueue >;
+export type RemoveAction = Action< Type.Remove, { id: QueueItemId } >;
+export type CacheBlobUrlAction = Action<
+ Type.CacheBlobUrl,
+ { id: QueueItemId; blobUrl: string }
+>;
+export type RevokeBlobUrlsAction = Action<
+ Type.RevokeBlobUrls,
+ { id: QueueItemId }
+>;
+export type UpdateSettingsAction = Action<
+ Type.UpdateSettings,
+ { settings: Partial< Settings > }
+>;
+
+interface UploadMediaArgs {
+ // Additional data to include in the request.
+ additionalData?: AdditionalData;
+ // Array with the types of media that can be uploaded, if unset all types are allowed.
+ allowedTypes?: string[];
+ // List of files.
+ filesList: File[];
+ // Maximum upload size in bytes allowed for the site.
+ maxUploadFileSize?: number;
+ // Function called when an error happens.
+ onError?: OnErrorHandler;
+ // Function called each time a file or a temporary representation of the file is available.
+ onFileChange?: OnChangeHandler;
+ // Function called once a file has completely finished uploading, including thumbnails.
+ onSuccess?: OnSuccessHandler;
+ // List of allowed mime types and file extensions.
+ wpAllowedMimeTypes?: Record< string, string > | null;
+ // Abort signal.
+ signal?: AbortSignal;
+}
+
+export interface Settings {
+ // Function for uploading files to the server.
+ mediaUpload: ( args: UploadMediaArgs ) => void;
+ // List of allowed mime types and file extensions.
+ allowedMimeTypes?: Record< string, string > | null;
+ // Maximum upload file size
+ maxUploadFileSize?: number;
+}
+
+// Must match the Attachment type from the media-utils package.
+export interface Attachment {
+ id: number;
+ alt: string;
+ caption: string;
+ title: string;
+ url: string;
+ filename: string | null;
+ filesize: number | null;
+ media_type: 'image' | 'file';
+ mime_type: string;
+ featured_media?: number;
+ missing_image_sizes?: string[];
+ poster?: string;
+}
+
+export type OnChangeHandler = ( attachments: Partial< Attachment >[] ) => void;
+export type OnSuccessHandler = ( attachments: Partial< Attachment >[] ) => void;
+export type OnErrorHandler = ( error: Error ) => void;
+export type OnBatchSuccessHandler = () => void;
+
+export enum ItemStatus {
+ Processing = 'PROCESSING',
+ Paused = 'PAUSED',
+}
+
+export enum OperationType {
+ Prepare = 'PREPARE',
+ Upload = 'UPLOAD',
+}
+
+export interface OperationArgs {}
+
+type OperationWithArgs< T extends keyof OperationArgs = keyof OperationArgs > =
+ [ T, OperationArgs[ T ] ];
+
+export type Operation = OperationType | OperationWithArgs;
+
+export type AdditionalData = Record< string, unknown >;
+
+export type ImageFormat = 'jpeg' | 'webp' | 'avif' | 'png' | 'gif';
diff --git a/packages/upload-media/src/stub-file.ts b/packages/upload-media/src/stub-file.ts
new file mode 100644
index 00000000000000..f308c0d48b6f49
--- /dev/null
+++ b/packages/upload-media/src/stub-file.ts
@@ -0,0 +1,5 @@
+export class StubFile extends File {
+ constructor( fileName = 'stub-file' ) {
+ super( [], fileName );
+ }
+}
diff --git a/packages/upload-media/src/test/get-file-basename.ts b/packages/upload-media/src/test/get-file-basename.ts
new file mode 100644
index 00000000000000..6bf968a7643468
--- /dev/null
+++ b/packages/upload-media/src/test/get-file-basename.ts
@@ -0,0 +1,15 @@
+/**
+ * Internal dependencies
+ */
+import { getFileBasename } from '../utils';
+
+describe( 'getFileBasename', () => {
+ it.each( [
+ [ 'my-video.mp4', 'my-video' ],
+ [ 'my.video.mp4', 'my.video' ],
+ [ 'my-video', 'my-video' ],
+ [ '', '' ],
+ ] )( 'for file name %s returns basename %s', ( fileName, baseName ) => {
+ expect( getFileBasename( fileName ) ).toStrictEqual( baseName );
+ } );
+} );
diff --git a/packages/upload-media/src/test/get-file-extension.ts b/packages/upload-media/src/test/get-file-extension.ts
new file mode 100644
index 00000000000000..b26c4571be73fc
--- /dev/null
+++ b/packages/upload-media/src/test/get-file-extension.ts
@@ -0,0 +1,15 @@
+/**
+ * Internal dependencies
+ */
+import { getFileExtension } from '../utils';
+
+describe( 'getFileExtension', () => {
+ it.each( [
+ [ 'my-video.mp4', 'mp4' ],
+ [ 'my.video.mp4', 'mp4' ],
+ [ 'my-video', null ],
+ [ '', null ],
+ ] )( 'for file name %s returns extension %s', ( fileName, baseName ) => {
+ expect( getFileExtension( fileName ) ).toStrictEqual( baseName );
+ } );
+} );
diff --git a/packages/upload-media/src/test/get-file-name-from-url.ts b/packages/upload-media/src/test/get-file-name-from-url.ts
new file mode 100644
index 00000000000000..6e2d497472e762
--- /dev/null
+++ b/packages/upload-media/src/test/get-file-name-from-url.ts
@@ -0,0 +1,14 @@
+/**
+ * Internal dependencies
+ */
+import { getFileNameFromUrl } from '../utils';
+
+describe( 'getFileNameFromUrl', () => {
+ it.each( [
+ [ 'https://example.com/', 'unnamed' ],
+ [ 'https://example.com/photo.jpeg', 'photo.jpeg' ],
+ [ 'https://example.com/path/to/video.mp4', 'video.mp4' ],
+ ] )( 'for %s returns %s', ( url, fileName ) => {
+ expect( getFileNameFromUrl( url ) ).toBe( fileName );
+ } );
+} );
diff --git a/packages/upload-media/src/test/get-mime-types-array.ts b/packages/upload-media/src/test/get-mime-types-array.ts
new file mode 100644
index 00000000000000..156955373bd0da
--- /dev/null
+++ b/packages/upload-media/src/test/get-mime-types-array.ts
@@ -0,0 +1,47 @@
+/**
+ * Internal dependencies
+ */
+import { getMimeTypesArray } from '../get-mime-types-array';
+
+describe( 'getMimeTypesArray', () => {
+ it( 'should return null if it is "falsy" e.g: undefined or null', () => {
+ expect( getMimeTypesArray( null ) ).toEqual( null );
+ expect( getMimeTypesArray( undefined ) ).toEqual( null );
+ } );
+
+ it( 'should return an empty array if an empty object is passed', () => {
+ expect( getMimeTypesArray( {} ) ).toEqual( [] );
+ } );
+
+ it( 'should return the type plus a new mime type with type and subtype with the extension if a type is passed', () => {
+ expect( getMimeTypesArray( { ext: 'chicken' } ) ).toEqual( [
+ 'chicken',
+ 'chicken/ext',
+ ] );
+ } );
+
+ it( 'should return the mime type passed and a new mime type with type and the extension as subtype', () => {
+ expect( getMimeTypesArray( { ext: 'chicken/ribs' } ) ).toEqual( [
+ 'chicken/ribs',
+ 'chicken/ext',
+ ] );
+ } );
+
+ it( 'should return the mime type passed and an additional mime type per extension supported', () => {
+ expect( getMimeTypesArray( { 'jpg|jpeg|jpe': 'image/jpeg' } ) ).toEqual(
+ [ 'image/jpeg', 'image/jpg', 'image/jpeg', 'image/jpe' ]
+ );
+ } );
+
+ it( 'should handle multiple mime types', () => {
+ expect(
+ getMimeTypesArray( { 'ext|aaa': 'chicken/ribs', aaa: 'bbb' } )
+ ).toEqual( [
+ 'chicken/ribs',
+ 'chicken/ext',
+ 'chicken/aaa',
+ 'bbb',
+ 'bbb/aaa',
+ ] );
+ } );
+} );
diff --git a/packages/upload-media/src/test/image-file.ts b/packages/upload-media/src/test/image-file.ts
new file mode 100644
index 00000000000000..e48ae2df6ebcef
--- /dev/null
+++ b/packages/upload-media/src/test/image-file.ts
@@ -0,0 +1,15 @@
+/**
+ * Internal dependencies
+ */
+import { ImageFile } from '../image-file';
+
+describe( 'ImageFile', () => {
+ it( 'returns whether the file was resizes', () => {
+ const file = new window.File( [ 'fake_file' ], 'test.jpeg', {
+ type: 'image/jpeg',
+ } );
+
+ const image = new ImageFile( file, 1000, 1000, 2000, 200 );
+ expect( image.wasResized ).toBe( true );
+ } );
+} );
diff --git a/packages/upload-media/src/test/upload-error.ts b/packages/upload-media/src/test/upload-error.ts
new file mode 100644
index 00000000000000..4d5f025ed8cf39
--- /dev/null
+++ b/packages/upload-media/src/test/upload-error.ts
@@ -0,0 +1,24 @@
+/**
+ * Internal dependencies
+ */
+import { UploadError } from '../upload-error';
+
+describe( 'UploadError', () => {
+ it( 'holds error code and file name', () => {
+ const file = new File( [], 'example.jpg', {
+ lastModified: 1234567891,
+ type: 'image/jpeg',
+ } );
+
+ const error = new UploadError( {
+ code: 'some_error',
+ message: 'An error occurred',
+ file,
+ } );
+
+ expect( error ).toStrictEqual( expect.any( Error ) );
+ expect( error.code ).toBe( 'some_error' );
+ expect( error.message ).toBe( 'An error occurred' );
+ expect( error.file ).toBe( file );
+ } );
+} );
diff --git a/packages/upload-media/src/test/validate-file-size.ts b/packages/upload-media/src/test/validate-file-size.ts
new file mode 100644
index 00000000000000..31d6af0e7e4a55
--- /dev/null
+++ b/packages/upload-media/src/test/validate-file-size.ts
@@ -0,0 +1,70 @@
+/**
+ * Internal dependencies
+ */
+import { validateFileSize } from '../validate-file-size';
+import { UploadError } from '../upload-error';
+
+const imageFile = new window.File( [ 'fake_file' ], 'test.jpeg', {
+ type: 'image/jpeg',
+} );
+
+const emptyFile = new window.File( [], 'test.jpeg', {
+ type: 'image/jpeg',
+} );
+
+describe( 'validateFileSize', () => {
+ afterEach( () => {
+ jest.clearAllMocks();
+ } );
+
+ it( 'should error if the file is empty', () => {
+ expect( () => {
+ validateFileSize( emptyFile );
+ } ).toThrow(
+ new UploadError( {
+ code: 'EMPTY_FILE',
+ message: 'test.jpeg: This file is empty.',
+ file: imageFile,
+ } )
+ );
+ } );
+
+ it( 'should error if the file is is greater than the maximum', () => {
+ expect( () => {
+ validateFileSize( imageFile, 2 );
+ } ).toThrow(
+ new UploadError( {
+ code: 'SIZE_ABOVE_LIMIT',
+ message:
+ 'test.jpeg: This file exceeds the maximum upload size for this site.',
+ file: imageFile,
+ } )
+ );
+ } );
+
+ it( 'should not error if the file is below the limit', () => {
+ expect( () => {
+ validateFileSize( imageFile, 100 );
+ } ).not.toThrow(
+ new UploadError( {
+ code: 'SIZE_ABOVE_LIMIT',
+ message:
+ 'test.jpeg: This file exceeds the maximum upload size for this site.',
+ file: imageFile,
+ } )
+ );
+ } );
+
+ it( 'should not error if there is no limit', () => {
+ expect( () => {
+ validateFileSize( imageFile );
+ } ).not.toThrow(
+ new UploadError( {
+ code: 'SIZE_ABOVE_LIMIT',
+ message:
+ 'test.jpeg: This file exceeds the maximum upload size for this site.',
+ file: imageFile,
+ } )
+ );
+ } );
+} );
diff --git a/packages/upload-media/src/test/validate-mime-type-for-user.ts b/packages/upload-media/src/test/validate-mime-type-for-user.ts
new file mode 100644
index 00000000000000..d2566566862142
--- /dev/null
+++ b/packages/upload-media/src/test/validate-mime-type-for-user.ts
@@ -0,0 +1,37 @@
+/**
+ * Internal dependencies
+ */
+import { validateMimeTypeForUser } from '../validate-mime-type-for-user';
+import { UploadError } from '../upload-error';
+
+const imageFile = new window.File( [ 'fake_file' ], 'test.jpeg', {
+ type: 'image/jpeg',
+} );
+
+describe( 'validateMimeTypeForUser', () => {
+ afterEach( () => {
+ jest.clearAllMocks();
+ } );
+
+ it( 'should not error if wpAllowedMimeTypes is null or missing', async () => {
+ expect( () => {
+ validateMimeTypeForUser( imageFile );
+ } ).not.toThrow();
+ expect( () => {
+ validateMimeTypeForUser( imageFile, null );
+ } ).not.toThrow();
+ } );
+
+ it( 'should error if file type is not allowed for user', async () => {
+ expect( () => {
+ validateMimeTypeForUser( imageFile, { aac: 'audio/aac' } );
+ } ).toThrow(
+ new UploadError( {
+ code: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',
+ message:
+ 'test.jpeg: Sorry, you are not allowed to upload this file type.',
+ file: imageFile,
+ } )
+ );
+ } );
+} );
diff --git a/packages/upload-media/src/test/validate-mime-type.ts b/packages/upload-media/src/test/validate-mime-type.ts
new file mode 100644
index 00000000000000..a83cdcefe5f99a
--- /dev/null
+++ b/packages/upload-media/src/test/validate-mime-type.ts
@@ -0,0 +1,57 @@
+/**
+ * Internal dependencies
+ */
+import { validateMimeType } from '../validate-mime-type';
+import { UploadError } from '../upload-error';
+
+const xmlFile = new window.File( [ 'fake_file' ], 'test.xml', {
+ type: 'text/xml',
+} );
+const imageFile = new window.File( [ 'fake_file' ], 'test.jpeg', {
+ type: 'image/jpeg',
+} );
+
+describe( 'validateMimeType', () => {
+ afterEach( () => {
+ jest.clearAllMocks();
+ } );
+
+ it( 'should error if allowedTypes contains a partial mime type and the validation fails', async () => {
+ expect( () => {
+ validateMimeType( xmlFile, [ 'image' ] );
+ } ).toThrow(
+ new UploadError( {
+ code: 'MIME_TYPE_NOT_SUPPORTED',
+ message:
+ 'test.xml: Sorry, this file type is not supported here.',
+ file: xmlFile,
+ } )
+ );
+ } );
+
+ it( 'should error if allowedTypes contains a complete mime type and the validation fails', async () => {
+ expect( () => {
+ validateMimeType( imageFile, [ 'image/gif' ] );
+ } ).toThrow(
+ new UploadError( {
+ code: 'MIME_TYPE_NOT_SUPPORTED',
+ message:
+ 'test.jpeg: Sorry, this file type is not supported here.',
+ file: xmlFile,
+ } )
+ );
+ } );
+
+ it( 'should error if allowedTypes contains multiple types and the validation fails', async () => {
+ expect( () => {
+ validateMimeType( xmlFile, [ 'video', 'image' ] );
+ } ).toThrow(
+ new UploadError( {
+ code: 'MIME_TYPE_NOT_SUPPORTED',
+ message:
+ 'test.xml: Sorry, this file type is not supported here.',
+ file: xmlFile,
+ } )
+ );
+ } );
+} );
diff --git a/packages/upload-media/src/upload-error.ts b/packages/upload-media/src/upload-error.ts
new file mode 100644
index 00000000000000..d712e9dcdb6966
--- /dev/null
+++ b/packages/upload-media/src/upload-error.ts
@@ -0,0 +1,26 @@
+interface UploadErrorArgs {
+ code: string;
+ message: string;
+ file: File;
+ cause?: Error;
+}
+
+/**
+ * MediaError class.
+ *
+ * Small wrapper around the `Error` class
+ * to hold an error code and a reference to a file object.
+ */
+export class UploadError extends Error {
+ code: string;
+ file: File;
+
+ constructor( { code, message, file, cause }: UploadErrorArgs ) {
+ super( message, { cause } );
+
+ Object.setPrototypeOf( this, new.target.prototype );
+
+ this.code = code;
+ this.file = file;
+ }
+}
diff --git a/packages/upload-media/src/utils.ts b/packages/upload-media/src/utils.ts
new file mode 100644
index 00000000000000..3950ec03887928
--- /dev/null
+++ b/packages/upload-media/src/utils.ts
@@ -0,0 +1,90 @@
+/**
+ * WordPress dependencies
+ */
+import { getFilename } from '@wordpress/url';
+import { _x } from '@wordpress/i18n';
+
+/**
+ * Converts a Blob to a File with a default name like "image.png".
+ *
+ * If it is already a File object, it is returned unchanged.
+ *
+ * @param fileOrBlob Blob object.
+ * @return File object.
+ */
+export function convertBlobToFile( fileOrBlob: Blob | File ): File {
+ if ( fileOrBlob instanceof File ) {
+ return fileOrBlob;
+ }
+
+ // Extension is only an approximation.
+ // The server will override it if incorrect.
+ const ext = fileOrBlob.type.split( '/' )[ 1 ];
+ const mediaType =
+ 'application/pdf' === fileOrBlob.type
+ ? 'document'
+ : fileOrBlob.type.split( '/' )[ 0 ];
+ return new File( [ fileOrBlob ], `${ mediaType }.${ ext }`, {
+ type: fileOrBlob.type,
+ } );
+}
+
+/**
+ * Renames a given file and returns a new file.
+ *
+ * Copies over the last modified time.
+ *
+ * @param file File object.
+ * @param name File name.
+ * @return Renamed file object.
+ */
+export function renameFile( file: File, name: string ): File {
+ return new File( [ file ], name, {
+ type: file.type,
+ lastModified: file.lastModified,
+ } );
+}
+
+/**
+ * Clones a given file object.
+ *
+ * @param file File object.
+ * @return New file object.
+ */
+export function cloneFile( file: File ): File {
+ return renameFile( file, file.name );
+}
+
+/**
+ * Returns the file extension from a given file name or URL.
+ *
+ * @param file File URL.
+ * @return File extension or null if it does not have one.
+ */
+export function getFileExtension( file: string ): string | null {
+ return file.includes( '.' ) ? file.split( '.' ).pop() || null : null;
+}
+
+/**
+ * Returns file basename without extension.
+ *
+ * For example, turns "my-awesome-file.jpeg" into "my-awesome-file".
+ *
+ * @param name File name.
+ * @return File basename.
+ */
+export function getFileBasename( name: string ): string {
+ return name.includes( '.' )
+ ? name.split( '.' ).slice( 0, -1 ).join( '.' )
+ : name;
+}
+
+/**
+ * Returns the file name including extension from a URL.
+ *
+ * @param url File URL.
+ * @return File name.
+ */
+export function getFileNameFromUrl( url: string ) {
+ return getFilename( url ) || _x( 'unnamed', 'file name' );
+}
diff --git a/packages/upload-media/src/validate-file-size.ts b/packages/upload-media/src/validate-file-size.ts
new file mode 100644
index 00000000000000..cc34462b268dda
--- /dev/null
+++ b/packages/upload-media/src/validate-file-size.ts
@@ -0,0 +1,44 @@
+/**
+ * WordPress dependencies
+ */
+import { __, sprintf } from '@wordpress/i18n';
+
+/**
+ * Internal dependencies
+ */
+import { UploadError } from './upload-error';
+
+/**
+ * Verifies whether the file is within the file upload size limits for the site.
+ *
+ * @param file File object.
+ * @param maxUploadFileSize Maximum upload size in bytes allowed for the site.
+ */
+export function validateFileSize( file: File, maxUploadFileSize?: number ) {
+ // Don't allow empty files to be uploaded.
+ if ( file.size <= 0 ) {
+ throw new UploadError( {
+ code: 'EMPTY_FILE',
+ message: sprintf(
+ // translators: %s: file name.
+ __( '%s: This file is empty.' ),
+ file.name
+ ),
+ file,
+ } );
+ }
+
+ if ( maxUploadFileSize && file.size > maxUploadFileSize ) {
+ throw new UploadError( {
+ code: 'SIZE_ABOVE_LIMIT',
+ message: sprintf(
+ // translators: %s: file name.
+ __(
+ '%s: This file exceeds the maximum upload size for this site.'
+ ),
+ file.name
+ ),
+ file,
+ } );
+ }
+}
diff --git a/packages/upload-media/src/validate-mime-type-for-user.ts b/packages/upload-media/src/validate-mime-type-for-user.ts
new file mode 100644
index 00000000000000..858c583561978e
--- /dev/null
+++ b/packages/upload-media/src/validate-mime-type-for-user.ts
@@ -0,0 +1,46 @@
+/**
+ * WordPress dependencies
+ */
+import { __, sprintf } from '@wordpress/i18n';
+
+/**
+ * Internal dependencies
+ */
+import { UploadError } from './upload-error';
+import { getMimeTypesArray } from './get-mime-types-array';
+
+/**
+ * Verifies if the user is allowed to upload this mime type.
+ *
+ * @param file File object.
+ * @param wpAllowedMimeTypes List of allowed mime types and file extensions.
+ */
+export function validateMimeTypeForUser(
+ file: File,
+ wpAllowedMimeTypes?: Record< string, string > | null
+) {
+ // Allowed types for the current WP_User.
+ const allowedMimeTypesForUser = getMimeTypesArray( wpAllowedMimeTypes );
+
+ if ( ! allowedMimeTypesForUser ) {
+ return;
+ }
+
+ const isAllowedMimeTypeForUser = allowedMimeTypesForUser.includes(
+ file.type
+ );
+
+ if ( file.type && ! isAllowedMimeTypeForUser ) {
+ throw new UploadError( {
+ code: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',
+ message: sprintf(
+ // translators: %s: file name.
+ __(
+ '%s: Sorry, you are not allowed to upload this file type.'
+ ),
+ file.name
+ ),
+ file,
+ } );
+ }
+}
diff --git a/packages/upload-media/src/validate-mime-type.ts b/packages/upload-media/src/validate-mime-type.ts
new file mode 100644
index 00000000000000..2d99455d7b60f1
--- /dev/null
+++ b/packages/upload-media/src/validate-mime-type.ts
@@ -0,0 +1,43 @@
+/**
+ * WordPress dependencies
+ */
+import { __, sprintf } from '@wordpress/i18n';
+
+/**
+ * Internal dependencies
+ */
+import { UploadError } from './upload-error';
+
+/**
+ * Verifies if the caller (e.g. a block) supports this mime type.
+ *
+ * @param file File object.
+ * @param allowedTypes List of allowed mime types.
+ */
+export function validateMimeType( file: File, allowedTypes?: string[] ) {
+ if ( ! allowedTypes ) {
+ return;
+ }
+
+ // Allowed type specified by consumer.
+ const isAllowedType = allowedTypes.some( ( allowedType ) => {
+ // If a complete mimetype is specified verify if it matches exactly the mime type of the file.
+ if ( allowedType.includes( '/' ) ) {
+ return allowedType === file.type;
+ }
+ // Otherwise a general mime type is used, and we should verify if the file mimetype starts with it.
+ return file.type.startsWith( `${ allowedType }/` );
+ } );
+
+ if ( file.type && ! isAllowedType ) {
+ throw new UploadError( {
+ code: 'MIME_TYPE_NOT_SUPPORTED',
+ message: sprintf(
+ // translators: %s: file name.
+ __( '%s: Sorry, this file type is not supported here.' ),
+ file.name
+ ),
+ file,
+ } );
+ }
+}
diff --git a/packages/upload-media/tsconfig.json b/packages/upload-media/tsconfig.json
new file mode 100644
index 00000000000000..b0bc834698905c
--- /dev/null
+++ b/packages/upload-media/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig.json",
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "rootDir": "src",
+ "declarationDir": "build-types",
+ "types": [ "gutenberg-env" ]
+ },
+ "include": [ "src/**/*" ],
+ "references": [
+ { "path": "../api-fetch" },
+ { "path": "../blob" },
+ { "path": "../compose" },
+ { "path": "../data" },
+ { "path": "../element" },
+ { "path": "../i18n" },
+ { "path": "../private-apis" },
+ { "path": "../url" }
+ ]
+}
diff --git a/tsconfig.json b/tsconfig.json
index 1010054ea512ea..93d0bd976dd005 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -55,6 +55,7 @@
{ "path": "packages/sync" },
{ "path": "packages/token-list" },
{ "path": "packages/undo-manager" },
+ { "path": "packages/upload-media" },
{ "path": "packages/url" },
{ "path": "packages/vips" },
{ "path": "packages/warning" },
From 2cdd37d45d9eea93377314acfa803786d9049dec Mon Sep 17 00:00:00 2001
From: Marco Ciampini
Date: Mon, 16 Dec 2024 11:17:15 +0100
Subject: [PATCH 088/163] Menu: more granular sub-components (#67422)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* MenuItem: add render and store props
* Extract sub-components: popover, trigger button, submenu trigger item
* Unit tests
* CHANGELOG
* Add more memory to node on CI
* Refactor block bindings panel menu (#67633)
Co-authored-by: ciampo
* Storybook (#67632)
* Refactor dataviews item actions menu (#67636)
* Refactor dataviews view config menu (#67637)
* Refactor global styles shadows edit panel menu (#67641)
* Refactor global styles font size menus (#67642)
* Refactor "Add filter" dataviews menu (#67634)
* Menu granular subcomponents: Refactor dataviews list layout actions menu (#67639)
Co-authored-by: ciampo
Co-authored-by: tyxla
Co-authored-by: oandregal
* Menu granular subcomponents: Refactor dataviews table layout header menu (#67640)
Co-authored-by: ciampo
Co-authored-by: tyxla
Co-authored-by: oandregal