diff --git a/.distignore b/.distignore
new file mode 100644
index 0000000..3b1706d
--- /dev/null
+++ b/.distignore
@@ -0,0 +1,75 @@
+# Exclude from WordPress.org distribution
+
+# Git/Version Control
+.git/
+.github/
+.gitignore
+
+# Development Configuration
+.editorconfig
+.eslintignore
+.eslintrc.json
+.husky/
+.npmrc
+.nvmrc
+.stylelintignore
+babel.config.js
+commitlint.config.js
+jest.config.js
+Makefile
+phpcs.xml.dist
+phpstan.neon.dist
+phpunit.xml.dist
+tsconfig.json
+
+# Source files (build output is included)
+src/
+
+# Tests
+tests/
+
+# Documentation
+docs/
+DEVELOPMENT.md
+
+# WordPress.org assets (separate from plugin)
+wp-assets/
+
+# Dependencies
+node_modules/
+vendor/bin
+vendor/antecedent
+vendor/brain
+vendor/hamcrest
+vendor/mockery
+vendor/myclabs
+vendor/nikic
+vendor/phar-io
+vendor/phpcompatibility
+vendor/phpcsstandards
+vendor/phpstan
+vendor/phpunit
+vendor/sebastian
+vendor/sirbrillig
+vendor/slevomat
+vendor/squizlabs
+vendor/staabm
+vendor/szepeviktor
+vendor/theseer
+vendor/wpackagist-plugin
+vendor/yoast
+
+# Package files
+package.json
+package-lock.json
+composer.json
+composer.lock
+blueprint.json
+
+# Other
+*.log
+*.map
+*.zip
+.distignore
+.DS_Store
+Thumbs.db
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bdf45e1..ca75fc2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,27 +1,66 @@
-## [1.0.3](https://github.com/rtCamp/carousel-system-interactivity-api/compare/v1.0.2...v1.0.3) (2026-02-24)
+## [1.0.4](https://github.com/rtCamp/carousel-kit/compare/v1.0.3...v1.0.4) (2026-03-09)
+
+### Bug Fixes
+
+* clean up .distignore by removing unnecessary files and directories ([353646b](https://github.com/rtCamp/carousel-kit/commit/353646bf85f1d986644fbf1d745688702f4a35e0))
+* correct release link in INSTALLATION.md and update node_modules exclusion in phpstan.neon.dist ([1eea8d8](https://github.com/rtCamp/carousel-kit/commit/1eea8d8c4b8ea49a526b871d738dbb91501ffd69))
+* CSS linting issues ([1149c55](https://github.com/rtCamp/carousel-kit/commit/1149c55b55056d0171eef66465f9c6e22b02dae4))
+* ensure direct access to Autoloader.php exits gracefully ([d33bf17](https://github.com/rtCamp/carousel-kit/commit/d33bf17e1caed94489850677743dcf659caa35de))
+* **examples:** swap misplaced editor images and remove hardcoded aspect ratio ([162b07e](https://github.com/rtCamp/carousel-kit/commit/162b07ee577ebe80236ec87172a523307fb4a3de))
+* ignore phpcs warning for including pattern file from a fixed directory ([02d49a7](https://github.com/rtCamp/carousel-kit/commit/02d49a7a1468f82670253e7b7c12b861ccc2edd5))
+* remove outdated screenshots description from readme ([7ffdd9a](https://github.com/rtCamp/carousel-kit/commit/7ffdd9a1c44d4747b37f25757a91c8dc70e79371))
+* **styles:** remove unnecessary grid-template-columns property ([818d69c](https://github.com/rtCamp/carousel-kit/commit/818d69c5537e8ab76ff40df0a255b1c5d182f934))
+* update @wordpress/scripts version to allow minor updates ([03ce762](https://github.com/rtCamp/carousel-kit/commit/03ce7623a1597ed8959f2f3f6fa8393e2c01065d))
+* update contributors list in plugin header and readme.txt ([295b2b3](https://github.com/rtCamp/carousel-kit/commit/295b2b3787df7c757d383333dbfe84f97a913590))
+* update dist target to exclude additional configuration and development files ([71381db](https://github.com/rtCamp/carousel-kit/commit/71381dbca6e7afa216020b69906d811013c0a5bc))
+* update file paths in phpcs and phpstan configuration ([4077c28](https://github.com/rtCamp/carousel-kit/commit/4077c28f7aea1ce5de64c18f8948fa943ca8317a))
+* update package dependencies for minimatch and serialize-javascript ([6a05ac9](https://github.com/rtCamp/carousel-kit/commit/6a05ac9ea01e17077197bfd09a8335aca627c3aa))
+* update package-lock.json to remove unused dependency and upgrade svgo and immutable versions ([c9e877d](https://github.com/rtCamp/carousel-kit/commit/c9e877d164acdffe37d9eb91b5f03bc3cd65b084))
+* update POT-Creation-Date and add missing autoloader error message ([3bdc9e0](https://github.com/rtCamp/carousel-kit/commit/3bdc9e06e8fbdbaffd17d8c50a9e6b57dbb44ea3))
+* update script paths in composer.json and improve constant definitions in tests ([9c73548](https://github.com/rtCamp/carousel-kit/commit/9c7354831f124705fe3fc8cd56a9c32e6da159bc))
+* update script paths in composer.json to use local binaries ([46f0f7a](https://github.com/rtCamp/carousel-kit/commit/46f0f7a2ed3d204a5a479cd6eaee7509a9546640))
+* update tested up to version in readme.txt from 6.9.1 to 6.9 ([6a23832](https://github.com/rtCamp/carousel-kit/commit/6a23832624a693ca4a8ef1fd4d7ed9e2ffe4f04d))
+* update WordPress minimum requirement to 6.6 in README, INSTALLATION, and readme.txt ([320a3ec](https://github.com/rtCamp/carousel-kit/commit/320a3ec09184f44d823219b3747e3d4c2dc60a1d))
+
+### Features
+
+* add localization support and update package.json for repository and bugs metadata ([2268cb8](https://github.com/rtCamp/carousel-kit/commit/2268cb830b65828c5164133b00af4432fbd7ac29))
+* add new screenshot image and remove outdated PNG file ([e1b9e23](https://github.com/rtCamp/carousel-kit/commit/e1b9e2345755ccf94ffd049b9da3c84cc5dac09a))
+* add placeholder logos and update hero carousel pattern ([bdd4b52](https://github.com/rtCamp/carousel-kit/commit/bdd4b525217de55385df163ed21095cd302bebbc))
+* add readme.txt with plugin details and installation instructions ([e8cdd4a](https://github.com/rtCamp/carousel-kit/commit/e8cdd4a8e77d324cc61068f9be19bd884564b382))
+* add screenshot for plugin preview in WordPress.org ([c3826fc](https://github.com/rtCamp/carousel-kit/commit/c3826fc212ad49201fefc0b9ff2106fc163d9232))
+* implement autoloader for PHP classes and refactor constant definitions ([a0a1b45](https://github.com/rtCamp/carousel-kit/commit/a0a1b45c8f2f481799c50c34b5bc4eeb13eb34d4))
+* update .distignore to exclude README.md and enhance carousel-kit.php for direct access protection ([e5ee596](https://github.com/rtCamp/carousel-kit/commit/e5ee596077a1f3a5d1311823d39db3aa1b2c734e))
+* update license and version in carousel-kit.php; add index.php for plugin structure ([4e5fe9f](https://github.com/rtCamp/carousel-kit/commit/4e5fe9f83ae717c14dcc0b21ddac72a81c8662c7))
+* update PHP requirement to 8.2 and reorder contributors in plugin header ([3a52e05](https://github.com/rtCamp/carousel-kit/commit/3a52e059d48a864e47c43b89ca006ad9eda0b6f3))
+* update README with minimum requirements and add uninstall functionality ([22cb27c](https://github.com/rtCamp/carousel-kit/commit/22cb27cab704d3531e61b2c7351899470fd973f5))
+* Updated pot file ([cd5e061](https://github.com/rtCamp/carousel-kit/commit/cd5e06180f91a6a74599dabb1418c14011c90d61))
+
+
+## [1.0.3](https://github.com/rtCamp/carousel-kit/compare/v1.0.2...v1.0.3) (2026-02-24)
### Bug Fixes
-* enable loop on editor ([fe4566a](https://github.com/rtCamp/carousel-system-interactivity-api/commit/fe4566afcf72e1e663c7eb481a7957d62c2d3365))
-* state corruption when clicking between slides ([637e4a5](https://github.com/rtCamp/carousel-system-interactivity-api/commit/637e4a507eb2c58576c4004d5460e8aa7295db9f))
+* enable loop on editor ([fe4566a](https://github.com/rtCamp/carousel-kit/commit/fe4566afcf72e1e663c7eb481a7957d62c2d3365))
+* state corruption when clicking between slides ([637e4a5](https://github.com/rtCamp/carousel-kit/commit/637e4a507eb2c58576c4004d5460e8aa7295db9f))
-## [1.0.2](https://github.com/rtCamp/carousel-system-interactivity-api/compare/v1.0.1...v1.0.2) (2026-02-23)
+## [1.0.2](https://github.com/rtCamp/carousel-kit/compare/v1.0.1...v1.0.2) (2026-02-23)
### Bug Fixes
-* **demo:** 4 slides per view ([e13817c](https://github.com/rtCamp/carousel-system-interactivity-api/commit/e13817c8e49e0e071580efbf95ff4c77d677e114))
-* replace PNG images with optimized WEBP format ([eb60082](https://github.com/rtCamp/carousel-system-interactivity-api/commit/eb6008251039ea700262c63db89a266072ee6c3f))
-* replace urls with webp alts ([000f894](https://github.com/rtCamp/carousel-system-interactivity-api/commit/000f894a9818bd8181977cb038231e0ea3d82386))
+* **demo:** 4 slides per view ([e13817c](https://github.com/rtCamp/carousel-kit/commit/e13817c8e49e0e071580efbf95ff4c77d677e114))
+* replace PNG images with optimized WEBP format ([eb60082](https://github.com/rtCamp/carousel-kit/commit/eb6008251039ea700262c63db89a266072ee6c3f))
+* replace urls with webp alts ([000f894](https://github.com/rtCamp/carousel-kit/commit/000f894a9818bd8181977cb038231e0ea3d82386))
### Features
-* setup wizard styles ([0be0bf7](https://github.com/rtCamp/carousel-system-interactivity-api/commit/0be0bf7cde8c9035cca1086dce7dce005e0d39b2))
-* slide appender and setup ([a42331d](https://github.com/rtCamp/carousel-system-interactivity-api/commit/a42331d10b225379408ddf8c0649e83484496a1e))
+* setup wizard styles ([0be0bf7](https://github.com/rtCamp/carousel-kit/commit/0be0bf7cde8c9035cca1086dce7dce005e0d39b2))
+* slide appender and setup ([a42331d](https://github.com/rtCamp/carousel-kit/commit/a42331d10b225379408ddf8c0649e83484496a1e))
-# [1.0.1](https://github.com/rtCamp/carousel-system-interactivity-api/compare/1.0.0...1.0.1) (2026-02-16)
+# [1.0.1](https://github.com/rtCamp/carousel-kit/compare/v1.0.0...v1.0.1) (2026-02-16)
### Bug Fixes
@@ -33,15 +72,12 @@
### Bug Fixes
-* Gap issue fixed for the carousel items ([5277b89](https://github.com/rtCamp/carousel-system-interactivity-api/commit/5277b89545c973f13c22f6d1d7cf21e19958305f))
+* Gap issue fixed for the carousel items ([5277b89](https://github.com/rtCamp/carousel-kit/commit/5277b89545c973f13c22f6d1d7cf21e19958305f))
### Features
-* Add example carousels for hero, logo showcase, and testimonials ([d2b6e4a](https://github.com/rtCamp/carousel-system-interactivity-api/commit/d2b6e4ae0f915f6edfb6ddf637c4a88878375e4b))
-* Add slide to scroll option ([f2adab3](https://github.com/rtCamp/carousel-system-interactivity-api/commit/f2adab310015347400a1c2e6437b3a68566a6c9d))
-* Enhance vertical axis support and adjust slide dimensions in carousel styles ([2ec3e40](https://github.com/rtCamp/carousel-system-interactivity-api/commit/2ec3e40e8e34655d3417b25e16feaee41451c604))
-* Refactor context handling and define global window interface for carousel context ([5aab80e](https://github.com/rtCamp/carousel-system-interactivity-api/commit/5aab80edd103ee66d8e212359eb0f8d2ad01acb7))
-
-
-
+* Add example carousels for hero, logo showcase, and testimonials ([d2b6e4a](https://github.com/rtCamp/carousel-kit/commit/d2b6e4ae0f915f6edfb6ddf637c4a88878375e4b))
+* Add slide to scroll option ([f2adab3](https://github.com/rtCamp/carousel-kit/commit/f2adab310015347400a1c2e6437b3a68566a6c9d))
+* Enhance vertical axis support and adjust slide dimensions in carousel styles ([2ec3e40](https://github.com/rtCamp/carousel-kit/commit/2ec3e40e8e34655d3417b25e16feaee41451c604))
+* Refactor context handling and define global window interface for carousel context ([5aab80e](https://github.com/rtCamp/carousel-kit/commit/5aab80edd103ee66d8e212359eb0f8d2ad01acb7))
diff --git a/Makefile b/Makefile
index d34a365..3a9efba 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,5 @@
# Configuration
PLUGIN_SLUG := carousel-kit
-PLUGIN_VERSION := 1.0.0
BUILD_DIR := build-dist
ZIP_NAME := $(PLUGIN_SLUG).zip
@@ -50,17 +49,23 @@ dist:
--exclude='.*' \
--exclude='node_modules' \
--exclude='tests' \
+ --exclude='wp-assets' \
--exclude='phpunit.xml.dist' \
--exclude='phpcs.xml.dist' \
+ --exclude='phpstan.neon.dist' \
+ --exclude='babel.config.js' \
+ --exclude='commitlint.config.js' \
+ --exclude='jest.config.js' \
--exclude='webpack.config.js' \
--exclude='package.json' \
--exclude='package-lock.json' \
+ --exclude='blueprint.json' \
--exclude='tsconfig.json' \
--exclude='composer.json' \
--exclude='composer.lock' \
--exclude='Makefile' \
- --exclude='README.md' \
--exclude='CHANGELOG.md' \
+ --exclude='DEVELOPMENT.md' \
--exclude='src' \
--exclude='$(BUILD_DIR)' \
--exclude='*.zip' \
diff --git a/README.md b/README.md
index c9ec472..3e54097 100644
--- a/README.md
+++ b/README.md
@@ -29,11 +29,11 @@ Easily create dynamic, accessible, and customizable carousels for any content ty
| Requirement | Minimum | Recommended |
| ----------- | ------------ | ----------- |
-| WordPress | 6.5+ | 6.6+ |
-| PHP | 7.4+ | 8.2+ |
+| WordPress | 6.6+ | 6.9+ |
+| PHP | 8.2+ | 8.2+ |
| Gutenberg | Not required | — |
-> **Note:** The Interactivity API became stable in WordPress 6.5. This plugin works with WordPress core—no Gutenberg plugin required.
+> **Note:** This plugin works with WordPress core—no Gutenberg plugin required.
## Browser Support
@@ -80,6 +80,10 @@ Yes. The carousel follows W3C accessibility guidelines with proper ARIA roles, l
Yes. Each carousel instance maintains its own independent state.
+### What data is removed on uninstall?
+
+On uninstall, Carousel Kit removes its cached pattern transient (`carousel_kit_patterns_cache`). It does not remove your posts or block content.
+
## Changelog
See [CHANGELOG.md](CHANGELOG.md) for full release history.
@@ -94,13 +98,16 @@ Have a feature request? [Open an issue](https://github.com/rtCamp/carousel-kit/i
## Contributors
+- [rtCamp](https://github.com/rtCamp)
- [Danish Shakeel](https://github.com/danish17)
- [Masud Rana](https://github.com/theMasudRana)
-- [rtCamp](https://profiles.wordpress.org/rtcamp)
+- [Gagan Deep Singh](https://github.com/gagan0123)
+- [Utsav Patel](https://github.com/up1512001)
+- [Sagar Tamang](https://github.com/mi5t4n)
- [Aviral Mittal](https://github.com/aviral-mittal)
- [Vishal Kotak](https://github.com/vishal4669)
-- [Aishwarrya Pande](https://github.com/AishwarryaPande)
- [Raj Patel](https://github.com/imrraaj)
+- [Aishwarrya Pande](https://github.com/AishwarryaPande)
## License
diff --git a/carousel-kit.php b/carousel-kit.php
index 49c5021..48a9498 100644
--- a/carousel-kit.php
+++ b/carousel-kit.php
@@ -3,31 +3,47 @@
* Plugin Name: Carousel Kit
* Description: Carousel block using Embla and WordPress Interactivity API.
* Plugin URI: https://github.com/rtCamp/carousel-kit
- * Requires at least: 6.5
- * Requires PHP: 7.4
+ * Requires at least: 6.6
+ * Requires PHP: 8.2
* Author: rtCamp
* Author URI: https://rtcamp.com
- * Contributors: iamdanih17, immasud
- * License: GPL2
+ * Domain Path: /languages
+ * License: GPL-2.0-or-later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
- * Version: 1.0.3
+ * Version: 1.0.4
* Text Domain: carousel-kit
*
* @package carousel-kit
*/
-define( 'CAROUSEL_KIT_PATH', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
-define( 'CAROUSEL_KIT_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );
-define( 'CAROUSEL_KIT_BUILD_PATH', CAROUSEL_KIT_PATH . '/build' );
-define( 'CAROUSEL_KIT_BUILD_URL', CAROUSEL_KIT_URL . '/build' );
+namespace Carousel_Kit;
-require_once CAROUSEL_KIT_PATH . '/vendor/autoload.php';
+if ( ! defined( 'ABSPATH' ) ) {
+ exit; // Exit if accessed directly.
+}
+
+/**
+ * Define plugin constants.
+ */
+function constants(): void {
+ define( 'CAROUSEL_KIT_PATH', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
+ define( 'CAROUSEL_KIT_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );
+ define( 'CAROUSEL_KIT_BUILD_PATH', CAROUSEL_KIT_PATH . '/build' );
+ define( 'CAROUSEL_KIT_BUILD_URL', CAROUSEL_KIT_URL . '/build' );
+}
+
+constants();
+
+require_once __DIR__ . '/inc/Autoloader.php';
+if ( ! Autoloader::autoload() ) {
+ return;
+}
/**
* Plugin loader.
*/
-function carousel_kit_loader() {
- \Carousel_Kit\Plugin::get_instance();
+function carousel_kit_loader(): void {
+ Plugin::get_instance();
}
carousel_kit_loader();
diff --git a/composer.json b/composer.json
index 5f9aaf6..69f3344 100644
--- a/composer.json
+++ b/composer.json
@@ -32,8 +32,7 @@
}
],
"require": {
- "php": "^8.2",
- "scrivo/highlight.php": "^9.18"
+ "php": "^8.2"
},
"require-dev": {
"automattic/vipwpcs": "^3.0",
@@ -65,7 +64,7 @@
"scripts": {
"format": "phpcbf",
"lint": "phpcs",
- "phpstan": "phpstan analyse --memory-limit=2G",
+ "phpstan": "phpstan analyse --memory-limit=4G",
"test": "phpunit",
"test:unit": "phpunit --testsuite unit",
"test:coverage": "phpunit --coverage-html tests/_output/coverage"
diff --git a/composer.lock b/composer.lock
index 719a5fd..ca59430 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,87 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "c807d59c2478e04aa04acd36971c41e8",
- "packages": [
- {
- "name": "scrivo/highlight.php",
- "version": "v9.18.1.10",
- "source": {
- "type": "git",
- "url": "https://github.com/scrivo/highlight.php.git",
- "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/850f4b44697a2552e892ffe71490ba2733c2fc6e",
- "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": ">=5.4"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8|^5.7",
- "sabberworm/php-css-parser": "^8.3",
- "symfony/finder": "^2.8|^3.4|^5.4",
- "symfony/var-dumper": "^2.8|^3.4|^5.4"
- },
- "suggest": {
- "ext-mbstring": "Allows highlighting code with unicode characters and supports language with unicode keywords"
- },
- "type": "library",
- "autoload": {
- "files": [
- "HighlightUtilities/functions.php"
- ],
- "psr-0": {
- "Highlight\\": "",
- "HighlightUtilities\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Geert Bergman",
- "homepage": "http://www.scrivo.org/",
- "role": "Project Author"
- },
- {
- "name": "Vladimir Jimenez",
- "homepage": "https://allejo.io",
- "role": "Maintainer"
- },
- {
- "name": "Martin Folkers",
- "homepage": "https://twobrain.io",
- "role": "Contributor"
- }
- ],
- "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js",
- "keywords": [
- "code",
- "highlight",
- "highlight.js",
- "highlight.php",
- "syntax"
- ],
- "support": {
- "issues": "https://github.com/scrivo/highlight.php/issues",
- "source": "https://github.com/scrivo/highlight.php"
- },
- "funding": [
- {
- "url": "https://github.com/allejo",
- "type": "github"
- }
- ],
- "time": "2022-12-17T21:53:22+00:00"
- }
- ],
+ "content-hash": "ce07304be6cef4c520c42700f79bcaee",
+ "packages": [],
"packages-dev": [
{
"name": "antecedent/patchwork",
diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md
index 22519ee..e18f765 100644
--- a/docs/INSTALLATION.md
+++ b/docs/INSTALLATION.md
@@ -1,11 +1,11 @@
# Installation
## Requirements
-- WordPress 6.5 or higher
+- WordPress 6.6 or higher
- PHP 8.2 or higher
## Manual Installation
-1. Download the `carousel-kit.zip` file from the [Releases](https://github.com/rtCamp/carousel-system-interactivity-api/releases) page.
+1. Download the `carousel-kit.zip` file from the [Releases](https://github.com/rtCamp/carousel-kit/releases) page.
2. Log in to your WordPress admin dashboard.
3. Go to **Plugins > Add New Plugin**.
4. Click **Upload Plugin**.
@@ -13,8 +13,21 @@
6. Activate the plugin.
## Composer Installation
-If you are managing your WordPress project with Composer:
+*Note: If this plugin is not available via WPackagist, use the VCS method below:*
-```bash
-composer require rtcamp/carousel-kit
-```
+1. **Add the repository to your existing `composer.json`:**
+
+ ```json
+ "repositories": [
+ {
+ "type": "vcs",
+ "url": "https://github.com/rtCamp/carousel-kit"
+ }
+ ]
+ ```
+
+2. **Run the installation command (stable release):**
+
+ ```bash
+ composer require rtcamp/carousel-kit:^1.0
+ ```
diff --git a/examples/data/images/logo-placeholder-1.svg b/examples/data/images/logo-placeholder-1.svg
new file mode 100644
index 0000000..83e37d7
--- /dev/null
+++ b/examples/data/images/logo-placeholder-1.svg
@@ -0,0 +1,7 @@
+
diff --git a/examples/data/images/logo-placeholder-2.svg b/examples/data/images/logo-placeholder-2.svg
new file mode 100644
index 0000000..1d31cd7
--- /dev/null
+++ b/examples/data/images/logo-placeholder-2.svg
@@ -0,0 +1,7 @@
+
diff --git a/examples/data/images/logo-placeholder-3.svg b/examples/data/images/logo-placeholder-3.svg
new file mode 100644
index 0000000..d81de9f
--- /dev/null
+++ b/examples/data/images/logo-placeholder-3.svg
@@ -0,0 +1,7 @@
+
diff --git a/examples/data/images/logo-placeholder-4.svg b/examples/data/images/logo-placeholder-4.svg
new file mode 100644
index 0000000..95d7e9d
--- /dev/null
+++ b/examples/data/images/logo-placeholder-4.svg
@@ -0,0 +1,7 @@
+
diff --git a/examples/data/images/logo-placeholder-5.svg b/examples/data/images/logo-placeholder-5.svg
new file mode 100644
index 0000000..3cd9af9
--- /dev/null
+++ b/examples/data/images/logo-placeholder-5.svg
@@ -0,0 +1,7 @@
+
diff --git a/examples/patterns/hero-carousel.php b/examples/patterns/hero-carousel.php
index 6be0d10..d041fef 100644
--- a/examples/patterns/hero-carousel.php
+++ b/examples/patterns/hero-carousel.php
@@ -5,14 +5,24 @@
* Categories: carousel-kit
* Description: A full-width hero carousel with large images and overlaid text
*/
+
+// Exit if accessed directly.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+$pattern_images_url = trailingslashit( CAROUSEL_KIT_URL . '/examples/data/images' );
+$hero_slide_one = $pattern_images_url . 'slide-autoplay-1.webp';
+$hero_slide_two = $pattern_images_url . 'slide-autoplay-2.webp';
+$hero_slide_three = $pattern_images_url . 'slide-autoplay-3.webp';
?>
-
-

+
+
Welcome to Our Site
@@ -34,8 +44,8 @@
-
-

+
+
Build Something Amazing
@@ -50,8 +60,8 @@
-
-

+
+
Join Our Community
diff --git a/examples/patterns/logo-showcase.php b/examples/patterns/logo-showcase.php
index 87de3d5..8aff736 100644
--- a/examples/patterns/logo-showcase.php
+++ b/examples/patterns/logo-showcase.php
@@ -5,6 +5,18 @@
* Categories: carousel-kit
* Description: Display partner or client logos in a continuous carousel
*/
+
+// Exit if accessed directly.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+$pattern_images_url = trailingslashit( CAROUSEL_KIT_URL . '/examples/data/images' );
+$logo_one = $pattern_images_url . 'logo-placeholder-1.svg';
+$logo_two = $pattern_images_url . 'logo-placeholder-2.svg';
+$logo_three = $pattern_images_url . 'logo-placeholder-3.svg';
+$logo_four = $pattern_images_url . 'logo-placeholder-4.svg';
+$logo_five = $pattern_images_url . 'logo-placeholder-5.svg';
?>
@@ -16,35 +28,35 @@
-

+
-

+
-

+
-

+
-

+
diff --git a/examples/patterns/query-loop.php b/examples/patterns/query-loop.php
index 3b82ee5..c780110 100644
--- a/examples/patterns/query-loop.php
+++ b/examples/patterns/query-loop.php
@@ -5,6 +5,11 @@
* Categories: carousel-kit
* Description: A carousel block containing a query loop displaying posts in a grid layout.
*/
+
+// Exit if accessed directly.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
?>
diff --git a/examples/patterns/testimonial-carousel.php b/examples/patterns/testimonial-carousel.php
index 884131c..cba5ae8 100644
--- a/examples/patterns/testimonial-carousel.php
+++ b/examples/patterns/testimonial-carousel.php
@@ -5,6 +5,11 @@
* Categories: carousel-kit
* Description: Customer testimonials with centered alignment and quotes
*/
+
+// Exit if accessed directly.
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
?>
diff --git a/inc/Autoloader.php b/inc/Autoloader.php
new file mode 100644
index 0000000..6890d0e
--- /dev/null
+++ b/inc/Autoloader.php
@@ -0,0 +1,92 @@
+ 'error',
+ 'dismiss' => false,
+ ]
+ );
+ }
+ );
+ }
+ }
+}
diff --git a/inc/Plugin.php b/inc/Plugin.php
index 48196f3..25f975a 100644
--- a/inc/Plugin.php
+++ b/inc/Plugin.php
@@ -173,7 +173,7 @@ private function load_patterns_from_disk(): array {
}
ob_start();
- include $pattern_file;
+ include $pattern_file; // phpcs:ignore WordPressVIPMinimum.Files.IncludingFile.UsingVariable -- $pattern_file is sourced from glob() in a fixed plugin directory (examples/patterns/*.php).
$content = ob_get_clean();
if ( false === $content || '' === trim( $content ) ) {
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..ba0f793
--- /dev/null
+++ b/index.php
@@ -0,0 +1,7 @@
+\n"
+"Language-Team: LANGUAGE
\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"POT-Creation-Date: 2026-03-03T21:59:45+00:00\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"X-Generator: WP-CLI 2.12.0\n"
+"X-Domain: carousel-kit\n"
+
+#. Plugin Name of the plugin
+#: carousel-kit.php
+#: inc/Plugin.php:57
+#: inc/Plugin.php:96
+msgid "Carousel Kit"
+msgstr ""
+
+#. Plugin URI of the plugin
+#: carousel-kit.php
+msgid "https://github.com/rtCamp/carousel-kit"
+msgstr ""
+
+#. Description of the plugin
+#: carousel-kit.php
+msgid "Carousel block using Embla and WordPress Interactivity API."
+msgstr ""
+
+#. Author of the plugin
+#: carousel-kit.php
+msgid "rtCamp"
+msgstr ""
+
+#. Author URI of the plugin
+#: carousel-kit.php
+msgid "https://rtcamp.com"
+msgstr ""
+
+#: inc/Autoloader.php:70
+msgid "Carousel Kit: The Composer autoloader was not found. If you installed the plugin from the GitHub source code, make sure to run `composer install`."
+msgstr ""
+
+#: inc/Plugin.php:97
+msgid "Pre-configured carousel patterns for various use cases."
+msgstr ""
+
+#: build/blocks/carousel/controls/index.js:133
+#: build/blocks/carousel/controls/index.js:208
+msgid "Previous Slide"
+msgstr ""
+
+#: build/blocks/carousel/controls/index.js:143
+#: build/blocks/carousel/controls/index.js:215
+msgid "Next Slide"
+msgstr ""
+
+#. translators: %d: slide number
+#: build/blocks/carousel/dots/index.js:123
+#: build/blocks/carousel/index.js:546
+#, js-format
+msgid "Go to slide %d"
+msgstr ""
+
+#: build/blocks/carousel/index.js:175
+msgid "Carousel Settings"
+msgstr ""
+
+#: build/blocks/carousel/index.js:177
+msgid "Loop"
+msgstr ""
+
+#: build/blocks/carousel/index.js:182
+msgid "Enables infinite scrolling of slides."
+msgstr ""
+
+#: build/blocks/carousel/index.js:184
+msgid "Free Drag"
+msgstr ""
+
+#: build/blocks/carousel/index.js:189
+msgid "Enables momentum scrolling."
+msgstr ""
+
+#: build/blocks/carousel/index.js:191
+msgid "Alignment"
+msgstr ""
+
+#: build/blocks/carousel/index.js:194
+msgid "Start"
+msgstr ""
+
+#: build/blocks/carousel/index.js:197
+msgid "Center"
+msgstr ""
+
+#: build/blocks/carousel/index.js:200
+msgid "End"
+msgstr ""
+
+#: build/blocks/carousel/index.js:207
+msgid "Contain Scroll"
+msgstr ""
+
+#: build/blocks/carousel/index.js:210
+msgid "Trim Snaps"
+msgstr ""
+
+#: build/blocks/carousel/index.js:213
+msgid "Keep Snaps"
+msgstr ""
+
+#: build/blocks/carousel/index.js:216
+msgid "None"
+msgstr ""
+
+#: build/blocks/carousel/index.js:222
+msgid "Prevents excess scrolling at the beginning or end."
+msgstr ""
+
+#: build/blocks/carousel/index.js:224
+msgid "Scroll Auto"
+msgstr ""
+
+#: build/blocks/carousel/index.js:229
+msgid "Scrolls the number of slides currently visible in the viewport."
+msgstr ""
+
+#: build/blocks/carousel/index.js:231
+msgid "Slides to Scroll"
+msgstr ""
+
+#: build/blocks/carousel/index.js:239
+msgid "Direction"
+msgstr ""
+
+#: build/blocks/carousel/index.js:242
+msgid "Left to Right (LTR)"
+msgstr ""
+
+#: build/blocks/carousel/index.js:245
+msgid "Right to Left (RTL)"
+msgstr ""
+
+#: build/blocks/carousel/index.js:251
+msgid "Choose content direction. RTL is typically used for Arabic, Hebrew, and other right-to-left languages."
+msgstr ""
+
+#: build/blocks/carousel/index.js:253
+msgid "Orientation"
+msgstr ""
+
+#: build/blocks/carousel/index.js:256
+msgid "Horizontal"
+msgstr ""
+
+#: build/blocks/carousel/index.js:259
+msgid "Vertical"
+msgstr ""
+
+#: build/blocks/carousel/index.js:266
+msgid "Height"
+msgstr ""
+
+#: build/blocks/carousel/index.js:271
+msgid "Set a fixed height for vertical carousel (e.g., 400px)."
+msgstr ""
+
+#: build/blocks/carousel/index.js:274
+msgid "Autoplay Options"
+msgstr ""
+
+#: build/blocks/carousel/index.js:277
+msgid "Enable Autoplay"
+msgstr ""
+
+#: build/blocks/carousel/index.js:284
+msgid "Delay (ms)"
+msgstr ""
+
+#: build/blocks/carousel/index.js:293
+msgid "Stop on Interaction"
+msgstr ""
+
+#: build/blocks/carousel/index.js:298
+msgid "Stop autoplay when user interacts with carousel."
+msgstr ""
+
+#: build/blocks/carousel/index.js:300
+msgid "Stop on Mouse Enter"
+msgstr ""
+
+#: build/blocks/carousel/index.js:305
+msgid "Stop autoplay when mouse hovers over carousel."
+msgstr ""
+
+#: build/blocks/carousel/index.js:311
+msgid "ARIA Label"
+msgstr ""
+
+#: build/blocks/carousel/index.js:316
+msgid "Provide a descriptive label for screen readers (e.g., 'Featured Products')."
+msgstr ""
+
+#: build/blocks/carousel/index.js:319
+msgid "Use this to allow only certain blocks in the slide. If empty, all blocks will be allowed."
+msgstr ""
+
+#: build/blocks/carousel/index.js:322
+msgid "Allowed Slide Blocks"
+msgstr ""
+
+#: build/blocks/carousel/index.js:335
+msgid "Layout"
+msgstr ""
+
+#: build/blocks/carousel/index.js:337
+msgid "Slide Gap (px)"
+msgstr ""
+
+#: build/blocks/carousel/index.js:357
+msgid "Carousel"
+msgstr ""
+
+#: build/blocks/carousel/index.js:358
+msgid "How many slides would you like to start with?"
+msgstr ""
+
+#: build/blocks/carousel/index.js:366
+msgid "1 Slide"
+msgstr ""
+
+#: build/blocks/carousel/index.js:366
+msgid "Slides"
+msgstr ""
+
+#: build/blocks/carousel/index.js:372
+msgid "Skip"
+msgstr ""
+
+#: build/blocks/carousel/index.js:383
+#: build/blocks/carousel/viewport/index.js:1828
+#: build/blocks/carousel/viewport/index.js:1929
+#: build/blocks/carousel/viewport/index.js:1939
+msgid "Add Slide"
+msgstr ""
+
+#: build/blocks/carousel/index.js:467
+msgid "Default (100%)"
+msgstr ""
+
+#: build/blocks/carousel/index.js:471
+msgid "2 Columns (50%)"
+msgstr ""
+
+#: build/blocks/carousel/index.js:474
+msgid "3 Columns (33%)"
+msgstr ""
+
+#: build/blocks/carousel/index.js:477
+msgid "4 Columns (25%)"
+msgstr ""
+
+#: build/blocks/carousel/viewport/index.js:1934
+msgid "Viewport Actions"
+msgstr ""
+
+#: build/blocks/carousel/block.json
+#: src/blocks/carousel/block.json
+msgctxt "block title"
+msgid "Carousel"
+msgstr ""
+
+#: build/blocks/carousel/block.json
+#: src/blocks/carousel/block.json
+msgctxt "block description"
+msgid "Carousel container using Embla and Interactivity API."
+msgstr ""
+
+#: build/blocks/carousel/controls/block.json
+#: src/blocks/carousel/controls/block.json
+msgctxt "block title"
+msgid "Carousel Controls"
+msgstr ""
+
+#: build/blocks/carousel/controls/block.json
+#: src/blocks/carousel/controls/block.json
+msgctxt "block description"
+msgid "Navigation buttons for the carousel."
+msgstr ""
+
+#: build/blocks/carousel/dots/block.json
+#: src/blocks/carousel/dots/block.json
+msgctxt "block title"
+msgid "Carousel Dots"
+msgstr ""
+
+#: build/blocks/carousel/dots/block.json
+#: src/blocks/carousel/dots/block.json
+msgctxt "block description"
+msgid "Navigation dots for the carousel."
+msgstr ""
+
+#: build/blocks/carousel/slide/block.json
+#: src/blocks/carousel/slide/block.json
+msgctxt "block title"
+msgid "Carousel Slide"
+msgstr ""
+
+#: build/blocks/carousel/slide/block.json
+#: src/blocks/carousel/slide/block.json
+msgctxt "block description"
+msgid "A single slide within the carousel."
+msgstr ""
+
+#: build/blocks/carousel/viewport/block.json
+#: src/blocks/carousel/viewport/block.json
+msgctxt "block title"
+msgid "Carousel Viewport"
+msgstr ""
+
+#: build/blocks/carousel/viewport/block.json
+#: src/blocks/carousel/viewport/block.json
+msgctxt "block description"
+msgid "Viewport container for carousel slides."
+msgstr ""
diff --git a/package-lock.json b/package-lock.json
index 36e1bdb..8ad7308 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,10 @@
{
"name": "carousel-kit",
- "version": "1.0.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "carousel-kit",
- "version": "1.0.3",
"dependencies": {
"@wordpress/babel-preset-default": "8.38.0",
"@wordpress/block-editor": "^15.10.0",
@@ -34,8 +32,7 @@
"@types/react-dom": "^18.3.7",
"@types/wordpress__block-editor": "15.0.0",
"@types/wordpress__blocks": "12.5.18",
- "@wordpress/scripts": "^31.2.0",
- "conventional-changelog-cli": "5.0.0",
+ "@wordpress/scripts": "^31.5.0",
"eslint-plugin-eslint-comments": "3.2.0",
"husky": "9.1.7",
"typescript": "^5.9.3"
@@ -632,6 +629,30 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-syntax-import-assertions": {
"version": "7.28.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz",
@@ -2172,9 +2193,9 @@
}
},
"node_modules/@commitlint/config-validator/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2523,45 +2544,6 @@
"node": ">=v18"
}
},
- "node_modules/@conventional-changelog/git-client": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz",
- "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/semver": "^7.5.5",
- "semver": "^7.5.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "conventional-commits-filter": "^5.0.0",
- "conventional-commits-parser": "^6.0.0"
- },
- "peerDependenciesMeta": {
- "conventional-commits-filter": {
- "optional": true
- },
- "conventional-commits-parser": {
- "optional": true
- }
- }
- },
- "node_modules/@conventional-changelog/git-client/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@csstools/color-helpers": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
@@ -3035,17 +3017,6 @@
"dev": true,
"license": "Python-2.0"
},
- "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
"node_modules/@eslint/eslintrc/node_modules/js-yaml": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
@@ -3059,19 +3030,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/@eslint/eslintrc/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/@eslint/js": {
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
@@ -3246,30 +3204,6 @@
"node": ">=10.10.0"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -3292,16 +3226,6 @@
"dev": true,
"license": "BSD-3-Clause"
},
- "node_modules/@hutson/parse-repository-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz",
- "integrity": "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10.13.0"
- }
- },
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -3790,9 +3714,9 @@
}
},
"node_modules/@jest/reporters/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -4730,9 +4654,9 @@
}
},
"node_modules/@opentelemetry/instrumentation-http/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -4974,9 +4898,9 @@
}
},
"node_modules/@opentelemetry/instrumentation/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -5052,9 +4976,9 @@
}
},
"node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.39.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz",
- "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==",
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz",
+ "integrity": "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -5585,14 +5509,14 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.57.0",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz",
- "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==",
+ "version": "1.58.2",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz",
+ "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==",
"dev": true,
"license": "Apache-2.0",
"peer": true,
"dependencies": {
- "playwright": "1.57.0"
+ "playwright": "1.58.2"
},
"bin": {
"playwright": "cli.js"
@@ -6860,16 +6784,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@trysound/sax": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
- "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10.13.0"
- }
- },
"node_modules/@tybys/wasm-util": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
@@ -7927,17 +7841,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
- "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.15.0.tgz",
+ "integrity": "sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.5.1",
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/type-utils": "6.21.0",
- "@typescript-eslint/utils": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
+ "@typescript-eslint/scope-manager": "6.15.0",
+ "@typescript-eslint/type-utils": "6.15.0",
+ "@typescript-eslint/utils": "6.15.0",
+ "@typescript-eslint/visitor-keys": "6.15.0",
"debug": "^4.3.4",
"graphemer": "^1.4.0",
"ignore": "^5.2.4",
@@ -7963,9 +7877,9 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -7976,16 +7890,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
- "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz",
+ "integrity": "sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
+ "@typescript-eslint/scope-manager": "6.15.0",
+ "@typescript-eslint/types": "6.15.0",
+ "@typescript-eslint/typescript-estree": "6.15.0",
+ "@typescript-eslint/visitor-keys": "6.15.0",
"debug": "^4.3.4"
},
"engines": {
@@ -8005,14 +7919,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
- "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz",
+ "integrity": "sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0"
+ "@typescript-eslint/types": "6.15.0",
+ "@typescript-eslint/visitor-keys": "6.15.0"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
@@ -8023,14 +7937,14 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
- "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.15.0.tgz",
+ "integrity": "sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "6.21.0",
- "@typescript-eslint/utils": "6.21.0",
+ "@typescript-eslint/typescript-estree": "6.15.0",
+ "@typescript-eslint/utils": "6.15.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.0.1"
},
@@ -8051,9 +7965,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
- "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.15.0.tgz",
+ "integrity": "sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8065,18 +7979,17 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
- "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz",
+ "integrity": "sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
+ "@typescript-eslint/types": "6.15.0",
+ "@typescript-eslint/visitor-keys": "6.15.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
- "minimatch": "9.0.3",
"semver": "^7.5.4",
"ts-api-utils": "^1.0.1"
},
@@ -8094,9 +8007,9 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -8107,18 +8020,18 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
- "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.15.0.tgz",
+ "integrity": "sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@types/json-schema": "^7.0.12",
"@types/semver": "^7.5.0",
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.0",
+ "@typescript-eslint/scope-manager": "6.15.0",
+ "@typescript-eslint/types": "6.15.0",
+ "@typescript-eslint/typescript-estree": "6.15.0",
"semver": "^7.5.4"
},
"engines": {
@@ -8133,9 +8046,9 @@
}
},
"node_modules/@typescript-eslint/utils/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -8146,13 +8059,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
- "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz",
+ "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/types": "6.15.0",
"eslint-visitor-keys": "^3.4.1"
},
"engines": {
@@ -8870,30 +8783,6 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@wordpress/babel-preset-default/node_modules/@babel/preset-env/node_modules/@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@wordpress/babel-preset-default/node_modules/@babel/preset-env/node_modules/@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
"node_modules/@wordpress/babel-preset-default/node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": {
"version": "0.10.6",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
@@ -8927,9 +8816,9 @@
}
},
"node_modules/@wordpress/base-styles": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-6.14.0.tgz",
- "integrity": "sha512-0NoWb5+gVGUMZ8RiAE4g4dJ08ZdSMrWdnt/fp//BclezTdOLepZPzZ9O6nDWLVdlNgnYLhPwK/t5jxOow5WRoA==",
+ "version": "6.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-6.16.0.tgz",
+ "integrity": "sha512-g8eZCTULM9rdQMTYfp3U+bHjT6wTtyuo8BFE2PCwJmH60Lp6P4qjnaez1PDW2M3yujCPwDdQBIR8tPXrTAlC/A==",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -9144,9 +9033,9 @@
}
},
"node_modules/@wordpress/browserslist-config": {
- "version": "6.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.38.0.tgz",
- "integrity": "sha512-cLm8mg7jHdajpkuC0ohjy1/DWB7X/mrW8N5spA0ukKfj+CbJi7+PVFeeEPCjDLEybnlqrVCJ8VaLaxde+xU3UA==",
+ "version": "6.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.40.0.tgz",
+ "integrity": "sha512-aX44MD4Kcr4LZT1YWa3VkMUUJjNfAgt7UECs/qrNGM8tC3l4/2Z4zRkJfpK3AoaXusb1J8+r5ZXWJWhxYK1JMQ==",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -9502,9 +9391,9 @@
}
},
"node_modules/@wordpress/dependency-extraction-webpack-plugin": {
- "version": "6.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-6.38.0.tgz",
- "integrity": "sha512-N/wjZ7Ne5D3ASXgEqKhLeAsbYPUtmSAXmyd31dMChIP6HnN9kuN+iyrxNR3COg2VoW7K9VAhwTzEEGQrOQv/rw==",
+ "version": "6.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-6.40.0.tgz",
+ "integrity": "sha512-C6QZUieZoOEeZqT265EGIn95vIA1Nt6BPCOi1JyuJQ2hxOgk/cz4Vj7a31zJzCu/c1BKN3R6n78lB6nAuyZrVQ==",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -9562,9 +9451,9 @@
}
},
"node_modules/@wordpress/e2e-test-utils-playwright": {
- "version": "1.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.38.0.tgz",
- "integrity": "sha512-/3Qo6/N5BtCbQJJShy3pY5xr68OkMctouYcz1mvL8Q8tMO1fdiZTlJvU9bSMwdM1G1NEbE8pa/9q2F1Va/2S2A==",
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.40.0.tgz",
+ "integrity": "sha512-7EMx/5R0l9mlR4s01I06x8bw7qq30VlU98T/tvYJa+ycFQK3oetkoPyiNfki2Y2SILQGjI3Mu4MSV1NPCa/mEw==",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -9603,9 +9492,9 @@
}
},
"node_modules/@wordpress/escape-html": {
- "version": "3.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.38.0.tgz",
- "integrity": "sha512-LItqIdFnn/JAVEzTtvDZGJfsdmzeIE4ryMjovHkJhRElzcQWKHuq806DMprL40NcvJbdn0YfJZSv+aeP+9Ah3g==",
+ "version": "3.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.40.0.tgz",
+ "integrity": "sha512-DD6xWVbnw4fGGgO6DFDTJiLj52om0OG4cYHLz7ZhuipmOlEUGljPYOcrj8uxtlh5EFrqHCIPkOya+qQXUHUSBw==",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -9613,18 +9502,18 @@
}
},
"node_modules/@wordpress/eslint-plugin": {
- "version": "24.0.0",
- "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-24.0.0.tgz",
- "integrity": "sha512-FXf427hQNXymMxk+qvzejXLEnnn64aGNHBEDMUYpt4MJx98+Upo2uYG0JGWm5y/Aqm+rBlGgdyNsQjjSB+Q6pQ==",
+ "version": "24.2.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-24.2.0.tgz",
+ "integrity": "sha512-FBVWV+wZ1vN6fpSZVI8gMOJ8M1q69Lp1jMUzbH46lE+ICKnQDUeX6FkN/dZiG6rOSbHau+qEGbuPwTDe2D3quQ==",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/eslint-parser": "7.25.7",
"@typescript-eslint/eslint-plugin": "^6.4.1",
"@typescript-eslint/parser": "^6.4.1",
- "@wordpress/babel-preset-default": "^8.38.0",
- "@wordpress/prettier-config": "^4.38.0",
- "@wordpress/theme": "^0.5.0",
+ "@wordpress/babel-preset-default": "^8.40.0",
+ "@wordpress/prettier-config": "^4.40.0",
+ "@wordpress/theme": "^0.7.0",
"cosmiconfig": "^7.0.0",
"eslint-config-prettier": "^8.3.0",
"eslint-import-resolver-typescript": "^4.4.4",
@@ -9658,109 +9547,348 @@
}
}
},
- "node_modules/@wordpress/eslint-plugin/node_modules/cosmiconfig": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "node_modules/@wordpress/eslint-plugin/node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
+ "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.2.1",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@wordpress/global-styles-engine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@wordpress/global-styles-engine/-/global-styles-engine-1.5.0.tgz",
- "integrity": "sha512-3d0NHFgGGrHtkra1Qh5xjc8BQNFPvN9v2nCt6powxQoysE/YfyNuqsaHRqaeMdatj8CY7s25umB5SRsI+WAVOg==",
- "license": "GPL-2.0-or-later",
- "dependencies": {
- "@wordpress/blocks": "^15.11.0",
- "@wordpress/data": "^10.38.0",
- "@wordpress/i18n": "^6.11.0",
- "@wordpress/style-engine": "^2.38.0",
- "colord": "^2.9.2",
- "deepmerge": "^4.3.0",
- "fast-deep-equal": "^3.1.3",
- "is-plain-object": "^5.0.0",
- "memize": "^2.1.0"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": ">=18.12.0",
- "npm": ">=8.19.2"
- }
- },
- "node_modules/@wordpress/hooks": {
- "version": "4.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.38.0.tgz",
- "integrity": "sha512-nrLo2semyTID4yIlu9/DSKVM9v61Mgrkyr+MNj7LgzlD3PuGjYNzXVh5+ngfgPoKVdhV3kzFhda+1PZ8SK8cYg==",
- "license": "GPL-2.0-or-later",
- "engines": {
- "node": ">=18.12.0",
- "npm": ">=8.19.2"
- }
- },
- "node_modules/@wordpress/html-entities": {
- "version": "4.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.38.0.tgz",
- "integrity": "sha512-xe9OHCLft2jsxDhFPsPpzTTh4g/I5kXufDOj+og6+dC3Ut7ZmNjimm41rY9S+wfNYXJDonTiW51xSFq1NSl9yw==",
- "license": "GPL-2.0-or-later",
- "engines": {
- "node": ">=18.12.0",
- "npm": ">=8.19.2"
- }
- },
- "node_modules/@wordpress/i18n": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-6.11.0.tgz",
- "integrity": "sha512-JOJk1LtKACxnQ8MQEJAOSdJxUaYupxXzk3CPGWRzhxPHQ9xWH8LS0NqGppUebcah4s4uu26vqACiZvTt93N4eA==",
- "license": "GPL-2.0-or-later",
- "dependencies": {
- "@tannin/sprintf": "^1.3.2",
- "@wordpress/hooks": "^4.38.0",
- "gettext-parser": "^1.3.1",
- "memize": "^2.1.0",
- "tannin": "^1.2.0"
- },
- "bin": {
- "pot-to-php": "tools/pot-to-php.js"
+ "node": ">=6.9.0"
},
- "engines": {
- "node": ">=18.12.0",
- "npm": ">=8.19.2"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@wordpress/icons": {
- "version": "11.5.0",
- "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-11.5.0.tgz",
- "integrity": "sha512-dVsAARE7pN5P2bRbREYMJB5F5bxu6gTxNQZXcFA6PAPTn6CXJfEtrSUqNDzLa0AwMmrHszy9foIbdHvlSYleHQ==",
- "license": "GPL-2.0-or-later",
+ "node_modules/@wordpress/eslint-plugin/node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz",
+ "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@wordpress/element": "^6.38.0",
- "@wordpress/primitives": "^4.38.0"
+ "@babel/helper-annotate-as-pure": "^7.25.7",
+ "@babel/helper-module-imports": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/plugin-syntax-jsx": "^7.25.7",
+ "@babel/types": "^7.25.7"
},
"engines": {
- "node": ">=18.12.0",
- "npm": ">=8.19.2"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "react": "^18.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@wordpress/image-cropper": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@wordpress/image-cropper/-/image-cropper-1.2.0.tgz",
- "integrity": "sha512-bUQYIQzXgXTCP58DTq/f8H/XCc/zVCaRMZGf3yYejNzQGX2gPx0w5tALPRIdkWlyBax/XZTdIUC1OT1R9SGlUQ==",
- "license": "GPL-2.0-or-later",
- "dependencies": {
- "@wordpress/components": "^32.0.0",
- "@wordpress/element": "^6.38.0",
+ "node_modules/@wordpress/eslint-plugin/node_modules/@babel/preset-env": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.7.tgz",
+ "integrity": "sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.7",
+ "@babel/helper-compilation-targets": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-validator-option": "^7.25.7",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.25.7",
+ "@babel/plugin-syntax-import-attributes": "^7.25.7",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.25.7",
+ "@babel/plugin-transform-async-generator-functions": "^7.25.7",
+ "@babel/plugin-transform-async-to-generator": "^7.25.7",
+ "@babel/plugin-transform-block-scoped-functions": "^7.25.7",
+ "@babel/plugin-transform-block-scoping": "^7.25.7",
+ "@babel/plugin-transform-class-properties": "^7.25.7",
+ "@babel/plugin-transform-class-static-block": "^7.25.7",
+ "@babel/plugin-transform-classes": "^7.25.7",
+ "@babel/plugin-transform-computed-properties": "^7.25.7",
+ "@babel/plugin-transform-destructuring": "^7.25.7",
+ "@babel/plugin-transform-dotall-regex": "^7.25.7",
+ "@babel/plugin-transform-duplicate-keys": "^7.25.7",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7",
+ "@babel/plugin-transform-dynamic-import": "^7.25.7",
+ "@babel/plugin-transform-exponentiation-operator": "^7.25.7",
+ "@babel/plugin-transform-export-namespace-from": "^7.25.7",
+ "@babel/plugin-transform-for-of": "^7.25.7",
+ "@babel/plugin-transform-function-name": "^7.25.7",
+ "@babel/plugin-transform-json-strings": "^7.25.7",
+ "@babel/plugin-transform-literals": "^7.25.7",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.25.7",
+ "@babel/plugin-transform-member-expression-literals": "^7.25.7",
+ "@babel/plugin-transform-modules-amd": "^7.25.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.7",
+ "@babel/plugin-transform-modules-systemjs": "^7.25.7",
+ "@babel/plugin-transform-modules-umd": "^7.25.7",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7",
+ "@babel/plugin-transform-new-target": "^7.25.7",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.7",
+ "@babel/plugin-transform-numeric-separator": "^7.25.7",
+ "@babel/plugin-transform-object-rest-spread": "^7.25.7",
+ "@babel/plugin-transform-object-super": "^7.25.7",
+ "@babel/plugin-transform-optional-catch-binding": "^7.25.7",
+ "@babel/plugin-transform-optional-chaining": "^7.25.7",
+ "@babel/plugin-transform-parameters": "^7.25.7",
+ "@babel/plugin-transform-private-methods": "^7.25.7",
+ "@babel/plugin-transform-private-property-in-object": "^7.25.7",
+ "@babel/plugin-transform-property-literals": "^7.25.7",
+ "@babel/plugin-transform-regenerator": "^7.25.7",
+ "@babel/plugin-transform-reserved-words": "^7.25.7",
+ "@babel/plugin-transform-shorthand-properties": "^7.25.7",
+ "@babel/plugin-transform-spread": "^7.25.7",
+ "@babel/plugin-transform-sticky-regex": "^7.25.7",
+ "@babel/plugin-transform-template-literals": "^7.25.7",
+ "@babel/plugin-transform-typeof-symbol": "^7.25.7",
+ "@babel/plugin-transform-unicode-escapes": "^7.25.7",
+ "@babel/plugin-transform-unicode-property-regex": "^7.25.7",
+ "@babel/plugin-transform-unicode-regex": "^7.25.7",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.25.7",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.38.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@wordpress/eslint-plugin/node_modules/@babel/preset-typescript": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz",
+ "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-validator-option": "^7.25.7",
+ "@babel/plugin-syntax-jsx": "^7.25.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.7",
+ "@babel/plugin-transform-typescript": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@wordpress/eslint-plugin/node_modules/@wordpress/babel-preset-default": {
+ "version": "8.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.40.0.tgz",
+ "integrity": "sha512-UzSwDaxsMarnlfFUmEWW2qvkJy4JupW49uH0JztFobCamQ5QCL71M75zIspIXffiZVjQMBWruR7/+5QTJklewA==",
+ "dev": true,
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@babel/core": "7.25.7",
+ "@babel/plugin-syntax-import-attributes": "7.26.0",
+ "@babel/plugin-transform-react-jsx": "7.25.7",
+ "@babel/plugin-transform-runtime": "7.25.7",
+ "@babel/preset-env": "7.25.7",
+ "@babel/preset-typescript": "7.25.7",
+ "@wordpress/browserslist-config": "^6.40.0",
+ "@wordpress/warning": "^3.40.0",
+ "browserslist": "^4.21.10",
+ "core-js": "^3.31.0",
+ "react": "^18.3.0"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ }
+ },
+ "node_modules/@wordpress/eslint-plugin/node_modules/@wordpress/element": {
+ "version": "6.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.40.0.tgz",
+ "integrity": "sha512-OhU8B2xEGg7c41rh/VRiJLOz6TnM/r5r8sraAg5ISc2bF7s2oAFqLwvlR0/U6ervyYwbK644osWZGQxFyL3huA==",
+ "dev": true,
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@types/react": "^18.3.27",
+ "@types/react-dom": "^18.3.1",
+ "@wordpress/escape-html": "^3.40.0",
+ "change-case": "^4.1.2",
+ "is-plain-object": "^5.0.0",
+ "react": "^18.3.0",
+ "react-dom": "^18.3.0"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ }
+ },
+ "node_modules/@wordpress/eslint-plugin/node_modules/@wordpress/theme": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/theme/-/theme-0.7.0.tgz",
+ "integrity": "sha512-ULwLCSKYraIsv83bVH+Hm5pGFen6/0/8xOXQwxMdxeU+8kSm0cTKlpQPNvJGCmAeQb2OgFcowB/8wrUdyqW8UQ==",
+ "dev": true,
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@wordpress/element": "^6.40.0",
+ "@wordpress/private-apis": "^1.40.0",
+ "colorjs.io": "^0.6.0",
+ "memize": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0",
+ "stylelint": "^16.8.2"
+ },
+ "peerDependenciesMeta": {
+ "stylelint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@wordpress/eslint-plugin/node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@wordpress/eslint-plugin/node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@wordpress/global-styles-engine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/global-styles-engine/-/global-styles-engine-1.5.0.tgz",
+ "integrity": "sha512-3d0NHFgGGrHtkra1Qh5xjc8BQNFPvN9v2nCt6powxQoysE/YfyNuqsaHRqaeMdatj8CY7s25umB5SRsI+WAVOg==",
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@wordpress/blocks": "^15.11.0",
+ "@wordpress/data": "^10.38.0",
+ "@wordpress/i18n": "^6.11.0",
+ "@wordpress/style-engine": "^2.38.0",
+ "colord": "^2.9.2",
+ "deepmerge": "^4.3.0",
+ "fast-deep-equal": "^3.1.3",
+ "is-plain-object": "^5.0.0",
+ "memize": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ }
+ },
+ "node_modules/@wordpress/hooks": {
+ "version": "4.38.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.38.0.tgz",
+ "integrity": "sha512-nrLo2semyTID4yIlu9/DSKVM9v61Mgrkyr+MNj7LgzlD3PuGjYNzXVh5+ngfgPoKVdhV3kzFhda+1PZ8SK8cYg==",
+ "license": "GPL-2.0-or-later",
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ }
+ },
+ "node_modules/@wordpress/html-entities": {
+ "version": "4.38.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.38.0.tgz",
+ "integrity": "sha512-xe9OHCLft2jsxDhFPsPpzTTh4g/I5kXufDOj+og6+dC3Ut7ZmNjimm41rY9S+wfNYXJDonTiW51xSFq1NSl9yw==",
+ "license": "GPL-2.0-or-later",
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ }
+ },
+ "node_modules/@wordpress/i18n": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-6.11.0.tgz",
+ "integrity": "sha512-JOJk1LtKACxnQ8MQEJAOSdJxUaYupxXzk3CPGWRzhxPHQ9xWH8LS0NqGppUebcah4s4uu26vqACiZvTt93N4eA==",
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@tannin/sprintf": "^1.3.2",
+ "@wordpress/hooks": "^4.38.0",
+ "gettext-parser": "^1.3.1",
+ "memize": "^2.1.0",
+ "tannin": "^1.2.0"
+ },
+ "bin": {
+ "pot-to-php": "tools/pot-to-php.js"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ }
+ },
+ "node_modules/@wordpress/icons": {
+ "version": "11.5.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-11.5.0.tgz",
+ "integrity": "sha512-dVsAARE7pN5P2bRbREYMJB5F5bxu6gTxNQZXcFA6PAPTn6CXJfEtrSUqNDzLa0AwMmrHszy9foIbdHvlSYleHQ==",
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@wordpress/element": "^6.38.0",
+ "@wordpress/primitives": "^4.38.0"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0"
+ }
+ },
+ "node_modules/@wordpress/image-cropper": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/image-cropper/-/image-cropper-1.2.0.tgz",
+ "integrity": "sha512-bUQYIQzXgXTCP58DTq/f8H/XCc/zVCaRMZGf3yYejNzQGX2gPx0w5tALPRIdkWlyBax/XZTdIUC1OT1R9SGlUQ==",
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@wordpress/components": "^32.0.0",
+ "@wordpress/element": "^6.38.0",
"@wordpress/i18n": "^6.11.0",
"clsx": "^2.1.1",
"dequal": "^2.0.3",
@@ -9864,9 +9992,9 @@
}
},
"node_modules/@wordpress/jest-console": {
- "version": "8.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-8.38.0.tgz",
- "integrity": "sha512-pRvWbxr/PHs2IsjsVvb9kBgqcxOcPnTN/baOmmEJFHVtOa5hp/ze6zbz/c18RCmrxWt5doRwHpfH84M/yivo2A==",
+ "version": "8.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-8.40.0.tgz",
+ "integrity": "sha512-H7j9Afosm0TvppBjQmXxErUBdWIT0u1mX+toH1liafp0gpxzowYMbv1MAASgAEzPrbL/U0P68GIW3PQXQFO4xg==",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -9882,13 +10010,13 @@
}
},
"node_modules/@wordpress/jest-preset-default": {
- "version": "12.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-12.38.0.tgz",
- "integrity": "sha512-rAEYTMbpmfhYA5p3HmkhsTXM3rHq+4mdmt8xS5izXn5SzZdsHs+oa1Ej9COMi6xThpMN5i0+N+vz3HDzAMLCsg==",
+ "version": "12.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-12.40.0.tgz",
+ "integrity": "sha512-JkH6Hsesy6cyH+encol7jvQyMtFQYLZyb/VpUrZAfUfymOh7VtSqLSGVyxvw64OLcWKE+cE/xkApvvGFBHzG4w==",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
- "@wordpress/jest-console": "^8.38.0",
+ "@wordpress/jest-console": "^8.40.0",
"babel-jest": "29.7.0"
},
"engines": {
@@ -9949,9 +10077,9 @@
}
},
"node_modules/@wordpress/npm-package-json-lint-config": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-5.38.0.tgz",
- "integrity": "sha512-/8oarSArKiN2ZUTCexn27YQLPXpxmNAYQEzgubmALtR5wGWnMwpCw9bt/+/cG6t6o1YaAN8ZOO3gattQYssYrA==",
+ "version": "5.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-5.40.0.tgz",
+ "integrity": "sha512-fxIya56Bf+LTnDR07RfAM5VfITl7uQm9kJkY4nUYNRC6xPj5cCLLsIh0x5UWXmYQxTTaSreMKYxDPe4UN7tATA==",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -9963,13 +10091,13 @@
}
},
"node_modules/@wordpress/postcss-plugins-preset": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-5.38.0.tgz",
- "integrity": "sha512-I8QFM8pPv04VTvakhIqRL5CU8s6Irf7onixBjXD95+ae3kmVJY548mp7cBU5MV9n92IZbGbwLjhaOIegS3QxfQ==",
+ "version": "5.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-5.40.0.tgz",
+ "integrity": "sha512-t8zryWpd6sLUVWbFLkRW9637Nmvx4Odnyu9jQCV5yfLXRubD37x/PVRVx7tUw9SpbbrPzKB4DqpNOF+dTHaICg==",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
- "@wordpress/base-styles": "^6.14.0",
+ "@wordpress/base-styles": "^6.16.0",
"autoprefixer": "^10.4.20",
"postcss-import": "^16.1.1"
},
@@ -10073,9 +10201,9 @@
}
},
"node_modules/@wordpress/prettier-config": {
- "version": "4.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-4.38.0.tgz",
- "integrity": "sha512-kWGpmmkIvvObtteeOBkZM3GiTOL8tBkccBJwIWV7kBIC71HrBERnvQZKga84QW5thdt+S0ccjBZk41saEGXavw==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-4.40.0.tgz",
+ "integrity": "sha512-6JqPLZtoO1OnZJMVrWy+wwoCrJKD1VZnfNMLvNhhRoY7VypBXk189iyWj26JbOhBfFqIcVQNLNMTt9uTZDNujA==",
"dev": true,
"license": "GPL-2.0-or-later",
"engines": {
@@ -10117,9 +10245,9 @@
}
},
"node_modules/@wordpress/private-apis": {
- "version": "1.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.38.0.tgz",
- "integrity": "sha512-6Hj9x3xJb64Xu/p2M4XA9fGeY2omTly2bb+Kayaa55eEZi6iXlcIhvv7UAdKhJ2PF9hfuENccgqhG7OrvaEEJg==",
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.40.0.tgz",
+ "integrity": "sha512-68cwZKVq8Xy8GBzKoDRuV4b3pQ4nJFItY689HXp+poc0XXrnAeC4ZhjeSgS1qGRpFo6RVvLjjcaZsN2OrSSMvQ==",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -10171,25 +10299,25 @@
}
},
"node_modules/@wordpress/scripts": {
- "version": "31.3.0",
- "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-31.3.0.tgz",
- "integrity": "sha512-gZiw7y3/tNbzxcW4IXBszyTzP7KkZivDGAvL01sJ1bcVTTuD4LyQ4MXhesCUYEYXPkSRNQh1Q4oAXk1FH3DlSQ==",
+ "version": "31.5.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-31.5.0.tgz",
+ "integrity": "sha512-7OS5bpHtnuagG8k9q9BdilHjhQ0MLhY0ypDgnRom5WlgPBshM/SUaF9bQLDnSDeasiD/bIgaDmoxWkfVZ4qSPQ==",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
"@babel/core": "7.25.7",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
"@svgr/webpack": "^8.0.1",
- "@wordpress/babel-preset-default": "^8.38.0",
- "@wordpress/browserslist-config": "^6.38.0",
- "@wordpress/dependency-extraction-webpack-plugin": "^6.38.0",
- "@wordpress/e2e-test-utils-playwright": "^1.38.0",
- "@wordpress/eslint-plugin": "^24.0.0",
- "@wordpress/jest-preset-default": "^12.38.0",
- "@wordpress/npm-package-json-lint-config": "^5.38.0",
- "@wordpress/postcss-plugins-preset": "^5.38.0",
- "@wordpress/prettier-config": "^4.38.0",
- "@wordpress/stylelint-config": "^23.30.0",
+ "@wordpress/babel-preset-default": "^8.40.0",
+ "@wordpress/browserslist-config": "^6.40.0",
+ "@wordpress/dependency-extraction-webpack-plugin": "^6.40.0",
+ "@wordpress/e2e-test-utils-playwright": "^1.40.0",
+ "@wordpress/eslint-plugin": "^24.2.0",
+ "@wordpress/jest-preset-default": "^12.40.0",
+ "@wordpress/npm-package-json-lint-config": "^5.40.0",
+ "@wordpress/postcss-plugins-preset": "^5.40.0",
+ "@wordpress/prettier-config": "^4.40.0",
+ "@wordpress/stylelint-config": "^23.32.0",
"adm-zip": "^0.5.9",
"babel-jest": "29.7.0",
"babel-loader": "9.2.1",
@@ -10245,7 +10373,7 @@
"npm": ">=8.19.2"
},
"peerDependencies": {
- "@playwright/test": "^1.57.0",
+ "@playwright/test": "^1.58.2",
"@wordpress/env": "^10.0.0",
"react": "^18.0.0",
"react-dom": "^18.0.0"
@@ -10256,6 +10384,198 @@
}
}
},
+ "node_modules/@wordpress/scripts/node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
+ "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@wordpress/scripts/node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz",
+ "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.7",
+ "@babel/helper-module-imports": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/plugin-syntax-jsx": "^7.25.7",
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@wordpress/scripts/node_modules/@babel/preset-env": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.7.tgz",
+ "integrity": "sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.7",
+ "@babel/helper-compilation-targets": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-validator-option": "^7.25.7",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.25.7",
+ "@babel/plugin-syntax-import-attributes": "^7.25.7",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.25.7",
+ "@babel/plugin-transform-async-generator-functions": "^7.25.7",
+ "@babel/plugin-transform-async-to-generator": "^7.25.7",
+ "@babel/plugin-transform-block-scoped-functions": "^7.25.7",
+ "@babel/plugin-transform-block-scoping": "^7.25.7",
+ "@babel/plugin-transform-class-properties": "^7.25.7",
+ "@babel/plugin-transform-class-static-block": "^7.25.7",
+ "@babel/plugin-transform-classes": "^7.25.7",
+ "@babel/plugin-transform-computed-properties": "^7.25.7",
+ "@babel/plugin-transform-destructuring": "^7.25.7",
+ "@babel/plugin-transform-dotall-regex": "^7.25.7",
+ "@babel/plugin-transform-duplicate-keys": "^7.25.7",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7",
+ "@babel/plugin-transform-dynamic-import": "^7.25.7",
+ "@babel/plugin-transform-exponentiation-operator": "^7.25.7",
+ "@babel/plugin-transform-export-namespace-from": "^7.25.7",
+ "@babel/plugin-transform-for-of": "^7.25.7",
+ "@babel/plugin-transform-function-name": "^7.25.7",
+ "@babel/plugin-transform-json-strings": "^7.25.7",
+ "@babel/plugin-transform-literals": "^7.25.7",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.25.7",
+ "@babel/plugin-transform-member-expression-literals": "^7.25.7",
+ "@babel/plugin-transform-modules-amd": "^7.25.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.7",
+ "@babel/plugin-transform-modules-systemjs": "^7.25.7",
+ "@babel/plugin-transform-modules-umd": "^7.25.7",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7",
+ "@babel/plugin-transform-new-target": "^7.25.7",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.7",
+ "@babel/plugin-transform-numeric-separator": "^7.25.7",
+ "@babel/plugin-transform-object-rest-spread": "^7.25.7",
+ "@babel/plugin-transform-object-super": "^7.25.7",
+ "@babel/plugin-transform-optional-catch-binding": "^7.25.7",
+ "@babel/plugin-transform-optional-chaining": "^7.25.7",
+ "@babel/plugin-transform-parameters": "^7.25.7",
+ "@babel/plugin-transform-private-methods": "^7.25.7",
+ "@babel/plugin-transform-private-property-in-object": "^7.25.7",
+ "@babel/plugin-transform-property-literals": "^7.25.7",
+ "@babel/plugin-transform-regenerator": "^7.25.7",
+ "@babel/plugin-transform-reserved-words": "^7.25.7",
+ "@babel/plugin-transform-shorthand-properties": "^7.25.7",
+ "@babel/plugin-transform-spread": "^7.25.7",
+ "@babel/plugin-transform-sticky-regex": "^7.25.7",
+ "@babel/plugin-transform-template-literals": "^7.25.7",
+ "@babel/plugin-transform-typeof-symbol": "^7.25.7",
+ "@babel/plugin-transform-unicode-escapes": "^7.25.7",
+ "@babel/plugin-transform-unicode-property-regex": "^7.25.7",
+ "@babel/plugin-transform-unicode-regex": "^7.25.7",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.25.7",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.38.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@wordpress/scripts/node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@wordpress/scripts/node_modules/@babel/preset-typescript": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz",
+ "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-validator-option": "^7.25.7",
+ "@babel/plugin-syntax-jsx": "^7.25.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.7",
+ "@babel/plugin-transform-typescript": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@wordpress/scripts/node_modules/@wordpress/babel-preset-default": {
+ "version": "8.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.40.0.tgz",
+ "integrity": "sha512-UzSwDaxsMarnlfFUmEWW2qvkJy4JupW49uH0JztFobCamQ5QCL71M75zIspIXffiZVjQMBWruR7/+5QTJklewA==",
+ "dev": true,
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@babel/core": "7.25.7",
+ "@babel/plugin-syntax-import-attributes": "7.26.0",
+ "@babel/plugin-transform-react-jsx": "7.25.7",
+ "@babel/plugin-transform-runtime": "7.25.7",
+ "@babel/preset-env": "7.25.7",
+ "@babel/preset-typescript": "7.25.7",
+ "@wordpress/browserslist-config": "^6.40.0",
+ "@wordpress/warning": "^3.40.0",
+ "browserslist": "^4.21.10",
+ "core-js": "^3.31.0",
+ "react": "^18.3.0"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ }
+ },
"node_modules/@wordpress/shortcode": {
"version": "4.38.0",
"resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-4.38.0.tgz",
@@ -10283,14 +10603,14 @@
}
},
"node_modules/@wordpress/stylelint-config": {
- "version": "23.30.0",
- "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-23.30.0.tgz",
- "integrity": "sha512-35s8w52ZxTVkvllBSCMbV2cFLQjHd+8FzROUIBW0OaUlZum3bQXnz2I3Q71e6fG2/jXvXVrHRh45P2oIhWnKPQ==",
+ "version": "23.32.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-23.32.0.tgz",
+ "integrity": "sha512-CvkKISBezOyzq6yc3+9ZnX0ar2qv3LGB1T8EcawCcwpESyVdfGu8vP7VZMKI8jDmsl2fUXXzt5nDScpXctY17Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@stylistic/stylelint-plugin": "^3.0.1",
- "@wordpress/theme": "^0.5.0",
+ "@wordpress/theme": "^0.7.0",
"stylelint-config-recommended": "^14.0.1",
"stylelint-config-recommended-scss": "^14.1.0"
},
@@ -10303,6 +10623,53 @@
"stylelint-scss": "^6.4.0"
}
},
+ "node_modules/@wordpress/stylelint-config/node_modules/@wordpress/element": {
+ "version": "6.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.40.0.tgz",
+ "integrity": "sha512-OhU8B2xEGg7c41rh/VRiJLOz6TnM/r5r8sraAg5ISc2bF7s2oAFqLwvlR0/U6ervyYwbK644osWZGQxFyL3huA==",
+ "dev": true,
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@types/react": "^18.3.27",
+ "@types/react-dom": "^18.3.1",
+ "@wordpress/escape-html": "^3.40.0",
+ "change-case": "^4.1.2",
+ "is-plain-object": "^5.0.0",
+ "react": "^18.3.0",
+ "react-dom": "^18.3.0"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ }
+ },
+ "node_modules/@wordpress/stylelint-config/node_modules/@wordpress/theme": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/theme/-/theme-0.7.0.tgz",
+ "integrity": "sha512-ULwLCSKYraIsv83bVH+Hm5pGFen6/0/8xOXQwxMdxeU+8kSm0cTKlpQPNvJGCmAeQb2OgFcowB/8wrUdyqW8UQ==",
+ "dev": true,
+ "license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@wordpress/element": "^6.40.0",
+ "@wordpress/private-apis": "^1.40.0",
+ "colorjs.io": "^0.6.0",
+ "memize": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=18.12.0",
+ "npm": ">=8.19.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0",
+ "stylelint": "^16.8.2"
+ },
+ "peerDependenciesMeta": {
+ "stylelint": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@wordpress/theme": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@wordpress/theme/-/theme-0.5.0.tgz",
@@ -10415,9 +10782,9 @@
}
},
"node_modules/@wordpress/warning": {
- "version": "3.38.0",
- "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.38.0.tgz",
- "integrity": "sha512-4eHJoNC/Ofrp+hOIf/2KqSoyIZLFIoyAhfTBrFxq3bGKNFJlOEHAJ3+tGiy77Ja93uQzrSWctZsH1CpSRYKkng==",
+ "version": "3.40.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.40.0.tgz",
+ "integrity": "sha512-0l3OFa1Z+UdhWRRHX9JWWKofo7Lbi2MqOFzzzn0MC26HOyfieQycjLVLNVNXaaodIKUhap6uDQq+JXbbHm881A==",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -10539,13 +10906,6 @@
"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",
- "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/adm-zip": {
"version": "0.5.16",
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz",
@@ -10567,9 +10927,9 @@
}
},
"node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10612,9 +10972,9 @@
}
},
"node_modules/ajv-formats/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11059,9 +11419,9 @@
"license": "MIT"
},
"node_modules/atomically": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.0.tgz",
- "integrity": "sha512-+gDffFXRW6sl/HCwbta7zK4uNqbPjv4YJEAdz7Vu+FLQHe77eZ4bvbJGi4hE0QPeJlMYMA3piXEr1UL3dAwx7Q==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.1.tgz",
+ "integrity": "sha512-P4w9o2dqARji6P7MHprklbfiArZAWvo07yW7qs3pdljb3BWr12FIB7W+p0zJiuiVsUpRO0iZn1kFFcpPegg0tQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11070,9 +11430,9 @@
}
},
"node_modules/autoprefixer": {
- "version": "10.4.23",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz",
- "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==",
+ "version": "10.4.27",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz",
+ "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==",
"dev": true,
"funding": [
{
@@ -11091,7 +11451,7 @@
"license": "MIT",
"dependencies": {
"browserslist": "^4.28.1",
- "caniuse-lite": "^1.0.30001760",
+ "caniuse-lite": "^1.0.30001774",
"fraction.js": "^5.3.4",
"picocolors": "^1.1.1",
"postcss-value-parser": "^4.2.0"
@@ -11349,11 +11709,14 @@
}
},
"node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
},
"node_modules/bare-events": {
"version": "2.8.2",
@@ -11483,9 +11846,9 @@
}
},
"node_modules/basic-ftp": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz",
- "integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz",
+ "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11596,13 +11959,16 @@
"license": "ISC"
},
"node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+ "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
}
},
"node_modules/braces": {
@@ -11900,9 +12266,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001765",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz",
- "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==",
+ "version": "1.0.30001776",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001776.tgz",
+ "integrity": "sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==",
"funding": [
{
"type": "opencollective",
@@ -12327,446 +12693,112 @@
"on-headers": "~1.1.0",
"safe-buffer": "5.2.1",
"vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/compression/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/compression/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/compute-scroll-into-view": {
- "version": "1.0.20",
- "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
- "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/computed-style": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz",
- "integrity": "sha512-WpAmaKbMNmS3OProfHIdJiNleNJdgUrJfbKArXua28QF7+0CoZjlLn0lp6vlc+dl5r2/X9GQiQRQQU4BzSa69w=="
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/configstore": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.1.0.tgz",
- "integrity": "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "atomically": "^2.0.3",
- "dot-prop": "^9.0.0",
- "graceful-fs": "^4.2.11",
- "xdg-basedir": "^5.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/connect-history-api-fallback": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
- "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/constant-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
- "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
- "license": "MIT",
- "dependencies": {
- "no-case": "^3.0.4",
- "tslib": "^2.0.3",
- "upper-case": "^2.0.2"
- }
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/conventional-changelog": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-6.0.0.tgz",
- "integrity": "sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "conventional-changelog-angular": "^8.0.0",
- "conventional-changelog-atom": "^5.0.0",
- "conventional-changelog-codemirror": "^5.0.0",
- "conventional-changelog-conventionalcommits": "^8.0.0",
- "conventional-changelog-core": "^8.0.0",
- "conventional-changelog-ember": "^5.0.0",
- "conventional-changelog-eslint": "^6.0.0",
- "conventional-changelog-express": "^5.0.0",
- "conventional-changelog-jquery": "^6.0.0",
- "conventional-changelog-jshint": "^5.0.0",
- "conventional-changelog-preset-loader": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-changelog-angular": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz",
- "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "compare-func": "^2.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-changelog-atom": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz",
- "integrity": "sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-changelog-cli": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-5.0.0.tgz",
- "integrity": "sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "add-stream": "^1.0.0",
- "conventional-changelog": "^6.0.0",
- "meow": "^13.0.0",
- "tempfile": "^5.0.0"
- },
- "bin": {
- "conventional-changelog": "cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-changelog-cli/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/conventional-changelog-codemirror": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-5.0.0.tgz",
- "integrity": "sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-changelog-conventionalcommits": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz",
- "integrity": "sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "compare-func": "^2.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-changelog-core": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-8.0.0.tgz",
- "integrity": "sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@hutson/parse-repository-url": "^5.0.0",
- "add-stream": "^1.0.0",
- "conventional-changelog-writer": "^8.0.0",
- "conventional-commits-parser": "^6.0.0",
- "git-raw-commits": "^5.0.0",
- "git-semver-tags": "^8.0.0",
- "hosted-git-info": "^7.0.0",
- "normalize-package-data": "^6.0.0",
- "read-package-up": "^11.0.0",
- "read-pkg": "^9.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-changelog-core/node_modules/hosted-git-info": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
- "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^10.0.1"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/conventional-changelog-core/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/conventional-changelog-core/node_modules/normalize-package-data": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
- "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^7.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/conventional-changelog-core/node_modules/parse-json": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
- "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.26.2",
- "index-to-position": "^1.1.0",
- "type-fest": "^4.39.1"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/conventional-changelog-core/node_modules/read-pkg": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
- "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/normalize-package-data": "^2.4.3",
- "normalize-package-data": "^6.0.0",
- "parse-json": "^8.0.0",
- "type-fest": "^4.6.0",
- "unicorn-magic": "^0.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/conventional-changelog-core/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/conventional-changelog-core/node_modules/type-fest": {
- "version": "4.41.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
- "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/conventional-changelog-ember": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-5.0.0.tgz",
- "integrity": "sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==",
- "dev": true,
- "license": "ISC",
+ },
"engines": {
- "node": ">=18"
+ "node": ">= 0.8.0"
}
},
- "node_modules/conventional-changelog-eslint": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-6.0.0.tgz",
- "integrity": "sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==",
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=18"
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
}
},
- "node_modules/conventional-changelog-express": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-5.0.0.tgz",
- "integrity": "sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==",
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=18"
- }
+ "license": "MIT"
},
- "node_modules/conventional-changelog-jquery": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-6.0.0.tgz",
- "integrity": "sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==",
+ "node_modules/compute-scroll-into-view": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+ "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
"dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=18"
- }
+ "license": "MIT"
},
- "node_modules/conventional-changelog-jshint": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-5.0.0.tgz",
- "integrity": "sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==",
+ "node_modules/computed-style": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz",
+ "integrity": "sha512-WpAmaKbMNmS3OProfHIdJiNleNJdgUrJfbKArXua28QF7+0CoZjlLn0lp6vlc+dl5r2/X9GQiQRQQU4BzSa69w=="
+ },
+ "node_modules/configstore": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.1.0.tgz",
+ "integrity": "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg==",
"dev": true,
- "license": "ISC",
+ "license": "BSD-2-Clause",
"dependencies": {
- "compare-func": "^2.0.0"
+ "atomically": "^2.0.3",
+ "dot-prop": "^9.0.0",
+ "graceful-fs": "^4.2.11",
+ "xdg-basedir": "^5.1.0"
},
"engines": {
"node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/conventional-changelog-preset-loader": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-5.0.0.tgz",
- "integrity": "sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==",
+ "node_modules/connect-history-api-fallback": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
+ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/constant-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
+ "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case": "^2.0.2"
}
},
- "node_modules/conventional-changelog-writer": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.2.0.tgz",
- "integrity": "sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==",
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "conventional-commits-filter": "^5.0.0",
- "handlebars": "^4.7.7",
- "meow": "^13.0.0",
- "semver": "^7.5.2"
- },
- "bin": {
- "conventional-changelog-writer": "dist/cli/index.js"
+ "safe-buffer": "5.2.1"
},
"engines": {
- "node": ">=18"
+ "node": ">= 0.6"
}
},
- "node_modules/conventional-changelog-writer/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 0.6"
}
},
- "node_modules/conventional-changelog-writer/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "node_modules/conventional-changelog-angular": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz",
+ "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==",
"dev": true,
"license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
+ "dependencies": {
+ "compare-func": "^2.0.0"
},
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/conventional-commits-filter": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz",
- "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
- "dev": true,
- "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -13496,9 +13528,9 @@
"license": "MIT"
},
"node_modules/dedent": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz",
- "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==",
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz",
+ "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -14588,17 +14620,6 @@
"eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
}
},
- "node_modules/eslint-plugin-import/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
"node_modules/eslint-plugin-import/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
@@ -14622,19 +14643,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/eslint-plugin-import/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/eslint-plugin-jest": {
"version": "27.9.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz",
@@ -14780,9 +14788,9 @@
}
},
"node_modules/eslint-plugin-jest/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -14817,9 +14825,9 @@
}
},
"node_modules/eslint-plugin-jsdoc/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -14859,30 +14867,6 @@
"eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9"
}
},
- "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/eslint-plugin-playwright": {
"version": "0.15.3",
"resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.15.3.tgz",
@@ -14976,17 +14960,6 @@
"eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
}
},
- "node_modules/eslint-plugin-react/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
"node_modules/eslint-plugin-react/node_modules/doctrine": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
@@ -15000,33 +14973,26 @@
"node": ">=0.10.0"
}
},
- "node_modules/eslint-plugin-react/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/eslint-plugin-react/node_modules/resolve": {
- "version": "2.0.0-next.5",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
- "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "version": "2.0.0-next.6",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz",
+ "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "is-core-module": "^2.13.0",
+ "es-errors": "^1.3.0",
+ "is-core-module": "^2.16.1",
+ "node-exports-info": "^1.6.0",
+ "object-keys": "^1.1.1",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -15072,17 +15038,6 @@
"dev": true,
"license": "Python-2.0"
},
- "node_modules/eslint/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
"node_modules/eslint/node_modules/eslint-scope": {
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
@@ -15159,19 +15114,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/eslint/node_modules/p-locate": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
@@ -15803,19 +15745,6 @@
"node": ">=8"
}
},
- "node_modules/find-up-simple": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz",
- "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/flat": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
@@ -16209,9 +16138,9 @@
}
},
"node_modules/get-tsconfig": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
- "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
+ "version": "4.13.6",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz",
+ "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16246,66 +16175,6 @@
"safe-buffer": "^5.1.1"
}
},
- "node_modules/git-raw-commits": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.0.tgz",
- "integrity": "sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@conventional-changelog/git-client": "^1.0.0",
- "meow": "^13.0.0"
- },
- "bin": {
- "git-raw-commits": "src/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/git-raw-commits/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/git-semver-tags": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-8.0.0.tgz",
- "integrity": "sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@conventional-changelog/git-client": "^1.0.0",
- "meow": "^13.0.0"
- },
- "bin": {
- "git-semver-tags": "src/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/git-semver-tags/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -16361,33 +16230,9 @@
"node_modules/glob-to-regexp": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true,
- "license": "BSD-2-Clause"
- },
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true,
+ "license": "BSD-2-Clause"
},
"node_modules/global-directory": {
"version": "4.0.1",
@@ -16586,38 +16431,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/handlebars": {
- "version": "4.7.8",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
- "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.2",
- "source-map": "^0.6.1",
- "wordwrap": "^1.0.0"
- },
- "bin": {
- "handlebars": "bin/handlebars"
- },
- "engines": {
- "node": ">=0.4.7"
- },
- "optionalDependencies": {
- "uglify-js": "^3.1.4"
- }
- },
- "node_modules/handlebars/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/hard-rejection": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
@@ -17145,30 +16958,6 @@
"node": ">=10"
}
},
- "node_modules/ignore-walk/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/ignore-walk/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/image-ssim": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz",
@@ -17177,9 +16966,9 @@
"license": "MIT"
},
"node_modules/immutable": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
- "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz",
+ "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==",
"dev": true,
"license": "MIT"
},
@@ -17285,19 +17074,6 @@
"node": ">=8"
}
},
- "node_modules/index-to-position": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz",
- "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -17516,9 +17292,9 @@
}
},
"node_modules/is-bun-module/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -18890,9 +18666,9 @@
}
},
"node_modules/jest-snapshot/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -19372,9 +19148,9 @@
"license": "Apache-2.0"
},
"node_modules/lighthouse/node_modules/@puppeteer/browsers": {
- "version": "2.11.1",
- "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.1.tgz",
- "integrity": "sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz",
+ "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -19382,7 +19158,7 @@
"extract-zip": "^2.0.1",
"progress": "^2.0.3",
"proxy-agent": "^6.5.0",
- "semver": "^7.7.3",
+ "semver": "^7.7.4",
"tar-fs": "^3.1.1",
"yargs": "^17.7.2"
},
@@ -19394,18 +19170,18 @@
}
},
"node_modules/lighthouse/node_modules/puppeteer-core": {
- "version": "24.35.0",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.35.0.tgz",
- "integrity": "sha512-vt1zc2ME0kHBn7ZDOqLvgvrYD5bqNv5y2ZNXzYnCv8DEtZGw/zKhljlrGuImxptZ4rq+QI9dFGrUIYqG4/IQzA==",
+ "version": "24.37.5",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.5.tgz",
+ "integrity": "sha512-ybL7iE78YPN4T6J+sPLO7r0lSByp/0NN6PvfBEql219cOnttoTFzCWKiBOjstXSqi/OKpwae623DWAsL7cn2MQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@puppeteer/browsers": "2.11.1",
- "chromium-bidi": "12.0.1",
+ "@puppeteer/browsers": "2.13.0",
+ "chromium-bidi": "14.0.0",
"debug": "^4.4.3",
- "devtools-protocol": "0.0.1534754",
+ "devtools-protocol": "0.0.1566079",
"typed-query-selector": "^2.12.0",
- "webdriver-bidi-protocol": "0.3.10",
+ "webdriver-bidi-protocol": "0.4.1",
"ws": "^8.19.0"
},
"engines": {
@@ -19413,9 +19189,9 @@
}
},
"node_modules/lighthouse/node_modules/puppeteer-core/node_modules/chromium-bidi": {
- "version": "12.0.1",
- "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz",
- "integrity": "sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz",
+ "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -19427,9 +19203,9 @@
}
},
"node_modules/lighthouse/node_modules/puppeteer-core/node_modules/devtools-protocol": {
- "version": "0.0.1534754",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz",
- "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==",
+ "version": "0.0.1566079",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz",
+ "integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==",
"dev": true,
"license": "BSD-3-Clause"
},
@@ -19456,9 +19232,9 @@
}
},
"node_modules/lighthouse/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -19593,7 +19369,8 @@
"version": "4.17.23",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz",
"integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.camelcase": {
"version": "4.3.0",
@@ -19767,9 +19544,9 @@
}
},
"node_modules/make-dir/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -19888,17 +19665,6 @@
"dev": true,
"license": "Python-2.0"
},
- "node_modules/markdownlint-cli/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
"node_modules/markdownlint-cli/node_modules/commander": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz",
@@ -19932,19 +19698,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/markdownlint-cli/node_modules/minimatch": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
- "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/markdownlint-rule-helpers": {
"version": "0.16.0",
"resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.16.0.tgz",
@@ -20248,16 +20001,16 @@
"license": "ISC"
},
"node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+ "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "brace-expansion": "^5.0.2"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -20504,6 +20257,25 @@
"license": "MIT",
"optional": true
},
+ "node_modules/node-exports-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz",
+ "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array.prototype.flatmap": "^1.3.3",
+ "es-errors": "^1.3.0",
+ "object.entries": "^1.1.9",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -20534,9 +20306,9 @@
}
},
"node_modules/normalize-package-data/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -20620,9 +20392,9 @@
"license": "MIT"
},
"node_modules/npm-package-json-lint/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -21259,9 +21031,9 @@
}
},
"node_modules/pg-protocol": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.11.0.tgz",
- "integrity": "sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==",
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.12.0.tgz",
+ "integrity": "sha512-uOANXNRACNdElMXJ0tPz6RBM0XQ61nONGAwlt8da5zs/iUOOCLBQOHSXnrC6fMsvtjxbOJrZZl5IScGv+7mpbg==",
"dev": true,
"license": "MIT"
},
@@ -21444,14 +21216,14 @@
}
},
"node_modules/playwright": {
- "version": "1.57.0",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz",
- "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==",
+ "version": "1.58.2",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz",
+ "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==",
"dev": true,
"license": "Apache-2.0",
"peer": true,
"dependencies": {
- "playwright-core": "1.57.0"
+ "playwright-core": "1.58.2"
},
"bin": {
"playwright": "cli.js"
@@ -21464,9 +21236,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.57.0",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz",
- "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==",
+ "version": "1.58.2",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz",
+ "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==",
"dev": true,
"license": "Apache-2.0",
"peer": true,
@@ -22624,16 +22396,6 @@
"node": ">=8"
}
},
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
"node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -22873,123 +22635,6 @@
"pify": "^2.3.0"
}
},
- "node_modules/read-package-up": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz",
- "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-up-simple": "^1.0.0",
- "read-pkg": "^9.0.0",
- "type-fest": "^4.6.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-package-up/node_modules/hosted-git-info": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
- "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^10.0.1"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/read-package-up/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/read-package-up/node_modules/normalize-package-data": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
- "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^7.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/read-package-up/node_modules/parse-json": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
- "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.26.2",
- "index-to-position": "^1.1.0",
- "type-fest": "^4.39.1"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-package-up/node_modules/read-pkg": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
- "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/normalize-package-data": "^2.4.3",
- "normalize-package-data": "^6.0.0",
- "parse-json": "^8.0.0",
- "type-fest": "^4.6.0",
- "unicorn-magic": "^0.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-package-up/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/read-package-up/node_modules/type-fest": {
- "version": "4.41.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
- "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -23704,6 +23349,16 @@
}
}
},
+ "node_modules/sax": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz",
+ "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=11.0.0"
+ }
+ },
"node_modules/saxes": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
@@ -23747,9 +23402,9 @@
}
},
"node_modules/schema-utils/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -23886,13 +23541,13 @@
}
},
"node_modules/serialize-javascript": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
- "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.4.tgz",
+ "integrity": "sha512-DuGdB+Po43Q5Jxwpzt1lhyFSYKryqoNjQSA9M92tyw0lyHIOur+XCalOUe0KTJpyqzT8+fQ5A0Jf7vCx/NKmIg==",
"dev": true,
"license": "BSD-3-Clause",
- "dependencies": {
- "randombytes": "^2.1.0"
+ "engines": {
+ "node": ">=20.0.0"
}
},
"node_modules/serve-index": {
@@ -24701,9 +24356,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.22",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
- "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+ "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
"dev": true,
"license": "CC0-1.0"
},
@@ -25264,9 +24919,9 @@
}
},
"node_modules/stylelint-scss/node_modules/mdn-data": {
- "version": "2.26.0",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.26.0.tgz",
- "integrity": "sha512-ZqI0qjKWHMPcGUfLmlr80NPNVHIOjPMHtIOe1qXYFGS0YBZ1YKAzo9yk8W+gGrLCN0Xdv/RKxqdIsqPakEfmow==",
+ "version": "2.27.1",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
+ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
"dev": true,
"license": "CC0-1.0"
},
@@ -25584,19 +25239,19 @@
"devOptional": true
},
"node_modules/svgo": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz",
- "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz",
+ "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@trysound/sax": "0.2.0",
"commander": "^7.2.0",
"css-select": "^5.1.0",
"css-tree": "^2.3.1",
"css-what": "^6.1.0",
"csso": "^5.0.5",
- "picocolors": "^1.0.0"
+ "picocolors": "^1.0.0",
+ "sax": "^1.5.0"
},
"bin": {
"svgo": "bin/svgo"
@@ -25687,9 +25342,9 @@
}
},
"node_modules/table/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -25775,32 +25430,6 @@
}
}
},
- "node_modules/temp-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz",
- "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.16"
- }
- },
- "node_modules/tempfile": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-5.0.0.tgz",
- "integrity": "sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "temp-dir": "^3.0.0"
- },
- "engines": {
- "node": ">=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/terser": {
"version": "5.46.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz",
@@ -25821,16 +25450,15 @@
}
},
"node_modules/terser-webpack-plugin": {
- "version": "5.3.16",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz",
- "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
+ "version": "5.3.17",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.17.tgz",
+ "integrity": "sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.25",
"jest-worker": "^27.4.5",
"schema-utils": "^4.3.0",
- "serialize-javascript": "^6.0.2",
"terser": "^5.31.1"
},
"engines": {
@@ -25929,30 +25557,6 @@
"node": ">=8"
}
},
- "node_modules/test-exclude/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/test-exclude/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/text-decoder": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
@@ -26101,20 +25705,20 @@
}
},
"node_modules/tldts-core": {
- "version": "7.0.19",
- "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.19.tgz",
- "integrity": "sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==",
+ "version": "7.0.24",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.24.tgz",
+ "integrity": "sha512-pj7yygNMoMRqG7ML2SDQ0xNIOfN3IBDUcPVM2Sg6hP96oFNN2nqnzHreT3z9xLq85IWJyNTvD38O002DdOrPMw==",
"dev": true,
"license": "MIT"
},
"node_modules/tldts-icann": {
- "version": "7.0.19",
- "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-7.0.19.tgz",
- "integrity": "sha512-PZgda8E2cXMNa7QlBbiZh3vcS8UaPTDRIBmcGPDlujSMtQLrzjvikeJxzQSqWxn3muaMJ7BsC+aL464Yl2I6cA==",
+ "version": "7.0.24",
+ "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-7.0.24.tgz",
+ "integrity": "sha512-WgCMgvvJEUBU0ZByo0dz8mdLDJE0XoVdu6egZDPJYX2aaxHGX8dJEbF4Il5+M6qix8Br9O5OOeLfyyESU0MoEQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "tldts-core": "^7.0.19"
+ "tldts-core": "^7.0.24"
}
},
"node_modules/tldts/node_modules/tldts-core": {
@@ -26504,20 +26108,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/uglify-js": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
- "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "optional": true,
- "bin": {
- "uglifyjs": "bin/uglifyjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/unbox-primitive": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
@@ -26595,19 +26185,6 @@
"node": ">=4"
}
},
- "node_modules/unicorn-magic": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
- "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -27002,9 +26579,9 @@
"license": "Apache-2.0"
},
"node_modules/webdriver-bidi-protocol": {
- "version": "0.3.10",
- "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.10.tgz",
- "integrity": "sha512-5LAE43jAVLOhB/QqX4bwSiv0Hg1HBfMmOuwBSXHdvg4GMGu9Y0lIq7p4R/yySu6w74WmaR4GM4H9t2IwLW7hgw==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz",
+ "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==",
"dev": true,
"license": "Apache-2.0"
},
@@ -27667,13 +27244,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
diff --git a/package.json b/package.json
index 9268bef..c7826b6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "carousel-kit",
- "version": "1.0.3",
+ "version": "1.0.4",
"description": "Carousel block using Embla and WordPress Interactivity API",
"author": "rtCamp",
"private": true,
@@ -8,6 +8,13 @@
"node": "^22.0.0",
"npm": "^10.0.0"
},
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/rtCamp/carousel-kit"
+ },
+ "bugs": {
+ "url": "https://github.com/rtCamp/carousel-kit/issues"
+ },
"scripts": {
"build": "wp-scripts build --experimental-modules --webpack-src-dir=./src --output-path=./build",
"start": "wp-scripts start --experimental-modules --webpack-src-dir=./src --output-path=./build",
@@ -18,8 +25,9 @@
"lint:css:fix": "wp-scripts lint-style --fix",
"lint:php": "composer run-script lint",
"lint:php:fix": "composer run-script format",
- "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
+ "changelog": "npx conventional-changelog-cli -p angular -i CHANGELOG.md -s",
"version": "npm run changelog && git add CHANGELOG.md",
+ "i18n:pot": "wp i18n make-pot . languages/carousel-kit.pot --domain=carousel-kit --exclude=node_modules,vendor,tests --headers='{\"Report-Msgid-Bugs-To\":\"https://github.com/rtCamp/carousel-kit/issues\"}'",
"test:actions": "act",
"test:js": "wp-scripts test-unit-js",
"test:js:watch": "wp-scripts test-unit-js --watch",
@@ -52,8 +60,7 @@
"@types/react-dom": "^18.3.7",
"@types/wordpress__block-editor": "15.0.0",
"@types/wordpress__blocks": "12.5.18",
- "@wordpress/scripts": "^31.2.0",
- "conventional-changelog-cli": "5.0.0",
+ "@wordpress/scripts": "^31.5.0",
"eslint-plugin-eslint-comments": "3.2.0",
"husky": "9.1.7",
"typescript": "^5.9.3"
@@ -61,6 +68,8 @@
"overrides": {
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "webpack-dev-server": ">=5.2.1"
+ "webpack-dev-server": ">=5.2.1",
+ "minimatch": ">=10.2.1",
+ "serialize-javascript": ">=7.0.3"
}
}
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index 9e12413..8733ee0 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -8,7 +8,7 @@
- ./src/inc/
+ ./inc/
./carousel-kit.php
diff --git a/phpstan.neon.dist b/phpstan.neon.dist
index 5ccb477..c04b0cc 100644
--- a/phpstan.neon.dist
+++ b/phpstan.neon.dist
@@ -21,8 +21,7 @@ parameters:
- tests/phpstan/constants.php
paths:
- carousel-kit.php
- - src/inc/
- - templates/
+ - inc/
- examples/
excludePaths:
analyse:
diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..f17a95f
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,112 @@
+=== Carousel Kit ===
+Contributors: rtcamp, danish17, immasud, gagan0123, up1512001, mi5t4n, aviral89, vishal4669, imrraaj, aishwarryapande
+Tags: carousel, slider, block, interactivity-api, embla
+Requires at least: 6.6
+Tested up to: 6.9
+Requires PHP: 8.2
+Stable tag: 1.0.4
+License: GPL-2.0-or-later
+License URI: https://www.gnu.org/licenses/gpl-2.0.html
+
+A modular, high-performance carousel block for WordPress, powered by the Interactivity API and Embla Carousel.
+
+== Description ==
+
+**Carousel Kit** is a flexible, accessible carousel block for the WordPress block editor. Build dynamic carousels for posts, testimonials, images, and more—without writing code.
+
+= Features =
+
+* **Compound Block Architecture** – Mix and match any blocks inside the carousel
+* **High Performance** – Powered by Embla Carousel v8
+* **Interactivity API** – Reactive state management with zero hydration overhead
+* **Query Loop Support** – Each post in a Query Loop becomes a slide automatically
+* **Accessibility** – W3C-compliant roles, labels, and keyboard navigation
+* **RTL Support** – Built-in support for Right-to-Left languages
+
+= Block Components =
+
+1. **Carousel** – The main wrapper and controller
+2. **Carousel Viewport** – The visible scrolling area
+3. **Carousel Slide** – Container for individual slides
+4. **Carousel Controls** – Previous/Next navigation buttons
+5. **Carousel Dots** – Pagination indicators
+
+= Use Cases =
+
+* Image galleries and sliders
+* Testimonial carousels
+* Post/product showcases
+* Logo showcases
+* Hero banners with multiple slides
+
+= Source Code =
+
+This plugin release includes transpiled production assets for performance. The complete, human-readable source code is publicly available at:
+
+* https://github.com/rtCamp/carousel-kit
+
+Build scripts, development files, and original TypeScript/JavaScript/PHP sources are maintained in that repository.
+
+== Installation ==
+
+1. Upload the `carousel-kit` folder to `/wp-content/plugins/`
+2. Activate the plugin through the **Plugins** menu in WordPress
+3. In the block editor, search for "Carousel" and insert the block
+
+== Frequently Asked Questions ==
+
+= Does it work with Full Site Editing? =
+
+Yes! Carousel Kit is fully compatible with FSE. Use it in templates, template parts, and anywhere blocks are supported.
+
+= Can I nest other blocks inside slides? =
+
+Absolutely. Each slide accepts any WordPress block—images, paragraphs, groups, columns, and third-party blocks.
+
+= Does it support the Query Loop block? =
+
+Yes. Add a Query Loop inside the Carousel Viewport, and each post becomes a slide automatically.
+
+= Is it accessible? =
+
+Yes. The carousel follows W3C accessibility guidelines with proper ARIA roles, labels, and full keyboard navigation.
+
+= Can I have multiple carousels on the same page? =
+
+Yes. Each carousel instance maintains its own independent state.
+
+== Screenshots ==
+
+1. Carousel block in the editor with multiple slides
+
+== Changelog ==
+
+= 1.0.4 =
+* New: Update minimum requirements to PHP 8.2 and WordPress 6.6
+* New: Implement PHP class autoloader for better performance and security
+* New: Add localization support and updated .pot files
+* New: Add uninstall.php for clean data removal upon plugin deletion
+* New: Add placeholder logos and updated hero carousel patterns
+* New: Add new screenshot images for WordPress.org plugin preview
+* New: Add direct access protection for core PHP files and Autoloader
+* Fix: Resolve CSS linting issues and remove unnecessary grid properties
+* Fix: Improve transition effects and clean up unused style properties
+* Fix: Update package dependencies (minimatch, serialize-javascript, svgo, and immutable)
+* Fix: Update @wordpress/scripts to allow minor updates and maintain compatibility
+* Fix: Refine .distignore and distribution targets to minimize package size
+* Fix: Standardize script paths in composer.json to use local binaries
+* Fix: Correct release links in documentation and update contributor lists
+* Fix: Update PHPCS and PHPStan configurations for better development workflow
+
+= 1.0.3 =
+* Fix: (Editor): Prevent ghost slides and state corruption when clicking between slides
+* Fix: Swap misplaced editor images and remove hardcoded aspect ratio
+* Fix: Outdated plugin version in plugin header
+
+= 1.0.2 =
+* Fix: Demo pattern now shows 4 slides per view
+* Fix: Replace PNG images with optimized WEBP format
+* New: Setup wizard styles
+* New: Slide appender and setup wizard
+
+[CHECK THE FULL CHANGELOG](https://github.com/rtCamp/carousel-kit/blob/main/CHANGELOG.md)
\ No newline at end of file
diff --git a/src/blocks/carousel/controls/style.scss b/src/blocks/carousel/controls/style.scss
index 64b5b0f..60da6db 100644
--- a/src/blocks/carousel/controls/style.scss
+++ b/src/blocks/carousel/controls/style.scss
@@ -22,17 +22,17 @@
height: var(--carousel-kit-control-size, 2.5rem);
}
+.carousel-kit-controls__btn:disabled {
+ cursor: not-allowed;
+ opacity: 0.25;
+}
+
.carousel-kit-controls__btn:not(:disabled):hover {
background-color: var(--carousel-kit-control-bg-hover, rgba(248, 248, 248, 1));
border: var(--carousel-kit-control-border-hover, 1.25px solid rgba(28, 28, 28, 0.75));
color: var(--carousel-kit-control-color-hover, inherit);
}
-.carousel-kit-controls__btn:disabled {
- cursor: not-allowed;
- opacity: 0.25;
-}
-
// In RTL mode, rotate the icons 180 degrees to flip their direction
[dir="rtl"] .carousel-kit-controls__btn svg {
transform: rotate(180deg);
diff --git a/src/blocks/carousel/dots/style.scss b/src/blocks/carousel/dots/style.scss
index b7a9971..ffbac10 100644
--- a/src/blocks/carousel/dots/style.scss
+++ b/src/blocks/carousel/dots/style.scss
@@ -15,11 +15,10 @@
border: var(--carousel-kit-dot-border, none);
cursor: pointer;
padding: 0;
- transition: all 0.2s ease;
+ transition: background-color 0.2s ease, transform 0.2s ease;
}
.carousel-kit-dot.is-active {
background-color: var(--carousel-kit-dot-active-color, rgba(28, 28, 28, 1));
- width: var(--carousel-kit-dot-active-size, 0.75rem);
- height: var(--carousel-kit-dot-active-size, 0.75rem);
+ transform: scale(var(--carousel-kit-dot-active-scale, 1.5));
}
diff --git a/src/blocks/carousel/editor.scss b/src/blocks/carousel/editor.scss
index 0cd33e3..f70e3a1 100644
--- a/src/blocks/carousel/editor.scss
+++ b/src/blocks/carousel/editor.scss
@@ -4,6 +4,7 @@
// ── Setup chooser ────────────────────────────────────────────────────────────
.carousel-kit-setup {
+
.carousel-kit-setup__options {
display: flex;
gap: 8px;
@@ -43,9 +44,11 @@
}
.carousel-kit {
+
/* Ensure selectable area */
padding: 0.625rem;
border: 1px dashed #ccc;
+ box-sizing: border-box;
&.is-selected {
border-color: var(--wp-admin-theme-color);
diff --git a/src/blocks/carousel/hooks/useCarouselObservers.ts b/src/blocks/carousel/hooks/useCarouselObservers.ts
new file mode 100644
index 0000000..7cfef8d
--- /dev/null
+++ b/src/blocks/carousel/hooks/useCarouselObservers.ts
@@ -0,0 +1,157 @@
+import { useEffect } from '@wordpress/element';
+import type { EmblaCarouselType } from 'embla-carousel';
+
+const RESIZE_DEBOUNCE_MS = 200;
+const MUTATION_DEBOUNCE_MS = 150;
+
+/**
+ * Unified observer hook that handles both resize detection and Query Loop
+ * DOM mutations through a single coordinated MutationObserver.
+ *
+ * **Resize detection** (viewport + first slide width changes):
+ * Uses `reInit()` because resize only affects measurements — the DOM structure
+ * (container + slides) remains unchanged, so Embla's cached references stay valid.
+ *
+ * **Query Loop detection** (slide count changes):
+ * Uses full destroy/recreate via `initEmblaRef` because Query Loop changes can
+ * replace the `.wp-block-post-template` element or swap out its children entirely.
+ * Embla caches references to container and slide elements, so when those DOM
+ * nodes are replaced, a fresh instance is required.
+ *
+ * @param {HTMLDivElement | null} viewportEl - The carousel viewport element to observe
+ * @param {React.MutableRefObject} emblaRef - Ref to the Embla instance for calling reInit()
+ * @param {React.RefObject<(() => void) | undefined>} initEmblaRef - Ref to the init function for full Embla recreate
+ */
+export function useCarouselObservers(
+ viewportEl: HTMLDivElement | null,
+ emblaRef: React.MutableRefObject,
+ initEmblaRef: React.RefObject<( () => void ) | undefined>,
+) {
+ useEffect( () => {
+ if ( ! viewportEl ) {
+ return;
+ }
+
+ let resizeTimer: ReturnType | undefined;
+ let mutationTimer: ReturnType | undefined;
+
+ // When a full init is in progress, suppress any resize-triggered reInits
+ // that fire due to DOM churn during the init itself.
+ let fullInitPending = false;
+
+ const lastWidths = new WeakMap();
+ let lastSlideCount = 0;
+ let observedSlide: Element | null = null;
+
+ const resizeObserver = new ResizeObserver( ( entries ) => {
+ if ( fullInitPending ) {
+ return;
+ }
+
+ let shouldReInit = false;
+
+ for ( const entry of entries ) {
+ const el = entry.target;
+ const newWidth = entry.contentRect.width;
+ const previousWidth = lastWidths.get( el );
+
+ lastWidths.set( el, newWidth );
+
+ // Skip first observation — establish baseline width.
+ if ( previousWidth === undefined ) {
+ continue;
+ }
+
+ if ( Math.abs( newWidth - previousWidth ) > 1 ) {
+ shouldReInit = true;
+ }
+ }
+
+ if ( shouldReInit ) {
+ clearTimeout( resizeTimer );
+ resizeTimer = setTimeout( () => {
+ emblaRef.current?.reInit();
+ }, RESIZE_DEBOUNCE_MS );
+ }
+ } );
+
+ resizeObserver.observe( viewportEl );
+
+ const updateSlideObservation = () => {
+ const container = viewportEl.querySelector( '.embla__container, .wp-block-post-template' );
+ const firstSlide = container?.querySelector( '.embla__slide, .wp-block-post' ) ?? null;
+
+ if ( firstSlide === observedSlide ) {
+ return;
+ }
+
+ if ( observedSlide ) {
+ resizeObserver.unobserve( observedSlide );
+ }
+
+ if ( firstSlide ) {
+ observedSlide = firstSlide;
+ resizeObserver.observe( firstSlide );
+ } else {
+ observedSlide = null;
+ }
+ };
+
+ const checkQueryLoopChanges = (): boolean => {
+ const postTemplate = viewportEl.querySelector( '.wp-block-post-template' );
+ const currentCount = postTemplate ? postTemplate.children.length : 0;
+
+ const changed = currentCount !== lastSlideCount;
+ lastSlideCount = currentCount;
+
+ if ( changed && currentCount === 0 ) {
+ // Template removed or emptied — destroy to avoid stale references.
+ emblaRef.current?.destroy();
+ emblaRef.current = undefined;
+ return false;
+ }
+
+ return changed && currentCount > 0;
+ };
+
+ const processMutations = () => {
+ const needsFullInit = checkQueryLoopChanges();
+
+ if ( needsFullInit ) {
+ clearTimeout( resizeTimer );
+ fullInitPending = true;
+
+ initEmblaRef.current?.();
+
+ // Keep the flag set for the full resize debounce window so any
+ // ResizeObserver callbacks from the init DOM churn are suppressed.
+ // Reuses resizeTimer so the cleanup in the return handles it automatically.
+ resizeTimer = setTimeout( () => {
+ fullInitPending = false;
+ }, RESIZE_DEBOUNCE_MS );
+ }
+
+ updateSlideObservation();
+ };
+
+ const mutationObserver = new MutationObserver( () => {
+ clearTimeout( mutationTimer );
+ mutationTimer = setTimeout( processMutations, MUTATION_DEBOUNCE_MS );
+ } );
+
+ mutationObserver.observe( viewportEl, { childList: true, subtree: true } );
+
+ // Seed the initial slide count so the first mutation doesn't trigger a spurious init.
+ const initialTemplate = viewportEl.querySelector( '.wp-block-post-template' );
+ lastSlideCount = initialTemplate ? initialTemplate.children.length : 0;
+
+ updateSlideObservation();
+
+ return () => {
+ clearTimeout( resizeTimer );
+ clearTimeout( mutationTimer );
+ resizeObserver.disconnect();
+ mutationObserver.disconnect();
+ };
+ }, [ viewportEl, emblaRef, initEmblaRef ] );
+}
diff --git a/src/blocks/carousel/styles/_core.scss b/src/blocks/carousel/styles/_core.scss
index e230bf7..80603f0 100644
--- a/src/blocks/carousel/styles/_core.scss
+++ b/src/blocks/carousel/styles/_core.scss
@@ -4,6 +4,11 @@
--carousel-kit-slide-width: 100%;
}
+/* Full alignment needs to break out of the container */
+:where(.carousel-kit.alignfull) {
+ width: 100vw;
+}
+
:where(.carousel-kit) .embla {
overflow: hidden;
}
@@ -17,7 +22,6 @@
margin: 0;
padding: 0;
list-style: none;
- grid-template-columns: none;
gap: var(--carousel-kit-gap, 0);
}
@@ -30,9 +34,7 @@
/* Force slides (including posts) to respect a configurable width variable */
:where(.carousel-kit) .embla__slide,
:where(.carousel-kit) .embla .wp-block-post-template li {
- display: block;
flex: 0 0 var(--carousel-kit-slide-width, 100%);
- width: var(--carousel-kit-slide-width, 100%);
max-width: var(--carousel-kit-slide-width, 100%);
min-width: 0;
box-sizing: border-box;
@@ -59,11 +61,6 @@
}
/* Vertical Axis adjustments */
-:where(.carousel-kit[data-axis="y"]) {
- display: flex;
- flex-direction: column;
-}
-
:where(.carousel-kit[data-axis="y"]) .embla {
height: var(--carousel-kit-height);
}
@@ -76,17 +73,11 @@
:where(.carousel-kit[data-axis="y"]) .embla__slide,
:where(.carousel-kit[data-axis="y"]) .embla .wp-block-post-template li {
- flex: 0 0 var(--carousel-kit-slide-width, 100%);
- width: 100%;
- max-width: 100%;
margin-inline-end: 0;
}
/* Vertical + Loop specific */
:where(.carousel-kit[data-axis="y"][data-loop="true"]) .embla__slide,
-:where(.carousel-kit[data-axis="y"][data-loop="true"])
- .embla
- .wp-block-post-template
- li {
+:where(.carousel-kit[data-axis="y"][data-loop="true"]) .embla .wp-block-post-template li {
margin-block-end: var(--carousel-kit-gap, 0);
}
diff --git a/src/blocks/carousel/types.ts b/src/blocks/carousel/types.ts
index fe34731..c59eba4 100644
--- a/src/blocks/carousel/types.ts
+++ b/src/blocks/carousel/types.ts
@@ -24,6 +24,16 @@ export type CarouselSlideAttributes = Record;
export type CarouselControlsAttributes = Record;
export type CarouselDotsAttributes = Record;
+/**
+ * Typed subset of the block editor store selectors used in this plugin.
+ * This avoids `as any` casts while keeping dot-notation and type safety.
+ */
+export interface BlockEditorSelectors {
+ getBlocks: ( clientId: string ) => Array<{ clientId: string }>;
+ getSelectedBlockClientId: () => string | null;
+ getBlockParents: ( clientId: string ) => string[];
+}
+
export type CarouselContext = {
options: EmblaOptionsType & {
slidesToScroll?: number | 'auto';
diff --git a/src/blocks/carousel/viewport/edit.tsx b/src/blocks/carousel/viewport/edit.tsx
index 8ff0563..f584c06 100644
--- a/src/blocks/carousel/viewport/edit.tsx
+++ b/src/blocks/carousel/viewport/edit.tsx
@@ -9,11 +9,12 @@ import { createBlock } from '@wordpress/blocks';
import { useDispatch, useSelect } from '@wordpress/data';
import { __ } from '@wordpress/i18n';
import { plus } from '@wordpress/icons';
-import type { CarouselViewportAttributes } from '../types';
-import { useContext, useEffect, useRef, useCallback } from '@wordpress/element';
+import type { CarouselViewportAttributes, BlockEditorSelectors } from '../types';
+import { useContext, useEffect, useRef, useCallback, useState } from '@wordpress/element';
import { useMergeRefs } from '@wordpress/compose';
import { EditorCarouselContext } from '../editor-context';
import EmblaCarousel, { type EmblaCarouselType } from 'embla-carousel';
+import { useCarouselObservers } from '../hooks/useCarouselObservers';
const EMBLA_KEY = Symbol.for( 'carousel-system.carousel' );
@@ -34,19 +35,59 @@ export default function Edit( {
},
} );
- const slideCount = useSelect(
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- ( select ) => ( select( 'core/block-editor' ) as any ).getBlockCount( clientId ) as number,
+ /**
+ * Single store subscription for slide count, IDs, and which slide (if any)
+ * is currently selected — including nested child-block selection.
+ */
+ const { slideCount, selectedSlideIndex } = useSelect(
+ ( select ) => {
+ const blockEditor = select( 'core/block-editor' ) as BlockEditorSelectors;
+ const childBlocks = blockEditor.getBlocks( clientId );
+ const slideClientIds = childBlocks.map( ( block ) => block.clientId );
+ const count = slideClientIds.length;
+
+ const selectedBlockId = blockEditor.getSelectedBlockClientId();
+ let index = -1;
+ if ( selectedBlockId ) {
+ index = slideClientIds.indexOf( selectedBlockId );
+ if ( index === -1 ) {
+ const ancestorIds = blockEditor.getBlockParents( selectedBlockId );
+ const parentSlideId = ancestorIds.find( ( id ) => slideClientIds.includes( id ) );
+ if ( parentSlideId ) {
+ index = slideClientIds.indexOf( parentSlideId );
+ }
+ }
+ }
+
+ return { slideCount: count, selectedSlideIndex: index };
+ },
[ clientId ],
);
const hasSlides = slideCount > 0;
const emblaRef = useRef( null );
- const ref = useMergeRefs( [ emblaRef, blockProps.ref ] );
+ const emblaApiRef = useRef();
+ const initEmblaRef = useRef<() => void>();
+
+ // viewportEl is state so it triggers hook setup after the DOM mounts.
+ // initEmblaRef is a ref so the MutationObserver callback always reads
+ // the latest init function without re-subscribing.
+ const [ viewportEl, setViewportEl ] = useState( null );
+
+ // Set viewportEl once on mount. Skips null to avoid state updates during unmount.
+ const viewportCallbackRef = useCallback( ( node: HTMLDivElement | null ) => {
+ if ( node ) {
+ setViewportEl( node );
+ }
+ }, [] );
+
+ const ref = useMergeRefs( [ emblaRef, blockProps.ref, viewportCallbackRef ] );
const { insertBlock } = useDispatch( 'core/block-editor' );
+ useCarouselObservers( viewportEl, emblaApiRef, initEmblaRef );
+
const addSlide = useCallback( () => {
const block = createBlock( 'carousel-kit/carousel-slide' );
insertBlock( block, undefined, clientId );
@@ -80,35 +121,62 @@ export default function Edit( {
);
useEffect( () => {
- const api = emblaRef.current
- ? ( emblaRef.current as { [ EMBLA_KEY ]?: EmblaCarouselType } )[ EMBLA_KEY ]
- : null;
- if ( api ) {
- setTimeout( () => api.reInit(), 10 );
+ if ( ! emblaApiRef.current ) {
+ return;
}
+ // Defer until after React's commit phase so the new slide DOM is ready.
+ const timerId = setTimeout( () => emblaApiRef.current?.reInit(), 0 );
+ return () => clearTimeout( timerId );
}, [ slideCount ] );
+ /**
+ * Scroll Embla to the selected slide when the user picks a slide from the
+ * Block Tree (List View) or when a block inside a slide is selected.
+ *
+ * Deferred with rAF because Gutenberg's own scrollIntoView fires
+ * synchronously on selection, setting native scrollLeft on the viewport.
+ * Our scroll-reset listener (see main init effect) clears that, and then
+ * this rAF fires Embla's transform-based scroll.
+ */
+ useEffect( () => {
+ if ( selectedSlideIndex < 0 ) {
+ return;
+ }
+ const id = requestAnimationFrame( () => {
+ const api = emblaApiRef.current;
+ if ( api && api.selectedScrollSnap() !== selectedSlideIndex ) {
+ api.scrollTo( selectedSlideIndex );
+ }
+ } );
+ return () => cancelAnimationFrame( id );
+ }, [ selectedSlideIndex ] );
+
+ /**
+ * Core Embla initialisation effect.
+ * Observer logic (resize + mutation) has been moved to dedicated hooks
+ * to keep this effect focused on Embla lifecycle only.
+ */
useEffect( () => {
if ( ! emblaRef.current ) {
return;
}
- const viewportEl = emblaRef.current;
+ const viewport = emblaRef.current;
let embla: EmblaCarouselType | undefined;
- const initEmbla = () => {
+ const init = () => {
if ( embla ) {
embla.destroy();
}
- const queryLoopContainer = viewportEl.querySelector(
+ const queryLoopContainer = viewport.querySelector(
'.wp-block-post-template',
) as HTMLElement;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const options = carouselOptions as any;
- embla = EmblaCarousel( viewportEl, {
+ embla = EmblaCarousel( viewport, {
loop: options?.loop ?? false,
dragFree: options?.dragFree ?? false,
containScroll: options?.containScroll || 'trimSnaps',
@@ -119,16 +187,15 @@ export default function Edit( {
container: queryLoopContainer || undefined,
watchDrag: false, // Clicks in slide gaps must not trigger Embla scroll in the editor.
watchSlides: false, // Gutenberg injects block UI nodes into .embla__container; Embla's built-in MutationObserver would call reInit() on those, corrupting slide order and transforms.
- watchResize: false, // Block toolbar appearing on selection can cause a layout shift that triggers an unwanted reInit.
+ watchResize: false, // Replaced by a manual debounced ResizeObserver in useCarouselObservers.
} );
- ( viewportEl as { [EMBLA_KEY]?: typeof embla } )[ EMBLA_KEY ] = embla;
+ ( viewport as { [EMBLA_KEY]?: typeof embla } )[ EMBLA_KEY ] = embla;
+ emblaApiRef.current = embla;
const onSelect = () => {
- const canPrev = embla!.canScrollPrev();
- const canNext = embla!.canScrollNext();
- setCanScrollPrev( canPrev );
- setCanScrollNext( canNext );
+ setCanScrollPrev( embla!.canScrollPrev() );
+ setCanScrollNext( embla!.canScrollNext() );
};
embla.on( 'select', onSelect );
@@ -141,51 +208,47 @@ export default function Edit( {
setEmblaApi( embla );
};
- initEmbla();
+ // Run initial setup.
+ init();
- const observer = new MutationObserver( ( mutations ) => {
- let shouldReInit = false;
+ // Keep ref in sync so observer hooks always call the latest init.
+ initEmblaRef.current = init;
- for ( const mutation of mutations ) {
- const target = mutation.target as HTMLElement;
-
- if ( target.classList.contains( 'wp-block-post-template' ) ) {
- shouldReInit = true;
- break;
+ /**
+ * Prevent native scroll offsets from corrupting Embla transforms.
+ * Gutenberg's scrollIntoView (triggered by List View / Block Tree
+ * selection) sets scrollLeft/scrollTop on the overflow:hidden viewport.
+ * Embla assumes these are always 0, so we reset them immediately.
+ *
+ * Uses a passive listener and defers DOM writes to rAF to avoid
+ * blocking the compositor thread and forcing synchronous reflow.
+ */
+ let scrollResetRafId: number | undefined;
+ const resetNativeScroll = () => {
+ if ( scrollResetRafId ) {
+ return; // Already scheduled
+ }
+ scrollResetRafId = requestAnimationFrame( () => {
+ scrollResetRafId = undefined;
+ if ( viewport.scrollLeft !== 0 ) {
+ viewport.scrollLeft = 0;
}
-
- if (
- mutation.addedNodes.length > 0 &&
- ( target.querySelector( '.wp-block-post-template' ) ||
- Array.from( mutation.addedNodes ).some(
- ( node ) =>
- node instanceof HTMLElement &&
- node.classList.contains( 'wp-block-post-template' ),
- ) )
- ) {
- shouldReInit = true;
- break;
+ if ( viewport.scrollTop !== 0 ) {
+ viewport.scrollTop = 0;
}
- }
-
- if ( shouldReInit ) {
- setTimeout( initEmbla, 10 );
- }
- } );
+ } );
+ };
- observer.observe( viewportEl, {
- childList: true,
- subtree: true,
- } );
+ viewport.addEventListener( 'scroll', resetNativeScroll, { passive: true } );
return () => {
- if ( embla ) {
- embla.destroy();
- }
- if ( observer ) {
- observer.disconnect();
+ if ( scrollResetRafId ) {
+ cancelAnimationFrame( scrollResetRafId );
}
- delete ( viewportEl as { [EMBLA_KEY]?: typeof embla } )[ EMBLA_KEY ];
+ viewport.removeEventListener( 'scroll', resetNativeScroll );
+ embla?.destroy();
+ emblaApiRef.current = undefined;
+ delete ( viewport as { [EMBLA_KEY]?: typeof embla } )[ EMBLA_KEY ];
};
}, [ setEmblaApi, setCanScrollPrev, setCanScrollNext, carouselOptions ] );
diff --git a/tests/phpstan/constants.php b/tests/phpstan/constants.php
index 3c5c4e4..249f733 100644
--- a/tests/phpstan/constants.php
+++ b/tests/phpstan/constants.php
@@ -9,12 +9,31 @@
*/
// WordPress core constants.
-define( 'ABSPATH', '/var/www/html/' );
-define( 'DAY_IN_SECONDS', 86400 );
-define( 'WP_DEBUG', false );
+if ( ! defined( 'ABSPATH' ) ) {
+ define( 'ABSPATH', '/var/www/html/' );
+}
+
+if ( ! defined( 'DAY_IN_SECONDS' ) ) {
+ define( 'DAY_IN_SECONDS', 86400 );
+}
+
+if ( ! defined( 'WP_DEBUG' ) ) {
+ define( 'WP_DEBUG', false );
+}
// Plugin constants.
-define( 'CAROUSEL_KIT_PATH', '/var/www/html/wp-content/plugins/carousel-kit' );
-define( 'CAROUSEL_KIT_URL', 'https://example.com/wp-content/plugins/carousel-kit' );
-define( 'CAROUSEL_KIT_BUILD_PATH', CAROUSEL_KIT_PATH . '/build' );
-define( 'CAROUSEL_KIT_BUILD_URL', CAROUSEL_KIT_URL . '/build' );
+if ( ! defined( 'CAROUSEL_KIT_PATH' ) ) {
+ define( 'CAROUSEL_KIT_PATH', '/var/www/html/wp-content/plugins/carousel-kit' );
+}
+
+if ( ! defined( 'CAROUSEL_KIT_URL' ) ) {
+ define( 'CAROUSEL_KIT_URL', 'https://example.com/wp-content/plugins/carousel-kit' );
+}
+
+if ( ! defined( 'CAROUSEL_KIT_BUILD_PATH' ) ) {
+ define( 'CAROUSEL_KIT_BUILD_PATH', CAROUSEL_KIT_PATH . '/build' );
+}
+
+if ( ! defined( 'CAROUSEL_KIT_BUILD_URL' ) ) {
+ define( 'CAROUSEL_KIT_BUILD_URL', CAROUSEL_KIT_URL . '/build' );
+}
diff --git a/uninstall.php b/uninstall.php
new file mode 100644
index 0000000..2ca0a2a
--- /dev/null
+++ b/uninstall.php
@@ -0,0 +1,57 @@
+ 'ids',
+ 'number' => 0,
+ ]
+ ) ?: [];
+
+ foreach ( $site_ids as $site_id ) {
+ // phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.switch_to_blog_switch_to_blog
+ if ( ! switch_to_blog( (int) $site_id ) ) {
+ continue;
+ }
+
+ uninstall();
+ restore_current_blog();
+ }
+}
+
+/**
+ * The site-specific uninstall function.
+ */
+function uninstall(): void {
+ delete_plugin_data();
+}
+
+/**
+ * Deletes plugin transients and options.
+ */
+function delete_plugin_data(): void {
+ delete_transient( 'carousel_kit_patterns_cache' );
+}
+
+multisite_uninstall();
diff --git a/wp-assets/banner-1544x500.png b/wp-assets/banner-1544x500.png
new file mode 100644
index 0000000..d0adc4f
Binary files /dev/null and b/wp-assets/banner-1544x500.png differ
diff --git a/wp-assets/banner-772x250.png b/wp-assets/banner-772x250.png
new file mode 100644
index 0000000..9ada422
Binary files /dev/null and b/wp-assets/banner-772x250.png differ
diff --git a/wp-assets/icon-128x128.png b/wp-assets/icon-128x128.png
new file mode 100644
index 0000000..a9cb631
Binary files /dev/null and b/wp-assets/icon-128x128.png differ
diff --git a/wp-assets/icon-256x256.png b/wp-assets/icon-256x256.png
new file mode 100644
index 0000000..0c7e7c2
Binary files /dev/null and b/wp-assets/icon-256x256.png differ
diff --git a/wp-assets/screenshot-1.png b/wp-assets/screenshot-1.png
new file mode 100644
index 0000000..05b5b4d
Binary files /dev/null and b/wp-assets/screenshot-1.png differ
diff --git a/wp-assets/screenshot-2.png b/wp-assets/screenshot-2.png
new file mode 100644
index 0000000..319ae5a
Binary files /dev/null and b/wp-assets/screenshot-2.png differ
diff --git a/wp-assets/screenshot-3.png b/wp-assets/screenshot-3.png
new file mode 100644
index 0000000..43f52ae
Binary files /dev/null and b/wp-assets/screenshot-3.png differ
diff --git a/wp-assets/screenshot-4.png b/wp-assets/screenshot-4.png
new file mode 100644
index 0000000..609883e
Binary files /dev/null and b/wp-assets/screenshot-4.png differ