From d7473671b5f505c69159c58531a26869b294abf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Santos?= Date: Fri, 21 Feb 2025 11:45:31 +0000 Subject: [PATCH 1/7] Add QueryLoop integration scaffold --- includes/Plugin.php | 89 +++++++++---------- .../QueryIntegration/QueryLoopIntegration.php | 9 ++ 2 files changed, 49 insertions(+), 49 deletions(-) create mode 100644 includes/QueryIntegration/QueryLoopIntegration.php diff --git a/includes/Plugin.php b/includes/Plugin.php index fd2cfd4..0c58610 100644 --- a/includes/Plugin.php +++ b/includes/Plugin.php @@ -3,6 +3,7 @@ namespace TenUp\ContentConnect; use TenUp\ContentConnect\API; +use TenUp\ContentConnect\QueryIntegration\QueryLoopIntegration; use TenUp\ContentConnect\QueryIntegration\UserQueryIntegration; use TenUp\ContentConnect\QueryIntegration\WPQueryIntegration; use TenUp\ContentConnect\Relationships\DeletedItems; @@ -11,54 +12,33 @@ use TenUp\ContentConnect\UI\BlockEditor; use TenUp\ContentConnect\UI\MetaBox; +/** + * Class Plugin + * + * @package TenUp\ContentConnect + */ class Plugin { /** + * The tables for the plugin. + * * @var array */ public $tables = array(); /** + * The registry instance. + * * @var Registry */ public $registry; - /** - * @var WPQueryIntegration - */ - public $wp_query_integration; - - /** - * @var UserQueryIntegration - */ - public $user_query_integration; - - /** - * @var MetaBox - */ - public $meta_box; - - /** - * @var BlockEditor - */ - public $block_editor; - - /** - * @var Search - */ - public $search; - - /** - * @var DeletedItems - */ - public $deleted_items; - /** * The single instance of the class. * * @var Plugin */ - private static $instance; + protected static $instance; /** * Get class instance. @@ -73,11 +53,23 @@ public static function instance() { return self::$instance; } + /** + * Retrieves the registry instance. + * + * @return Registry + */ public function get_registry() { return $this->registry; } + /** + * Retrieves a table. + * + * @param string $table The table to retrieve. + * @return PostToPost|PostToUser|bool + */ public function get_table( $table ) { + if ( isset( $this->tables[ $table ] ) ) { return $this->tables[ $table ]; } @@ -85,28 +77,24 @@ public function get_table( $table ) { return false; } + /** + * Sets up the plugin. + * + * @return void + */ public function setup() { $this->register_tables(); $this->registry = new Registry(); $this->registry->setup(); - $this->wp_query_integration = new WPQueryIntegration(); - $this->wp_query_integration->setup(); - - $this->user_query_integration = new UserQueryIntegration(); - $this->user_query_integration->setup(); - - $this->meta_box = new MetaBox(); - $this->meta_box->setup(); - - $this->block_editor = new BlockEditor(); - $this->block_editor->setup(); - - $this->deleted_items = new DeletedItems(); - $this->deleted_items->setup(); - - $routes = array( + $modules = array( + new WPQueryIntegration(), + new UserQueryIntegration(), + new QueryLoopIntegration(), + new MetaBox(), + new BlockEditor(), + new DeletedItems(), new API\V1\Search(), new API\V2\Post\Field\Relationships(), new API\V2\Post\Route\Relationships(), @@ -114,8 +102,11 @@ public function setup() { new API\V2\Post\Route\Search(), ); - foreach ( $routes as $route ) { - $route->setup(); + foreach ( $modules as $module ) { + + if ( method_exists( $module, 'setup' ) ) { + $module->setup(); + } } add_action( 'init', array( $this, 'init' ), 100 ); diff --git a/includes/QueryIntegration/QueryLoopIntegration.php b/includes/QueryIntegration/QueryLoopIntegration.php new file mode 100644 index 0000000..8dd0553 --- /dev/null +++ b/includes/QueryIntegration/QueryLoopIntegration.php @@ -0,0 +1,9 @@ + Date: Fri, 21 Feb 2025 17:05:14 +0000 Subject: [PATCH 2/7] Rename class for clarity --- includes/Plugin.php | 4 ++-- .../{QueryLoopIntegration.php => QueryBlockIntegration.php} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename includes/QueryIntegration/{QueryLoopIntegration.php => QueryBlockIntegration.php} (75%) diff --git a/includes/Plugin.php b/includes/Plugin.php index 02fc6af..df09142 100644 --- a/includes/Plugin.php +++ b/includes/Plugin.php @@ -3,7 +3,7 @@ namespace TenUp\ContentConnect; use TenUp\ContentConnect\API; -use TenUp\ContentConnect\QueryIntegration\QueryLoopIntegration; +use TenUp\ContentConnect\QueryIntegration\QueryBlockIntegration; use TenUp\ContentConnect\QueryIntegration\UserQueryIntegration; use TenUp\ContentConnect\QueryIntegration\WPQueryIntegration; use TenUp\ContentConnect\Relationships\DeletedItems; @@ -91,8 +91,8 @@ public function setup() { $modules = array( new WPQueryIntegration(), new UserQueryIntegration(), - new QueryLoopIntegration(), new MetaBox(), // @deprecated remove in 1.7.0 + new QueryBlockIntegration(), new BlockEditor(), new DeletedItems(), new API\V1\Search(), // @deprecated remove in 1.7.0 diff --git a/includes/QueryIntegration/QueryLoopIntegration.php b/includes/QueryIntegration/QueryBlockIntegration.php similarity index 75% rename from includes/QueryIntegration/QueryLoopIntegration.php rename to includes/QueryIntegration/QueryBlockIntegration.php index 8dd0553..308aa21 100644 --- a/includes/QueryIntegration/QueryLoopIntegration.php +++ b/includes/QueryIntegration/QueryBlockIntegration.php @@ -2,7 +2,7 @@ namespace TenUp\ContentConnect\QueryIntegration; -class QueryLoopIntegration { +class QueryBlockIntegration { public function setup() { } From 31d02854dca37cf0ea4ebb46a0ed0ccd9201e116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Santos?= Date: Fri, 14 Mar 2025 23:31:34 +0000 Subject: [PATCH 3/7] Add query loop block extension --- .eslintrc | 5 + assets/js/block-extensions/core-query.js | 121 +++++++++++++++ assets/js/block-extensions/index.js | 1 + assets/js/components/relationships-panel.tsx | 3 +- assets/js/index.ts | 3 +- package-lock.json | 148 +++++-------------- package.json | 3 +- 7 files changed, 171 insertions(+), 113 deletions(-) create mode 100644 .eslintrc create mode 100644 assets/js/block-extensions/core-query.js create mode 100644 assets/js/block-extensions/index.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..d3ad2ab --- /dev/null +++ b/.eslintrc @@ -0,0 +1,5 @@ +{ + "extends": [ + "@10up/eslint-config/wordpress" + ] +} diff --git a/assets/js/block-extensions/core-query.js b/assets/js/block-extensions/core-query.js new file mode 100644 index 0000000..4200261 --- /dev/null +++ b/assets/js/block-extensions/core-query.js @@ -0,0 +1,121 @@ +/* eslint-disable import/extensions */ +/** + * External dependencies + */ +import { registerBlockExtension, ContentPicker } from '@10up/block-components'; + +/** + * WordPress dependencies + */ +import { ToggleControl, PanelBody, Notice } from '@wordpress/components'; +import { InspectorControls } from '@wordpress/block-editor'; +import { useSelect } from '@wordpress/data'; +import { __ } from '@wordpress/i18n'; +import { store as coreStore } from '@wordpress/core-data'; +import { store as editorStore } from '@wordpress/editor'; +import { useMemo } from '@wordpress/element'; + +/** + * Internal dependencies + */ +import { store } from '../store'; + +const BlockEdit = ({ setAttributes, attributes }) => { + const { + query: { postType: toPostType }, + showRelated, + fromPosts, + } = attributes; + + const { postTypes, currentPostId, hasPostRelationships } = useSelect( + (select) => { + const { getPostTypes } = select(coreStore); + const excludedPostTypes = ['attachment']; + const filteredPostTypes = getPostTypes({ per_page: -1 })?.filter( + ({ viewable, slug }) => viewable && !excludedPostTypes.includes(slug), + ); + + const postId = select(editorStore).getCurrentPostId(); + const postRelationships = select(store).getRelationships(fromPosts?.[0]?.id || postId); + const postTypeRelationships = Object.values(postRelationships).filter( + (relationship) => + Array.isArray(relationship.post_type) && + relationship.post_type.includes(toPostType), + ); + + return { + postTypes: filteredPostTypes, + currentPostId: postId, + hasPostRelationships: postTypeRelationships.length > 0, + }; + }, + [toPostType, fromPosts], + ); + + const postTypeSlugs = useMemo(() => (postTypes || []).map(({ slug }) => slug), [postTypes]); + + return ( + + + + setAttributes({ + showRelated: value, + sourcePostId: currentPostId, + }) + } + help={__( + 'If enabled, only items related to the current post will be shown.', + 'tenup-content-connect', + )} + __nextHasNoMarginBottom + /> + {!hasPostRelationships && ( + + {__( + 'The selected post type does not support any relationships. Please try a different post type.', + 'tenup-content-connect', + )} + + )} + {showRelated && ( + <> + + setAttributes({ fromPosts: ids.length ? ids : undefined }) + } + mode="post" + content={fromPosts} + contentTypes={postTypeSlugs} + /> + + {__( + 'Select a different from post from where to pull related items. If empty, the current post will be used.', + 'tenup-content-connect', + )} + + + )} + + + ); +}; + +registerBlockExtension('core/query', { + extensionName: 'content-connect', + attributes: { + showRelated: { + type: 'boolean', + default: false, + }, + fromPosts: { + type: 'array', + default: [], + }, + }, + classNameGenerator: () => '', + Edit: BlockEdit, +}); diff --git a/assets/js/block-extensions/index.js b/assets/js/block-extensions/index.js new file mode 100644 index 0000000..3d4461d --- /dev/null +++ b/assets/js/block-extensions/index.js @@ -0,0 +1 @@ +import './core-query'; diff --git a/assets/js/components/relationships-panel.tsx b/assets/js/components/relationships-panel.tsx index be4b24b..2bc5e55 100644 --- a/assets/js/components/relationships-panel.tsx +++ b/assets/js/components/relationships-panel.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { useSelect } from '@wordpress/data'; -import { store as editorStore } from '@wordpress/editor'; -import { PluginDocumentSettingPanel } from '@wordpress/edit-post'; +import { store as editorStore, PluginDocumentSettingPanel } from '@wordpress/editor'; import { store } from '../store'; import { RelationshipManager } from './relationship-manager'; diff --git a/assets/js/index.ts b/assets/js/index.ts index 902b1dd..4490d36 100644 --- a/assets/js/index.ts +++ b/assets/js/index.ts @@ -1,9 +1,10 @@ import './store'; import './hooks'; +import './block-extensions'; import { registerPlugin } from '@wordpress/plugins'; import { RelationshipsPanel } from './components/relationships-panel'; -registerPlugin('wp-content-connect', { +registerPlugin('content-connect', { render: RelationshipsPanel, }); diff --git a/package-lock.json b/package-lock.json index 4699ecc..a004a11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,8 @@ "@wordpress/edit-post": "^8.18.0", "@wordpress/editor": "^14.18.0", "@wordpress/html-entities": "^4.18.0", - "@wordpress/url": "^4.18.0" + "@wordpress/url": "^4.18.0", + "prettier": "^3.5.3" } }, "node_modules/@10up/babel-preset-default": { @@ -1506,14 +1507,14 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.9.tgz", - "integrity": "sha512-Jf+8y9wXQbbxvVYTM8gO5oEF2POdNji0NMltEkG7FtmzD9PVz7/lxpqSdTvwsjTMU5HIHuDVNf2SOxLkWi+wPQ==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.26.5", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, @@ -1524,18 +1525,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime/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==", - "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/@babel/plugin-transform-shorthand-properties": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", @@ -5623,6 +5612,14 @@ "node": ">=14" } }, + "node_modules/@wordpress/babel-preset-default/node_modules/@wordpress/warning": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.58.0.tgz", + "integrity": "sha512-9bZlORhyMY2nbWozeyC5kqJsFzEPP4DCLhGmjtbv+YWGHttUrxUZEfrKdqO+rUODA8rP5zeIly1nCQOUnkw4Lg==", + "engines": { + "node": ">=12" + } + }, "node_modules/@wordpress/blob": { "version": "4.18.0", "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-4.18.0.tgz", @@ -5726,16 +5723,6 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/block-editor/node_modules/@wordpress/warning": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.18.0.tgz", - "integrity": "sha512-Y58A1D38PJbQzFZXokL+4rACzs5Vp5cZMZc/9J+QOYStJdy/xEDQttbhte2P7kq0yF3EUZDC0QnG8RsIV09WSQ==", - "dev": true, - "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" - } - }, "node_modules/@wordpress/block-library": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-9.18.0.tgz", @@ -5899,16 +5886,6 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/blocks/node_modules/@wordpress/warning": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.18.0.tgz", - "integrity": "sha512-Y58A1D38PJbQzFZXokL+4rACzs5Vp5cZMZc/9J+QOYStJdy/xEDQttbhte2P7kq0yF3EUZDC0QnG8RsIV09WSQ==", - "dev": true, - "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" - } - }, "node_modules/@wordpress/blocks/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -6041,16 +6018,6 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/components/node_modules/@wordpress/warning": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.18.0.tgz", - "integrity": "sha512-Y58A1D38PJbQzFZXokL+4rACzs5Vp5cZMZc/9J+QOYStJdy/xEDQttbhte2P7kq0yF3EUZDC0QnG8RsIV09WSQ==", - "dev": true, - "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" - } - }, "node_modules/@wordpress/components/node_modules/path-to-regexp": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", @@ -6202,16 +6169,6 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/warning": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.18.0.tgz", - "integrity": "sha512-Y58A1D38PJbQzFZXokL+4rACzs5Vp5cZMZc/9J+QOYStJdy/xEDQttbhte2P7kq0yF3EUZDC0QnG8RsIV09WSQ==", - "dev": true, - "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" - } - }, "node_modules/@wordpress/core-data/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -6307,16 +6264,6 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/dataviews/node_modules/@wordpress/warning": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.18.0.tgz", - "integrity": "sha512-Y58A1D38PJbQzFZXokL+4rACzs5Vp5cZMZc/9J+QOYStJdy/xEDQttbhte2P7kq0yF3EUZDC0QnG8RsIV09WSQ==", - "dev": true, - "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" - } - }, "node_modules/@wordpress/date": { "version": "5.18.0", "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-5.18.0.tgz", @@ -6496,16 +6443,6 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/edit-post/node_modules/@wordpress/warning": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.18.0.tgz", - "integrity": "sha512-Y58A1D38PJbQzFZXokL+4rACzs5Vp5cZMZc/9J+QOYStJdy/xEDQttbhte2P7kq0yF3EUZDC0QnG8RsIV09WSQ==", - "dev": true, - "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" - } - }, "node_modules/@wordpress/editor": { "version": "14.18.0", "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-14.18.0.tgz", @@ -6581,16 +6518,6 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/editor/node_modules/@wordpress/warning": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.18.0.tgz", - "integrity": "sha512-Y58A1D38PJbQzFZXokL+4rACzs5Vp5cZMZc/9J+QOYStJdy/xEDQttbhte2P7kq0yF3EUZDC0QnG8RsIV09WSQ==", - "dev": true, - "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" - } - }, "node_modules/@wordpress/editor/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -6989,16 +6916,6 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/fields/node_modules/@wordpress/warning": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.18.0.tgz", - "integrity": "sha512-Y58A1D38PJbQzFZXokL+4rACzs5Vp5cZMZc/9J+QOYStJdy/xEDQttbhte2P7kq0yF3EUZDC0QnG8RsIV09WSQ==", - "dev": true, - "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" - } - }, "node_modules/@wordpress/hooks": { "version": "4.18.0", "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.18.0.tgz", @@ -7977,11 +7894,13 @@ } }, "node_modules/@wordpress/warning": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.58.0.tgz", - "integrity": "sha512-9bZlORhyMY2nbWozeyC5kqJsFzEPP4DCLhGmjtbv+YWGHttUrxUZEfrKdqO+rUODA8rP5zeIly1nCQOUnkw4Lg==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.20.0.tgz", + "integrity": "sha512-IQRvlWwNWO6kncZ/qQEX/KCvsrm/0FIcuCXrTXlGP4OslRG7XtU9xs2lOP34Y6G3onMwhpD8mXFUK7udq305EQ==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, "node_modules/@wordpress/widgets": { @@ -17274,10 +17193,9 @@ } }, "node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", - "peer": true, + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "bin": { "prettier": "bin/prettier.cjs" }, @@ -19165,6 +19083,14 @@ "websocket-driver": "^0.7.4" } }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -20692,11 +20618,15 @@ } }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, "node_modules/v8-to-istanbul": { diff --git a/package.json b/package.json index 0d2d17e..6ccdbd6 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "@wordpress/edit-post": "^8.18.0", "@wordpress/editor": "^14.18.0", "@wordpress/html-entities": "^4.18.0", - "@wordpress/url": "^4.18.0" + "@wordpress/url": "^4.18.0", + "prettier": "^3.5.3" } } From 860ac4efda169a32ea1184e7f3df61e775be2dfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Santos?= Date: Fri, 14 Mar 2025 23:36:21 +0000 Subject: [PATCH 4/7] Update help texts --- assets/js/block-extensions/core-query.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/js/block-extensions/core-query.js b/assets/js/block-extensions/core-query.js index 4200261..aaed59c 100644 --- a/assets/js/block-extensions/core-query.js +++ b/assets/js/block-extensions/core-query.js @@ -49,7 +49,7 @@ const BlockEdit = ({ setAttributes, attributes }) => { hasPostRelationships: postTypeRelationships.length > 0, }; }, - [toPostType, fromPosts], + [toPostType, fromPosts?.length], ); const postTypeSlugs = useMemo(() => (postTypes || []).map(({ slug }) => slug), [postTypes]); @@ -68,7 +68,7 @@ const BlockEdit = ({ setAttributes, attributes }) => { }) } help={__( - 'If enabled, only items related to the current post will be shown.', + 'When enabled, only items related to the current post will be displayed.', 'tenup-content-connect', )} __nextHasNoMarginBottom @@ -76,7 +76,7 @@ const BlockEdit = ({ setAttributes, attributes }) => { {!hasPostRelationships && ( {__( - 'The selected post type does not support any relationships. Please try a different post type.', + 'No relationships exist for the selected post type. Try selecting a different post type.', 'tenup-content-connect', )} @@ -93,7 +93,7 @@ const BlockEdit = ({ setAttributes, attributes }) => { /> {__( - 'Select a different from post from where to pull related items. If empty, the current post will be used.', + 'Select a different post as the source for related items. If none is selected, the current post will be used.', 'tenup-content-connect', )} From fad2d96059781847fa38ae7ad25c2f69173cb6a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Santos?= Date: Mon, 17 Mar 2025 12:48:19 +0000 Subject: [PATCH 5/7] Update query block extension --- assets/js/block-extensions/core-query.js | 150 +- package-lock.json | 2301 ++++++++++++++-------- package.json | 8 +- 3 files changed, 1569 insertions(+), 890 deletions(-) diff --git a/assets/js/block-extensions/core-query.js b/assets/js/block-extensions/core-query.js index aaed59c..260b79b 100644 --- a/assets/js/block-extensions/core-query.js +++ b/assets/js/block-extensions/core-query.js @@ -1,13 +1,21 @@ +/* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable import/extensions */ /** * External dependencies */ +import { v4 as uuidv4 } from 'uuid'; import { registerBlockExtension, ContentPicker } from '@10up/block-components'; /** * WordPress dependencies */ -import { ToggleControl, PanelBody, Notice } from '@wordpress/components'; +import { + ToggleControl, + PanelBody, + Notice, + SelectControl, + BaseControl, +} from '@wordpress/components'; import { InspectorControls } from '@wordpress/block-editor'; import { useSelect } from '@wordpress/data'; import { __ } from '@wordpress/i18n'; @@ -22,12 +30,19 @@ import { store } from '../store'; const BlockEdit = ({ setAttributes, attributes }) => { const { - query: { postType: toPostType }, + query: { postType: queriedPostType }, showRelated, - fromPosts, + relationshipName, + sourcePosts, } = attributes; - const { postTypes, currentPostId, hasPostRelationships } = useSelect( + const { + postTypes, + postTypeRelationships, + hasPostRelationships, + currentPostId, + currentPostType, + } = useSelect( (select) => { const { getPostTypes } = select(coreStore); const excludedPostTypes = ['attachment']; @@ -35,69 +50,116 @@ const BlockEdit = ({ setAttributes, attributes }) => { ({ viewable, slug }) => viewable && !excludedPostTypes.includes(slug), ); - const postId = select(editorStore).getCurrentPostId(); - const postRelationships = select(store).getRelationships(fromPosts?.[0]?.id || postId); + const currentPostId = select(editorStore).getCurrentPostId(); + const currentPostType = select(editorStore).getCurrentPostType(); + const postRelationships = select(store).getRelationships( + sourcePosts?.[0]?.id || currentPostId, + ); const postTypeRelationships = Object.values(postRelationships).filter( (relationship) => Array.isArray(relationship.post_type) && - relationship.post_type.includes(toPostType), + relationship.post_type.includes(queriedPostType), ); return { postTypes: filteredPostTypes, - currentPostId: postId, + postTypeRelationships, hasPostRelationships: postTypeRelationships.length > 0, + currentPostId, + currentPostType, }; }, - [toPostType, fromPosts?.length], + [queriedPostType, sourcePosts?.length], + ); + + const postTypesSlugs = useMemo(() => (postTypes || []).map(({ slug }) => slug), [postTypes]); + + const postTypeRelationshipsOptions = useMemo( + () => + postTypeRelationships.map((relationship) => ({ + value: relationship.rel_name, + label: relationship.labels.name, + })), + [postTypeRelationships], + ); + + const postTypeRelationshipsControlLabel = __('Relationship', 'tenup-content-connect'); + const postTypeRelationshipsControlHelp = __( + 'Select a relationship to determine how related items are retrieved.', + 'tenup-content-connect', + ); + const sourcePostsControlHelp = __( + 'Choose the post from which related items will be pulled. Defaults to the current post.', + 'tenup-content-connect', ); - const postTypeSlugs = useMemo(() => (postTypes || []).map(({ slug }) => slug), [postTypes]); + const onPostTypeRelationshipChange = (value) => { + setAttributes({ relationshipName: value }); + }; + + const resetAll = () => { + setAttributes({ + showRelated: false, + sourcePosts: undefined, + relationshipName: undefined, + }); + }; return ( - setAttributes({ - showRelated: value, - sourcePostId: currentPostId, - }) - } - help={__( - 'When enabled, only items related to the current post will be displayed.', - 'tenup-content-connect', - )} - __nextHasNoMarginBottom + onChange={(value) => { + if (!value) { + resetAll(); + } else { + setAttributes({ + showRelated: value, + sourcePosts: [ + { + id: currentPostId, + type: currentPostType, + uuid: uuidv4(), + }, + ], + }); + } + }} /> - {!hasPostRelationships && ( - - {__( - 'No relationships exist for the selected post type. Try selecting a different post type.', - 'tenup-content-connect', - )} - - )} {showRelated && ( - <> + - setAttributes({ fromPosts: ids.length ? ids : undefined }) + setAttributes({ sourcePosts: ids.length ? ids : undefined }) } mode="post" - content={fromPosts} - contentTypes={postTypeSlugs} + content={sourcePosts} + contentTypes={postTypesSlugs} + singlePickedLabel={__('Selected post:', 'tenup-content-connect')} + multiPickedLabel={__('Selected posts:', 'tenup-content-connect')} /> - - {__( - 'Select a different post as the source for related items. If none is selected, the current post will be used.', - 'tenup-content-connect', - )} - - + + )} + {showRelated && postTypeRelationshipsOptions.length > 1 && ( + + )} + {showRelated && !hasPostRelationships && ( + + {__( + 'No relationships exist for the selected post type or post. Try selecting a different post or post type.', + 'tenup-content-connect', + )} + )} @@ -111,9 +173,11 @@ registerBlockExtension('core/query', { type: 'boolean', default: false, }, - fromPosts: { + sourcePosts: { type: 'array', - default: [], + }, + relationshipName: { + type: 'string', }, }, classNameGenerator: () => '', diff --git a/package-lock.json b/package-lock.json index a004a11..17366bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,9 @@ "version": "1.6.0", "license": "GPL-3.0-or-later", "dependencies": { - "@10up/block-components": "dev-develop", - "10up-toolkit": "^6.4.0" + "@10up/block-components": "^1.20.0", + "10up-toolkit": "^6.4.0", + "uuid": "^11.1.0" }, "devDependencies": { "@wordpress/api-fetch": "^7.18.0", @@ -18,14 +19,13 @@ "@wordpress/edit-post": "^8.18.0", "@wordpress/editor": "^14.18.0", "@wordpress/html-entities": "^4.18.0", - "@wordpress/url": "^4.18.0", - "prettier": "^3.5.3" + "@wordpress/url": "^4.18.0" } }, "node_modules/@10up/babel-preset-default": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@10up/babel-preset-default/-/babel-preset-default-2.1.1.tgz", - "integrity": "sha512-fUXv3i/vYTqX/8Mf/IBpL4hIIB4RWgLjVnZ2RCg4gXpX7Fxi1106qV77ehQxJFmbeSRQU7Xr7fW8rDhJwWOocA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@10up/babel-preset-default/-/babel-preset-default-2.1.2.tgz", + "integrity": "sha512-HapG7JTmk6CG0iOGxvw4bVL6M0TcZHW5Ck6nm+bz4AahnOwh87rF3+LUtWs1Nzw6Vlu6zbJoRUflt1GPcQ14/Q==", "peer": true, "dependencies": { "@babel/core": "^7.23.7", @@ -79,15 +79,15 @@ } }, "node_modules/@10up/eslint-config": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@10up/eslint-config/-/eslint-config-4.1.1.tgz", - "integrity": "sha512-E4rW+zYbM2olfvYfSXPkA0upgNbMPOWbSUCVn8fYWXANXEEIHIEb74vmpZLMfCwWRzMG2+gz5/gNm6q+w8LN+Q==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@10up/eslint-config/-/eslint-config-4.1.2.tgz", + "integrity": "sha512-csIOSPxWUi30NxUkwhLTxRnEp2o6n+8/uNdfb7+n8c3GDI7HfOozaQcrIWx163U7XDfLQ/dAi1P9QkMp2xCLog==", "peer": true, "dependencies": { - "@10up/babel-preset-default": "^2.1.1" + "@10up/babel-preset-default": "^2.1.2" }, "engines": { - "node": "^16 || >=18" + "node": ">=16" }, "peerDependencies": { "@babel/core": "^7.23.7", @@ -113,9 +113,9 @@ } }, "node_modules/@10up/stylelint-config": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@10up/stylelint-config/-/stylelint-config-3.0.0.tgz", - "integrity": "sha512-os+zrNq+SXV5yq29hBkUVMxoftk3IoTWNjBpFAnC8ilvkBMfQALjMgQrlOmtNvEoK9pOj9IC3VivnWKwAW3GrQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@10up/stylelint-config/-/stylelint-config-3.0.1.tgz", + "integrity": "sha512-SjDjdNzreFv9pfSQDpzaUTJcarrWnkW9S++48i0xMdFHDFnBIFn5awDdYm+u2TEsJ5veXS/IYwhL2r06JeIIKw==", "peer": true, "dependencies": { "stylelint-config-recommended": "^13.0.0", @@ -124,7 +124,7 @@ "stylelint-stylistic": "^0.4.3" }, "engines": { - "node": "^16.0.0 || ^18.0.0 || ^20.0.0" + "node": ">=16" }, "peerDependencies": { "stylelint": "^15.0.0" @@ -202,20 +202,20 @@ } }, "node_modules/@babel/core": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", - "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", + "@babel/generator": "^7.26.10", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -231,9 +231,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.8.tgz", - "integrity": "sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.10.tgz", + "integrity": "sha512-QsfQZr4AiLpKqn7fz+j7SN+f43z2DZCgGyYbNJ2vJOqKfG4E6MZer1+jqGZqKJaxq/gdO2DC/nUu45+pOL5p2Q==", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -248,12 +248,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", - "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", "dependencies": { - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -480,23 +480,23 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", - "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", + "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", "dependencies": { "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/types": "^7.26.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", - "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", + "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", "dependencies": { - "@babel/types": "^7.26.9" + "@babel/types": "^7.26.10" }, "bin": { "parser": "bin/babel-parser.js" @@ -1806,9 +1806,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", - "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1830,15 +1830,15 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", - "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", + "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/parser": "^7.26.9", + "@babel/generator": "^7.26.10", + "@babel/parser": "^7.26.10", "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/types": "^7.26.10", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1847,9 +1847,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", - "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", + "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" @@ -2945,14 +2945,6 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, - "node_modules/@emotion/babel-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@emotion/cache": { "version": "11.14.0", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", @@ -3095,10 +3087,70 @@ "node": ">=16" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", + "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", + "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", + "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", + "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", + "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", "cpu": [ "arm64" ], @@ -3110,10 +3162,310 @@ "node": ">=18" } }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", + "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", + "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", + "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", + "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", + "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", + "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", + "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", + "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", + "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", + "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", + "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", + "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", + "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", + "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", + "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", + "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", + "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", + "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -3807,51 +4159,279 @@ "node": ">= 8" } }, - "node_modules/@parcel/watcher": { + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", - "hasInstallScript": true, + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], "optional": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, + "os": [ + "win32" + ], "engines": { "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-darwin-arm64": { + "node_modules/@parcel/watcher-win32-x64": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", "cpu": [ - "arm64" + "x64" ], "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">= 10.0.0" @@ -3919,6 +4499,14 @@ } } }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, "node_modules/@polka/url": { "version": "1.0.0-next.28", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", @@ -4349,6 +4937,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/@shopify/web-worker/-/web-worker-6.4.0.tgz", "integrity": "sha512-RvY1mgRyAqawFiYBvsBkek2pVK4GVpV9mmhWFCZXwx01usxXd2HMhKNTFeRYhSp29uoUcfBlKZAwCwQzt826tg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@remote-ui/rpc": "^1.2.5" @@ -4914,9 +5503,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", - "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", "dependencies": { "undici-types": "~6.20.0" } @@ -5031,9 +5620,9 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" }, "node_modules/@types/ws": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", - "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==", "dependencies": { "@types/node": "*" } @@ -5501,14 +6090,14 @@ } }, "node_modules/@wordpress/a11y": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-4.18.0.tgz", - "integrity": "sha512-aF/E6VtGHRUuNX4rJ8dJMNHKrYKsKoYVXI8n1oYg+Tbsq4fye5UJ3kLEGWLYoA8Yvvgsi2bvJ44IpBB4OhNCFg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-4.20.0.tgz", + "integrity": "sha512-hyFKC3D1o0Cvy1HeFgujsuW9gTrwVL4DVIfnQytG2+gMFaDyux4Qmzyg2e3k71BKlHn7J28Q3i0xNqC2k7ZoFw==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/dom-ready": "^4.18.0", - "@wordpress/i18n": "^5.18.0" + "@wordpress/dom-ready": "^4.20.0", + "@wordpress/i18n": "^5.20.0" }, "engines": { "node": ">=18.12.0", @@ -5528,14 +6117,14 @@ } }, "node_modules/@wordpress/api-fetch": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-7.18.0.tgz", - "integrity": "sha512-mhzSIDRon8OWa1PLqo1gW35mfIkmjSXHteFJAmGHx7j3b/2+pa3THia8o2xYFXx+A0KWm0A3VOCuNUPp9q7aPg==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-7.20.0.tgz", + "integrity": "sha512-EeV8xaagQohoWdiVGtNxszGvWeTkkpmhm8EsAC6KM8Cb0qZminGKy0eDn33voD14UZHhNcm2bc2Ka9WZWnlIYQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/i18n": "^5.18.0", - "@wordpress/url": "^4.18.0" + "@wordpress/i18n": "^5.20.0", + "@wordpress/url": "^4.20.0" }, "engines": { "node": ">=18.12.0", @@ -5555,9 +6144,9 @@ } }, "node_modules/@wordpress/autop": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-4.18.0.tgz", - "integrity": "sha512-u+Gb8k41Af1TBd2967LSMN634acHyC2PlGCE5VpzrPInApb6REOwhf2nLh1ZUO1CC1f03pIyhqohhmNI/DwWrQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-4.20.0.tgz", + "integrity": "sha512-4IjY1sB/nzBciuz5NYsSqgbVEO185Z5YjmLhnJsk3kM1ub5UaLvA5f9TiJZuBcalJC3umA6GHqlF98owAREzbA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -5621,9 +6210,9 @@ } }, "node_modules/@wordpress/blob": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-4.18.0.tgz", - "integrity": "sha512-L9mcc/4aDgRuTSQmEfbwkVKWzTyvyHAw2FT6fqTiTzSOjQRtgndPMMEPhda29scEE79Hbx5+mZdoW41J32bnOQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-4.20.0.tgz", + "integrity": "sha512-mwzQjdx8vTGBn61s9b87lwp2idyENblN3OlE04XSBXjKpf8G6fVMH9/7TKsfhqZ40oD1zLvAE8zdbd1KZw+ViQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -5646,47 +6235,47 @@ } }, "node_modules/@wordpress/block-editor": { - "version": "14.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-14.13.0.tgz", - "integrity": "sha512-KRUWTHGM5jTzFrelG8oqHle5TiU5m4zB22d70mKMc2i4GqJKJ4Hd0nRJ/Z7vJmSCvR5UKV7f85kV4jhg1YNWlw==", + "version": "14.15.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-14.15.0.tgz", + "integrity": "sha512-cZm1c2tUQfBAAig+BYD7XY9zSNdn25o7s8mUcoslUTiTaEwXtB+T+r/FPtv4fLLBYWtFjo4LiQ2v18sl4QgmHQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", "@emotion/react": "^11.7.1", "@emotion/styled": "^11.6.0", "@react-spring/web": "^9.4.5", - "@wordpress/a11y": "^4.18.0", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/blob": "^4.18.0", - "@wordpress/block-serialization-default-parser": "^5.18.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/commands": "^1.18.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/date": "^5.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/dom": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/escape-html": "^3.18.0", - "@wordpress/hooks": "^4.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/is-shallow-equal": "^5.18.0", - "@wordpress/keyboard-shortcuts": "^5.18.0", - "@wordpress/keycodes": "^4.18.0", - "@wordpress/notices": "^5.18.0", - "@wordpress/preferences": "^4.18.0", - "@wordpress/priority-queue": "^3.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/rich-text": "^7.18.0", - "@wordpress/style-engine": "^2.18.0", - "@wordpress/token-list": "^3.18.0", - "@wordpress/upload-media": "^0.3.0", - "@wordpress/url": "^4.18.0", - "@wordpress/warning": "^3.18.0", - "@wordpress/wordcount": "^4.18.0", + "@wordpress/a11y": "^4.20.0", + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/blob": "^4.20.0", + "@wordpress/block-serialization-default-parser": "^5.20.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/commands": "^1.20.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/date": "^5.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/dom": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/escape-html": "^3.20.0", + "@wordpress/hooks": "^4.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/is-shallow-equal": "^5.20.0", + "@wordpress/keyboard-shortcuts": "^5.20.0", + "@wordpress/keycodes": "^4.20.0", + "@wordpress/notices": "^5.20.0", + "@wordpress/preferences": "^4.20.0", + "@wordpress/priority-queue": "^3.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/rich-text": "^7.20.0", + "@wordpress/style-engine": "^2.20.0", + "@wordpress/token-list": "^3.20.0", + "@wordpress/upload-media": "^0.5.0", + "@wordpress/url": "^4.20.0", + "@wordpress/warning": "^3.20.0", + "@wordpress/wordcount": "^4.20.0", "change-case": "^4.1.2", "clsx": "^2.1.1", "colord": "^2.7.0", @@ -5724,45 +6313,45 @@ } }, "node_modules/@wordpress/block-library": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-9.18.0.tgz", - "integrity": "sha512-TCEHZa38oa627cfiX9PmCtA6NiHKCadTC9tHaze92QK5ucgJaoGmCx/C4m8q9zuys8nWMsPpDKdsEgfPHgle+Q==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-9.20.0.tgz", + "integrity": "sha512-S/RIMgZYapQxiBU/BMgdBNufbDSxiloqlroMGSrMO/4zOwddlSuRPDCcigfekmujsw6raVlNaa17walBeBVOQg==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/a11y": "^4.18.0", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/autop": "^4.18.0", - "@wordpress/blob": "^4.18.0", - "@wordpress/block-editor": "^14.13.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/core-data": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/date": "^5.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/dom": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/escape-html": "^3.18.0", - "@wordpress/hooks": "^4.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/interactivity": "^6.18.0", - "@wordpress/interactivity-router": "^2.18.0", - "@wordpress/keyboard-shortcuts": "^5.18.0", - "@wordpress/keycodes": "^4.18.0", - "@wordpress/notices": "^5.18.0", - "@wordpress/patterns": "^2.18.0", - "@wordpress/primitives": "^4.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/reusable-blocks": "^5.18.0", - "@wordpress/rich-text": "^7.18.0", - "@wordpress/server-side-render": "^5.18.0", - "@wordpress/url": "^4.18.0", - "@wordpress/viewport": "^6.18.0", - "@wordpress/wordcount": "^4.18.0", + "@wordpress/a11y": "^4.20.0", + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/autop": "^4.20.0", + "@wordpress/blob": "^4.20.0", + "@wordpress/block-editor": "^14.15.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/core-data": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/date": "^5.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/dom": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/escape-html": "^3.20.0", + "@wordpress/hooks": "^4.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/interactivity": "^6.20.0", + "@wordpress/interactivity-router": "^2.20.0", + "@wordpress/keyboard-shortcuts": "^5.20.0", + "@wordpress/keycodes": "^4.20.0", + "@wordpress/notices": "^5.20.0", + "@wordpress/patterns": "^2.20.0", + "@wordpress/primitives": "^4.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/reusable-blocks": "^5.20.0", + "@wordpress/rich-text": "^7.20.0", + "@wordpress/server-side-render": "^5.20.0", + "@wordpress/url": "^4.20.0", + "@wordpress/viewport": "^6.20.0", + "@wordpress/wordcount": "^4.20.0", "change-case": "^4.1.2", "clsx": "^2.1.1", "colord": "^2.7.0", @@ -5808,9 +6397,9 @@ } }, "node_modules/@wordpress/block-serialization-default-parser": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-5.18.0.tgz", - "integrity": "sha512-ZviHll60ii6JDEhDV6EAuPd/utK2RihS2r3YCLFaQBaDrZ2xRMsL8Gaz8otCea/OiNxGzHW9A/O+rL6lwogLDw==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-5.20.0.tgz", + "integrity": "sha512-qe/1sWDTZPqtRqSFSBwBzmEDfktgdinA5PPtQKxm/jGryDVZW2g9lFo/gB+4zBp05gXf9+dOWuFu71VeqVJluA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -5833,27 +6422,27 @@ } }, "node_modules/@wordpress/blocks": { - "version": "14.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-14.7.0.tgz", - "integrity": "sha512-MQm52Mbr6mjOk949qKbA7kPwwpn80usFSYYy7THKZKXwk1DvxzrUUMWrO8OsgSp2TE9lnpGVVL3/O8PrzjWduA==", + "version": "14.9.0", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-14.9.0.tgz", + "integrity": "sha512-ytT9aFiSvkoW7WyFnLqR94M+NxkTyZDvcORyZxeeWJXPhPv91w6ZRQmq1NTtDp/94p1+9oD4i+VVwrCV2N4j6g==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/autop": "^4.18.0", - "@wordpress/blob": "^4.18.0", - "@wordpress/block-serialization-default-parser": "^5.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/dom": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/hooks": "^4.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/is-shallow-equal": "^5.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/rich-text": "^7.18.0", - "@wordpress/shortcode": "^4.18.0", - "@wordpress/warning": "^3.18.0", + "@wordpress/autop": "^4.20.0", + "@wordpress/blob": "^4.20.0", + "@wordpress/block-serialization-default-parser": "^5.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/dom": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/hooks": "^4.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/is-shallow-equal": "^5.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/rich-text": "^7.20.0", + "@wordpress/shortcode": "^4.20.0", + "@wordpress/warning": "^3.20.0", "change-case": "^4.1.2", "colord": "^2.7.0", "fast-deep-equal": "^3.1.3", @@ -5908,19 +6497,19 @@ } }, "node_modules/@wordpress/commands": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/commands/-/commands-1.18.0.tgz", - "integrity": "sha512-6MI5ff0SPn2NdO+qycNA09aTiMJ8BvwVmnC9c9jkOXyYEvYNLEPR6ez8wndMLXrJElGIFZRS5QjQDWQt8OmpgQ==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/commands/-/commands-1.20.0.tgz", + "integrity": "sha512-SCB1Vo+pgAlbOgd4XtgG9yxRJA0cHPkvtPgnHsJ2gBDUefVonmIYFla4y6VmPDcA5AwuUeaGU8DZFW6c8LQNbg==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/components": "^29.4.0", - "@wordpress/data": "^10.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/keyboard-shortcuts": "^5.18.0", - "@wordpress/private-apis": "^1.18.0", + "@wordpress/components": "^29.6.0", + "@wordpress/data": "^10.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/keyboard-shortcuts": "^5.20.0", + "@wordpress/private-apis": "^1.20.0", "clsx": "^2.1.1", "cmdk": "^1.0.0" }, @@ -5946,9 +6535,9 @@ } }, "node_modules/@wordpress/components": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-29.4.0.tgz", - "integrity": "sha512-jS0PnB/YpJuhFTGsFbRQYGD6w3zqqAkW+P1zv19crHNufrvNCv32jqNYv/2VIpEIZXKjo5Tkx0WvK8e1fm/7QA==", + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-29.6.0.tgz", + "integrity": "sha512-kk9GxGnoGBqHz0S4gT2UJHQBwudE1AgTPOc3v3k72kZkDaT88ZayBd/4/gHsa659zImgrwXZ6SjQ6Nczt80Bgg==", "dev": true, "dependencies": { "@ariakit/react": "^0.4.15", @@ -5963,23 +6552,23 @@ "@types/gradient-parser": "0.1.3", "@types/highlight-words-core": "1.2.1", "@use-gesture/react": "^10.3.1", - "@wordpress/a11y": "^4.18.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/date": "^5.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/dom": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/escape-html": "^3.18.0", - "@wordpress/hooks": "^4.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/is-shallow-equal": "^5.18.0", - "@wordpress/keycodes": "^4.18.0", - "@wordpress/primitives": "^4.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/rich-text": "^7.18.0", - "@wordpress/warning": "^3.18.0", + "@wordpress/a11y": "^4.20.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/date": "^5.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/dom": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/escape-html": "^3.20.0", + "@wordpress/hooks": "^4.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/is-shallow-equal": "^5.20.0", + "@wordpress/keycodes": "^4.20.0", + "@wordpress/primitives": "^4.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/rich-text": "^7.20.0", + "@wordpress/warning": "^3.20.0", "change-case": "^4.1.2", "clsx": "^2.1.1", "colord": "^2.7.0", @@ -6018,12 +6607,6 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/components/node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "dev": true - }, "node_modules/@wordpress/components/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -6038,20 +6621,20 @@ } }, "node_modules/@wordpress/compose": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-7.18.0.tgz", - "integrity": "sha512-RtuSZyQu4dvbS6Ke7bDDN8O8qYwhJAvVn1hmreunQNQGSCH7vFYkzH4S5yphWOuPpUYNpMSbJnHJUPXuoojKkA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-7.20.0.tgz", + "integrity": "sha512-L84QUGXbXPdCAgNDNmmH+4tJuAl1MwH5an6CaQ+NaSXk4kM4xAc42znHo0n5LfsRmWxOPrtlGikxMXCaejvoyw==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/dom": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/is-shallow-equal": "^5.18.0", - "@wordpress/keycodes": "^4.18.0", - "@wordpress/priority-queue": "^3.18.0", - "@wordpress/undo-manager": "^1.18.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/dom": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/is-shallow-equal": "^5.20.0", + "@wordpress/keycodes": "^4.20.0", + "@wordpress/priority-queue": "^3.20.0", + "@wordpress/undo-manager": "^1.20.0", "change-case": "^4.1.2", "clipboard": "^2.0.11", "mousetrap": "^1.6.5", @@ -6078,25 +6661,25 @@ } }, "node_modules/@wordpress/core-commands": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/core-commands/-/core-commands-1.18.0.tgz", - "integrity": "sha512-F1QHV9kNQWMVxGTLQGw7PRNSccTHc0HowHQ6CMea8zPxKG/i8IsFGLhYVT0sdP46OMj/wgYtCxQavRzpWT1RJw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/core-commands/-/core-commands-1.20.0.tgz", + "integrity": "sha512-vMZa+0bc3c/G9iugVkjPBG4ds1IzK6ZwNaGnh4rS9SmdMX/jDxLrIZ6m10x5YtZbcnRVOoKg+JOto28U7i43cA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/block-editor": "^14.13.0", - "@wordpress/commands": "^1.18.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/core-data": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/notices": "^5.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/router": "^1.18.0", - "@wordpress/url": "^4.18.0" + "@wordpress/block-editor": "^14.15.0", + "@wordpress/commands": "^1.20.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/core-data": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/notices": "^5.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/router": "^1.20.0", + "@wordpress/url": "^4.20.0" }, "engines": { "node": ">=18.12.0", @@ -6120,28 +6703,28 @@ } }, "node_modules/@wordpress/core-data": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-7.18.0.tgz", - "integrity": "sha512-czih27KNEnJQDpY7m0VLwlpAEZZHa6IO7rXIwmCF9JnjYERM6gYPdBTApQUhuyc11QN9E6jzSgfE/5tzRQhd+g==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-7.20.0.tgz", + "integrity": "sha512-zcw1hATy6XCTNGIb/izJ5p8ccAi8pWZ5xi2EjRyintFLlaUmtOitVBZ+269BF7UaVIt55T3QZh2raTuCyuu7UQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/block-editor": "^14.13.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/is-shallow-equal": "^5.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/rich-text": "^7.18.0", - "@wordpress/sync": "^1.18.0", - "@wordpress/undo-manager": "^1.18.0", - "@wordpress/url": "^4.18.0", - "@wordpress/warning": "^3.18.0", + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/block-editor": "^14.15.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/is-shallow-equal": "^5.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/rich-text": "^7.20.0", + "@wordpress/sync": "^1.20.0", + "@wordpress/undo-manager": "^1.20.0", + "@wordpress/url": "^4.20.0", + "@wordpress/warning": "^3.20.0", "change-case": "^4.1.2", "equivalent-key-map": "^0.2.2", "fast-deep-equal": "^3.1.3", @@ -6183,19 +6766,19 @@ } }, "node_modules/@wordpress/data": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-10.18.0.tgz", - "integrity": "sha512-GKuwP+0gJ5vUrgZ8xPIGUHTQcwzr2GzUuqbOX50exrd/V1veUa0wu8tILrflB6RYECdMdtoLxSfX+WVgtpEzlg==", + "version": "10.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-10.20.0.tgz", + "integrity": "sha512-oj1Ci7mPZ2kbmI2cdqk7apfvd4nlWziPstlIZIKCb02rCEMqP8dC0lc/CDt8GVOXJ23iMhZgkfkvnFNaMXmBNQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/compose": "^7.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/is-shallow-equal": "^5.18.0", - "@wordpress/priority-queue": "^3.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/redux-routine": "^5.18.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/is-shallow-equal": "^5.20.0", + "@wordpress/priority-queue": "^3.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/redux-routine": "^5.20.0", "deepmerge": "^4.3.0", "equivalent-key-map": "^0.2.2", "is-plain-object": "^5.0.0", @@ -6225,22 +6808,22 @@ } }, "node_modules/@wordpress/dataviews": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/dataviews/-/dataviews-4.14.0.tgz", - "integrity": "sha512-0PYrsnirj4FZxcrzaUlTxLSRFO9JVyCNfzhRYQGUrIPuAF2hBtYNUBNYZLcsCgcLG1W9NNcHJKX/SaBV47dF1g==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/dataviews/-/dataviews-4.16.0.tgz", + "integrity": "sha512-96ik0Et761ujMnUFiOGJKzwYiX+J9V/VAptpw9/xUf+Kj640/NvzP0wL1e9VOOM0fOEzLBuz1q0jQIENPVg+rw==", "dev": true, "dependencies": { "@ariakit/react": "^0.4.15", "@babel/runtime": "7.25.7", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/primitives": "^4.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/warning": "^3.18.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/primitives": "^4.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/warning": "^3.20.0", "clsx": "^2.1.1", "remove-accents": "^0.5.0" }, @@ -6265,13 +6848,13 @@ } }, "node_modules/@wordpress/date": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-5.18.0.tgz", - "integrity": "sha512-x5k5pobYHq83BydLnHBOaMwuhqRafRYAgAs0aq5F08C5s33qg7JEKCJbiYZbAH/d9MeDrfAQwlFE9oj5Fx8yew==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-5.20.0.tgz", + "integrity": "sha512-V34zSLveuXTe8wvnIpUXroP7dP9FK1HzMmGNB5JtoPhrqJeNvP4fzju8RJwBGpU1sFaqO3w+EZoNdTV9k0hqxA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/deprecated": "^4.18.0", + "@wordpress/deprecated": "^4.20.0", "moment": "^2.29.4", "moment-timezone": "^0.5.40" }, @@ -6307,13 +6890,13 @@ } }, "node_modules/@wordpress/deprecated": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.18.0.tgz", - "integrity": "sha512-GtTmirQsz4NmSLOyLGL6MmWBM41M0lAet2nWhkf8gmyoO2n7bc7UpyqxiyijW7R6N2imvvJyD5ZMqLRBBVk/IQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.20.0.tgz", + "integrity": "sha512-36JbtGUSQ49SM33fvfSAvN8ZGDqCxCPAj2PByAney4WhoVbznxGWnao8qKwWrNNG5xec1reQvXFxOsD7qab4rg==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/hooks": "^4.18.0" + "@wordpress/hooks": "^4.20.0" }, "engines": { "node": ">=18.12.0", @@ -6333,13 +6916,13 @@ } }, "node_modules/@wordpress/dom": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.18.0.tgz", - "integrity": "sha512-EHGyFnr/XciaeivOkGlny+LZMce3keVDDV3ioanmZ8ei6XBvMhu53ckBRjGstMVC7WtEpcCp65pjIvdCCiFDtQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.20.0.tgz", + "integrity": "sha512-uLYH7hKfJDUHkooAy0uoFJXMCkraTP3gdybblAJT9a/dqAOVcsMODH9gTGI99IoFhsvJwWo5Vk94/kgqeOdarA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/deprecated": "^4.18.0" + "@wordpress/deprecated": "^4.20.0" }, "engines": { "node": ">=18.12.0", @@ -6347,9 +6930,9 @@ } }, "node_modules/@wordpress/dom-ready": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-4.18.0.tgz", - "integrity": "sha512-LRzvHy1OTiqm7Uww70ByjqLzovoXRy6PPKAlHUrFxuK/0v9QNJ5ha0Q57PYwrZZVm2Hjkt2SQ8OdIZESaoI2/g==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-4.20.0.tgz", + "integrity": "sha512-FkdfoITfj1yBSUMn+IKIqpm7zwA4AbHPkYdCXNgP9w5BRBpoTqXMGgDbe8rt4aSWkSEiRChZ9rGmtG84LByRTA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -6384,41 +6967,41 @@ } }, "node_modules/@wordpress/edit-post": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-8.18.0.tgz", - "integrity": "sha512-YjIvHN0IjZRRwXrpNrUEYPiTp2+Dyyia6YclIZ8yPxFQ9XJykAOJ/EyjL1JDI8jmo2Wa2hKsHelG751Yl87DbQ==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-8.20.0.tgz", + "integrity": "sha512-M4L3yTA58+kttjxy3IBhys7zXT6vehq4yr0OvkWvmejkCYJuIqTjeI7gvvweM4k7sPwETLYokhJ2EKsig7I0KQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/a11y": "^4.18.0", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/block-editor": "^14.13.0", - "@wordpress/block-library": "^9.18.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/commands": "^1.18.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/core-commands": "^1.18.0", - "@wordpress/core-data": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/dom": "^4.18.0", - "@wordpress/editor": "^14.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/hooks": "^4.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/keyboard-shortcuts": "^5.18.0", - "@wordpress/keycodes": "^4.18.0", - "@wordpress/notices": "^5.18.0", - "@wordpress/plugins": "^7.18.0", - "@wordpress/preferences": "^4.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/url": "^4.18.0", - "@wordpress/viewport": "^6.18.0", - "@wordpress/warning": "^3.18.0", - "@wordpress/widgets": "^4.18.0", + "@wordpress/a11y": "^4.20.0", + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/block-editor": "^14.15.0", + "@wordpress/block-library": "^9.20.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/commands": "^1.20.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/core-commands": "^1.20.0", + "@wordpress/core-data": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/dom": "^4.20.0", + "@wordpress/editor": "^14.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/hooks": "^4.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/keyboard-shortcuts": "^5.20.0", + "@wordpress/keycodes": "^4.20.0", + "@wordpress/notices": "^5.20.0", + "@wordpress/plugins": "^7.20.0", + "@wordpress/preferences": "^4.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/url": "^4.20.0", + "@wordpress/viewport": "^6.20.0", + "@wordpress/warning": "^3.20.0", + "@wordpress/widgets": "^4.20.0", "clsx": "^2.1.1", "memize": "^2.1.0" }, @@ -6444,47 +7027,47 @@ } }, "node_modules/@wordpress/editor": { - "version": "14.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-14.18.0.tgz", - "integrity": "sha512-SN/B8onomEBg4sHYihgSJesIZ3wi8QlecEDGe6NeAcf/yugDkUW2k/lTLhBLGgA7tEfLEi5vsKDhlVjpHjb4zA==", + "version": "14.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-14.20.0.tgz", + "integrity": "sha512-EmFRUMhbwxNlKOjR2+vaxGO0qnf6yvVdFUp8B2cVsRs2P1+u9z9JDK6DI9UMcXtrwfCfB3UpifoSfwONKG30Dg==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/a11y": "^4.18.0", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/blob": "^4.18.0", - "@wordpress/block-editor": "^14.13.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/commands": "^1.18.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/core-data": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/dataviews": "^4.14.0", - "@wordpress/date": "^5.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/dom": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/fields": "^0.10.0", - "@wordpress/hooks": "^4.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/interface": "^9.3.0", - "@wordpress/keyboard-shortcuts": "^5.18.0", - "@wordpress/keycodes": "^4.18.0", - "@wordpress/media-utils": "^5.18.0", - "@wordpress/notices": "^5.18.0", - "@wordpress/patterns": "^2.18.0", - "@wordpress/plugins": "^7.18.0", - "@wordpress/preferences": "^4.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/reusable-blocks": "^5.18.0", - "@wordpress/rich-text": "^7.18.0", - "@wordpress/server-side-render": "^5.18.0", - "@wordpress/url": "^4.18.0", - "@wordpress/warning": "^3.18.0", - "@wordpress/wordcount": "^4.18.0", + "@wordpress/a11y": "^4.20.0", + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/blob": "^4.20.0", + "@wordpress/block-editor": "^14.15.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/commands": "^1.20.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/core-data": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/dataviews": "^4.16.0", + "@wordpress/date": "^5.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/dom": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/fields": "^0.12.0", + "@wordpress/hooks": "^4.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/interface": "^9.5.0", + "@wordpress/keyboard-shortcuts": "^5.20.0", + "@wordpress/keycodes": "^4.20.0", + "@wordpress/media-utils": "^5.20.0", + "@wordpress/notices": "^5.20.0", + "@wordpress/patterns": "^2.20.0", + "@wordpress/plugins": "^7.20.0", + "@wordpress/preferences": "^4.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/reusable-blocks": "^5.20.0", + "@wordpress/rich-text": "^7.20.0", + "@wordpress/server-side-render": "^5.20.0", + "@wordpress/url": "^4.20.0", + "@wordpress/warning": "^3.20.0", + "@wordpress/wordcount": "^4.20.0", "change-case": "^4.1.2", "client-zip": "^2.4.5", "clsx": "^2.1.1", @@ -6532,14 +7115,14 @@ } }, "node_modules/@wordpress/element": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.18.0.tgz", - "integrity": "sha512-38wA2ta4GGOxuKofmyNP+EWA03bqBwUufQNQNd8GgcaKo4N/j+0wQMouLC/2g6n9MU5B0DH4tIv9uP9qR1miYg==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.20.0.tgz", + "integrity": "sha512-JsM1Cy283BusHOb1uyD3tG9GAb5hp/ycgPnBS/ScKT/8VD8yGzsX6Pz910GWo5udXP03d2+UI/BQ68KPqPQKqQ==", "dependencies": { "@babel/runtime": "7.25.7", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.25", - "@wordpress/escape-html": "^3.18.0", + "@wordpress/escape-html": "^3.20.0", "change-case": "^4.1.2", "is-plain-object": "^5.0.0", "react": "^18.3.0", @@ -6562,9 +7145,9 @@ } }, "node_modules/@wordpress/escape-html": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.18.0.tgz", - "integrity": "sha512-5hcsoIin5IYAEejuRJqnFQB5q5C0q8VII/H7wWOWoe8IXiRQCiju/DWRC25AL2xWdUdaqiG84JuiPq+7Npb8gw==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.20.0.tgz", + "integrity": "sha512-Jrm+RdTZo8cj1JUo4Vqx92/yw7B+XS6aClEyQ/xlHoQU0WIZ+xByWZHOPgDFBcKczuO34UkFTWmDFFHMSy1uyw==", "dependencies": { "@babel/runtime": "7.25.7" }, @@ -6862,35 +7445,35 @@ } }, "node_modules/@wordpress/fields": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@wordpress/fields/-/fields-0.10.0.tgz", - "integrity": "sha512-1JcX5EdYiw43Mx3qiTTPE295FsqHJ1d8hnaMFQhdLuVhMRlz1hOSXTn6wL6BwcCsc1/KOBLX7OAFbNohwGGbqg==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@wordpress/fields/-/fields-0.12.0.tgz", + "integrity": "sha512-yDwhN3eeca9PHgLyKk33NVcX4eEQD2TxHtcMIVAvRMu5Gy94F/dxHwoOqc2kOAUo2ju2kOEcbJIYqnO8lMUcmA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/blob": "^4.18.0", - "@wordpress/block-editor": "^14.13.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/core-data": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/dataviews": "^4.14.0", - "@wordpress/date": "^5.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/hooks": "^4.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/media-utils": "^5.18.0", - "@wordpress/notices": "^5.18.0", - "@wordpress/patterns": "^2.18.0", - "@wordpress/primitives": "^4.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/router": "^1.18.0", - "@wordpress/url": "^4.18.0", - "@wordpress/warning": "^3.18.0", + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/blob": "^4.20.0", + "@wordpress/block-editor": "^14.15.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/core-data": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/dataviews": "^4.16.0", + "@wordpress/date": "^5.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/hooks": "^4.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/media-utils": "^5.20.0", + "@wordpress/notices": "^5.20.0", + "@wordpress/patterns": "^2.20.0", + "@wordpress/primitives": "^4.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/router": "^1.20.0", + "@wordpress/url": "^4.20.0", + "@wordpress/warning": "^3.20.0", "change-case": "4.1.2", "client-zip": "^2.4.5", "clsx": "2.1.1", @@ -6917,9 +7500,9 @@ } }, "node_modules/@wordpress/hooks": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.18.0.tgz", - "integrity": "sha512-hJulGAT2ELS+UBCTPnTe2A2ep+sOF4PO/x41UmeSgiaIJV1G4xNCJnlcyuCsV3xI2CTnf+YqjyS3qbqhLq3YOA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.20.0.tgz", + "integrity": "sha512-nn6RbAER5EitMJVr+jpOg5HDIUEEOEv6jC/P1s5C0HvsOaldBeJ80A73Gsd/NFGlUqCc7o51uoZO36wGoPjIpg==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -6942,9 +7525,9 @@ } }, "node_modules/@wordpress/html-entities": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.18.0.tgz", - "integrity": "sha512-g0XTnspjAQNKpj3dVcFxYZaDcxbEfAx9rsosYksgnvaVoMBvCmzlaNIa6QAjmsjwryoNi8ugx2CkCxde1lVp2Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.20.0.tgz", + "integrity": "sha512-ZOQ9zsfs5p32K+uAEy2vbY7rnAG5KjMdXwOn4v2FPeXF6A6jWQudK/smV7nRB3ZMaSZnzQ54tiUXbuSpCmmGYA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -6967,13 +7550,13 @@ } }, "node_modules/@wordpress/i18n": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-5.18.0.tgz", - "integrity": "sha512-XaA3qSyOnmx7FEQFwOXxqWLVjKw0TWR/S/sEmp6Rs88ttUDS0Y6z6xGwCwEK8acmUUWccaxk6aPirX8gV4Bdrw==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-5.20.0.tgz", + "integrity": "sha512-JrgVe5QT+nDHFbujeD0lJifDpdgmOt1SSnEK631jIISjfGjriYwphoOEAzBGRh9S9ThqOOfW4mLOOeXPYmJR7w==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/hooks": "^4.18.0", + "@wordpress/hooks": "^4.20.0", "gettext-parser": "^1.3.1", "memize": "^2.1.0", "sprintf-js": "^1.1.1", @@ -6999,20 +7582,14 @@ "node": ">=6.9.0" } }, - "node_modules/@wordpress/i18n/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true - }, "node_modules/@wordpress/icons": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-10.18.0.tgz", - "integrity": "sha512-stWW0msTspv6wCB3Pcu7PtVoFQBRr4R+oOvXlxVnpsUKuUz+mIAS08Sme9bTkHiVtHBZRK6YGpt4wYK6W0FXcw==", + "version": "10.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-10.20.0.tgz", + "integrity": "sha512-wGmmGDQoDKjmuGdC2I8C3JA9GlqVM9DK5FJZuUukHTh+Nz72W8CA30PzGKavxWOYd7cZ0B97VioE85aVwOAe3g==", "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/element": "^6.18.0", - "@wordpress/primitives": "^4.18.0" + "@wordpress/element": "^6.20.0", + "@wordpress/primitives": "^4.20.0" }, "engines": { "node": ">=18.12.0", @@ -7031,9 +7608,9 @@ } }, "node_modules/@wordpress/interactivity": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/interactivity/-/interactivity-6.18.0.tgz", - "integrity": "sha512-FW2lvpSALQV21sIOXEcg2OgcXb7stHLnVdiEX/ceLZO2UElOQGOT0uvVSeIEqsL/lUXlyIGDku7DZ9fjq0s2Ng==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/interactivity/-/interactivity-6.20.0.tgz", + "integrity": "sha512-vPIM15zvqozvLC0azCDC12cPcxUL1Pgjt0nMFaokxY6BxRSSruc4DSY2cQxvIqDLsNu7g5HvSsrVjDQeiXGdtw==", "dev": true, "dependencies": { "@preact/signals": "^1.3.0", @@ -7045,13 +7622,13 @@ } }, "node_modules/@wordpress/interactivity-router": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/interactivity-router/-/interactivity-router-2.18.0.tgz", - "integrity": "sha512-qrt5/ceuMsC8xXpnZwUMJaE6CdJuIVhXzp4+EMkVWCmcD/f5qyO+An15OGCgXehISkQyLJD6+6khToyW+XoT2Q==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/interactivity-router/-/interactivity-router-2.20.0.tgz", + "integrity": "sha512-4TAZh4dVKxdwqmEQ1fGfQG0ZhmwFoqI79Z85wct+HxpgxIPZTTqCedvjY+CRLCo0VGpq4838k8F5cmnG8nPLcA==", "dev": true, "dependencies": { - "@wordpress/a11y": "^4.18.0", - "@wordpress/interactivity": "^6.18.0" + "@wordpress/a11y": "^4.20.0", + "@wordpress/interactivity": "^6.20.0" }, "engines": { "node": ">=18.12.0", @@ -7059,23 +7636,23 @@ } }, "node_modules/@wordpress/interface": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-9.3.0.tgz", - "integrity": "sha512-mumbsuAzLyUvDnzMUJCYtO26C74yPtMQ1Se8MoPyQq5e+1bPjd/MtjBWXYqY+aNS31yme/n7N0X77ea7w6t7YQ==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-9.5.0.tgz", + "integrity": "sha512-VcdTrZuc05ZT0ZEv8aur0ZQG8jOYnHFsV6lFifz2imWD/gIx6YNfSkLVAPJkQ3HgcRERQAwryvf4QWsJVSQ/dA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/a11y": "^4.18.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/plugins": "^7.18.0", - "@wordpress/preferences": "^4.18.0", - "@wordpress/viewport": "^6.18.0", + "@wordpress/a11y": "^4.20.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/plugins": "^7.20.0", + "@wordpress/preferences": "^4.20.0", + "@wordpress/viewport": "^6.20.0", "clsx": "^2.1.1" }, "engines": { @@ -7100,9 +7677,9 @@ } }, "node_modules/@wordpress/is-shallow-equal": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.18.0.tgz", - "integrity": "sha512-g8MGRyDTwpJXK/Pxp1aU/uprBV1pqYcB4sBlt5E5rck/8OlAwYzePgR7TShBT6kLs9UGi9a3k8StPilnX54GMQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.20.0.tgz", + "integrity": "sha512-/m8P/6AQgZchMbeDhne5z8Wzde07mv8+l7qsYK6VhChEWonrYN7Sfig9uGPtWijkWwOkxYjWE6ggcJ5xn8KVlg==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -7140,15 +7717,15 @@ } }, "node_modules/@wordpress/keyboard-shortcuts": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-5.18.0.tgz", - "integrity": "sha512-FY+j85svtDR3fsfLbzKUClxTYaBVgCWLwYxlyNVF07uVZRSn6Y3josXrfhn1YzBH9lvzyxIb7pZprFVRFUwtKw==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-5.20.0.tgz", + "integrity": "sha512-1f71Zwx23W0iyox2o4cu0w3h21uEV/mra4s0Ol+ezhHJ2qg/ZG2FFS25lo9AYOCJZpP0cNvlI7js1wC4/taOQQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/data": "^10.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/keycodes": "^4.18.0" + "@wordpress/data": "^10.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/keycodes": "^4.20.0" }, "engines": { "node": ">=18.12.0", @@ -7171,13 +7748,13 @@ } }, "node_modules/@wordpress/keycodes": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.18.0.tgz", - "integrity": "sha512-96dkj/z0eDsA9kfM+vMsaY9MLUZGO9zJMlklkyaGltsVqrO/WhlNPEui7/JerJ+YUL0oncdUaGiwcj5pKs09cA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.20.0.tgz", + "integrity": "sha512-GLzp9uTSNOPvX378FInwvLj4riqq1N/By1kd40iAr1hXfRAjy0H//vktJ70r+AkwK0R07txtCPiLnDcW53hLmg==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/i18n": "^5.18.0" + "@wordpress/i18n": "^5.20.0" }, "engines": { "node": ">=18.12.0", @@ -7197,17 +7774,17 @@ } }, "node_modules/@wordpress/media-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-5.18.0.tgz", - "integrity": "sha512-qjsM/ujuqVOkknLSt67dX1w47WT+5Vfmz2urp7c/lidUKzBpRYcJhDpm1iQCuHJ8TCL6tVz0O29oNGFyItYBIg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-5.20.0.tgz", + "integrity": "sha512-J+SK6vkS5drtQQY0ikRFS7EGTqlzkt3BYx942zSTkbzJ7viNzcGqMG570Pgo2Hmz26AdzfJ0DJa1UOVaz2OGBg==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/blob": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/private-apis": "^1.18.0" + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/blob": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/private-apis": "^1.20.0" }, "engines": { "node": ">=18.12.0", @@ -7227,14 +7804,14 @@ } }, "node_modules/@wordpress/notices": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-5.18.0.tgz", - "integrity": "sha512-JBEbMtcdKn1hTzSLi6TPgO+09VHyOdlhyuVVV56rxg1S6bmq2DKvLuMYFiF4KpBaDHPPqQho9adHpozx1TAYkg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-5.20.0.tgz", + "integrity": "sha512-AYRVzrrqrGo0zRvgVKbRsz7ViED7ik212Jje/zyaplOK9dffXUlFK3S8N6pipemfv39uX5N6YW6OJlIKK9lPKA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/a11y": "^4.18.0", - "@wordpress/data": "^10.18.0" + "@wordpress/a11y": "^4.20.0", + "@wordpress/data": "^10.20.0" }, "engines": { "node": ">=18.12.0", @@ -7257,26 +7834,26 @@ } }, "node_modules/@wordpress/patterns": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/patterns/-/patterns-2.18.0.tgz", - "integrity": "sha512-84+yM89KbKjFklqT5nJ6FNnXjadN+Ypn21SARbe+F9D5Pfd+JsxTfMVz6PjxzIrDr9O0594VSbxu9ISSlDy3jA==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/patterns/-/patterns-2.20.0.tgz", + "integrity": "sha512-zAU+saOKVwcW11jCmsjMFSA8wvyijojKJJTa7ZfopoHMeAbNtn0QCQxLKGpCvzn9bmuHh7n8VzLqvr9D5BdBkA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/a11y": "^4.18.0", - "@wordpress/block-editor": "^14.13.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/core-data": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/html-entities": "^4.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/notices": "^5.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/url": "^4.18.0" + "@wordpress/a11y": "^4.20.0", + "@wordpress/block-editor": "^14.15.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/core-data": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/html-entities": "^4.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/notices": "^5.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/url": "^4.20.0" }, "engines": { "node": ">=18.12.0", @@ -7300,19 +7877,19 @@ } }, "node_modules/@wordpress/plugins": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-7.18.0.tgz", - "integrity": "sha512-WcgesvabfDD2vaNGpPRRRCN1coUgnpX+LVWMl+x5xISRxnTeeTbAPzl125B7xhv+N98JcQCZOen0+xO3/4yIRA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-7.20.0.tgz", + "integrity": "sha512-9VkXLMEXevsHGgFt26RgEbZ6RkCPare7yOI4XQrrPwZCyuxLQFgt84zwfCLDogZRdhV7x4OEYSgc9AGN0V1oqw==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/hooks": "^4.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/is-shallow-equal": "^5.18.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/hooks": "^4.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/is-shallow-equal": "^5.20.0", "memize": "^2.0.1" }, "engines": { @@ -7337,21 +7914,21 @@ } }, "node_modules/@wordpress/preferences": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/preferences/-/preferences-4.18.0.tgz", - "integrity": "sha512-hFpzDgZim4dH07IVtxAgGjN3mYDHWWPHrA6nqA0RxhU4MalRB6jvL+AWFKJtWk3P4bv14O854s7zJ+x5Dj6Ceg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/preferences/-/preferences-4.20.0.tgz", + "integrity": "sha512-oW7N8RPkXeJFZe/6aRHyWgzj0y9CjT3ATF+JPtQOUcKnNcSuMdaOU22X7jGBaCgU0Yk7frC39a30156nkv9Gpw==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/a11y": "^4.18.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/private-apis": "^1.18.0", + "@wordpress/a11y": "^4.20.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/private-apis": "^1.20.0", "clsx": "^2.1.1" }, "engines": { @@ -7387,12 +7964,12 @@ } }, "node_modules/@wordpress/primitives": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.18.0.tgz", - "integrity": "sha512-c/8wC1MgbiQc/8kQlxuNuzeDeEW65jHSK0/qZ/afvHL1T4AmYmyC791nabpyGM+Le1kwe1LCDbPo/x2Oig0nbA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.20.0.tgz", + "integrity": "sha512-fVs9EnuI2UV1xfAYY//OOfO+O3n4VvPVGcI/zHMAfIdJGWEbCQVDatAnteX/2hkjBe85jqErkU+0bAKsddhpcA==", "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/element": "^6.18.0", + "@wordpress/element": "^6.20.0", "clsx": "^2.1.1" }, "engines": { @@ -7415,9 +7992,9 @@ } }, "node_modules/@wordpress/priority-queue": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-3.18.0.tgz", - "integrity": "sha512-B8ZRIu91hnfs/O3P6sGW+sQThrMgF9qGzjIfqxPmKE8npn9wjAERxyrnyBy/pEdn1mI1gRHtaKqtuirPjBYmfw==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-3.20.0.tgz", + "integrity": "sha512-2gOa8LQaTLPgk1GDkkXWALA9yH47yhDZKHKBHy8YH61c+m8ai8RctWegzXA6pSInPW77nbBUNHSOzxWTsDN1Sw==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", @@ -7441,9 +8018,9 @@ } }, "node_modules/@wordpress/private-apis": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.18.0.tgz", - "integrity": "sha512-yNt9cxdvIS60iWz/yy0qtsrZAYO8imkWA+xOYO7n5/N/kXchtCx4c6+XNMdX7ftyBrygOXJtsqkVoLUORPeKxw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.20.0.tgz", + "integrity": "sha512-DngnywYj6zDt9D0HgnX7k0il5SsdDYUxEg82GqNu3Jd879LlG9MtIxcoV+ErCsH7ryTydXw4sC17W09m2LEMBQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -7466,9 +8043,9 @@ } }, "node_modules/@wordpress/redux-routine": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-5.18.0.tgz", - "integrity": "sha512-QlG5kKuUITzpVH3vrTuLiRgm9Zxe/QlG9xS/BYTiMorM9tPvwFbko244aDZbzghl4IkZub2ImucfzmxzoH7Ltg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-5.20.0.tgz", + "integrity": "sha512-6JZI75oMAWGBgo+x2rmfIGzqVuxiZ3wQBqNCdVDDOGYH9qcRzYgBWRSPVfh4rvGLTtpVnFHnnBQ+jr5iPGHOxQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", @@ -7497,23 +8074,23 @@ } }, "node_modules/@wordpress/reusable-blocks": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-5.18.0.tgz", - "integrity": "sha512-Uz03XQJOhN4zR3uUi96HXebNDFfveO8AKLkHUUrkgpWJqe9mhOCweJle1303ZraY+H5vrPDjY642Z2Vykaw35w==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-5.20.0.tgz", + "integrity": "sha512-fclcc4nJRBPddqZF7s3yg9sxblJRdF8wFNOjWndENWq+TODSX5JXeLSi5yBTpHVwu3d9mPQQPTgk+w5rN8sfvw==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/block-editor": "^14.13.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/components": "^29.4.0", - "@wordpress/core-data": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/notices": "^5.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/url": "^4.18.0" + "@wordpress/block-editor": "^14.15.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/components": "^29.6.0", + "@wordpress/core-data": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/notices": "^5.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/url": "^4.20.0" }, "engines": { "node": ">=18.12.0", @@ -7537,20 +8114,20 @@ } }, "node_modules/@wordpress/rich-text": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-7.18.0.tgz", - "integrity": "sha512-pFFyjgbE2nQVYclKdttrBgWw5FUDubQdU8tQePjTSdMzLi6Lbod+A8FaK7wSsmfrzA3CFnMkLIhix8PHYyJ1sQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-7.20.0.tgz", + "integrity": "sha512-irx6cvmoxSSajzGGt5iVxek3vNfG5LslORQ1g7HXcNawfFBxhptU3vzPF2+ywvs6o3BCbTZVfa98rOfX3C2J/Q==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/a11y": "^4.18.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/escape-html": "^3.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/keycodes": "^4.18.0", + "@wordpress/a11y": "^4.20.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/escape-html": "^3.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/keycodes": "^4.20.0", "memize": "^2.1.0" }, "engines": { @@ -7574,16 +8151,16 @@ } }, "node_modules/@wordpress/router": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/router/-/router-1.18.0.tgz", - "integrity": "sha512-waO2Uqps7n71S1UhUPjWwZObYBIrb6F9heTmwbAK+O0xUIgTkDcYO654CBAYbbv3RbAOZEZNdRHzfjW4i6yiPw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/router/-/router-1.20.0.tgz", + "integrity": "sha512-JkQvIcapSpwbQipnPNeAaXH0QNcwkIxS1WCEYH20x3axzX+jRkwr2a4E6WlgRxgoDV6XO0PcfVt+zPxEg7su7A==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/compose": "^7.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/url": "^4.18.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/url": "^4.20.0", "history": "^5.3.0", "route-recognizer": "^0.3.4" }, @@ -7608,21 +8185,21 @@ } }, "node_modules/@wordpress/server-side-render": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-5.18.0.tgz", - "integrity": "sha512-pFND5MDe0yJapXYAdd5DwY8QScCKCTTjk0vRS6MA7laGPOjH9nXUJ0Er+W2mh7EamPbDljhdXv8/l8iu9ZR7dg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-5.20.0.tgz", + "integrity": "sha512-rlJ7OCwzMPlKAx/Q1LhezJvm1p58XrqWFZzywtIr6pXEkd0SWqaMbuRIZ2Ed8u/j2tgWPC3pZzrjGX2+0y1r2Q==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/deprecated": "^4.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/url": "^4.18.0", + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/deprecated": "^4.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/url": "^4.20.0", "fast-deep-equal": "^3.1.3" }, "engines": { @@ -7647,9 +8224,9 @@ } }, "node_modules/@wordpress/shortcode": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-4.18.0.tgz", - "integrity": "sha512-XMneQtxOvGmeqhQIURwtNN4otT/TGRhh87vxZuQYbAHQ5d+JeeFbLgferViZLWSNOJ2jioWvJGJIbIYshDrmhQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-4.20.0.tgz", + "integrity": "sha512-0z3RI+KctCQTIvs+E1u4QZTTAvgQKbKESk5Uowlm9j+0wTHCAicOblf66RN8lo6+RHYOo2+pNrCmeDYIghUm5A==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", @@ -7673,9 +8250,9 @@ } }, "node_modules/@wordpress/style-engine": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/style-engine/-/style-engine-2.18.0.tgz", - "integrity": "sha512-JyPfIe+Kt/R1Q4snab453S/Xumo8RwaTQviU0dYPawKP2R3Gd9uHFr+tVDBgJxYIJbAFfOMJdEiLkkOktfEAPQ==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/style-engine/-/style-engine-2.20.0.tgz", + "integrity": "sha512-6hG3agp8+jpSFm9PG/c2uap7ub3uagdbFIkJjQflF2u1JkN7/8A7AUCmBiUVKBM3ovqZOcfRvCd2VBqfure/8g==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", @@ -7699,14 +8276,14 @@ } }, "node_modules/@wordpress/sync": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/sync/-/sync-1.18.0.tgz", - "integrity": "sha512-LZaUH2iXSiISt5EPctKLS7cWgqU1PTFoElPqGA1Xt0/vxQXjNKYArXuciiqSkGj0tGo5jno9RYexBGNLWhvbUw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/sync/-/sync-1.20.0.tgz", + "integrity": "sha512-NbxBz4I/24dz4np9ftsv+Qn8zxQUepvii8nz9gjb0u3+kthQ8naUbDvXeOCMXE1LhPSpBTISWl2d23kdaLvvXA==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", "@types/simple-peer": "^9.11.5", - "@wordpress/url": "^4.18.0", + "@wordpress/url": "^4.20.0", "import-locals": "^2.0.0", "lib0": "^0.2.42", "simple-peer": "^9.11.0", @@ -7733,9 +8310,9 @@ } }, "node_modules/@wordpress/token-list": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-3.18.0.tgz", - "integrity": "sha512-90AxsuNkAV22O2EahlCS98teraMGdQGG5LZqIgpQMqNoBGTfs7/F6Jgq1xBypDz+Fh7FVNNkdF7ANGVYH+b26g==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-3.20.0.tgz", + "integrity": "sha512-34BQdrFVs2c/mh/ycNVXqKauFQBlg8D1Wxp89UgaCnaoUZSob/o3YYQTODNBcXaepDsLO5tc3VzyybXYDoMBtg==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -7758,13 +8335,13 @@ } }, "node_modules/@wordpress/undo-manager": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.18.0.tgz", - "integrity": "sha512-OmOCihoOzWgyhs+6BFJJcGxgPby8sd1y0zlW+PuGOeNxtxLVa9Q4cGDcUE0++OcWk9b/0S0l4XrzwKTC4eyiQw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.20.0.tgz", + "integrity": "sha512-IG3/u0uR0nfZ/kXRfC6DVFK52hbbNx4aMB/c5DAMQgKtJElE7Mz1Mf5zgU1XNlpBOdguQp6oo/nMpyJUIasipQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/is-shallow-equal": "^5.18.0" + "@wordpress/is-shallow-equal": "^5.20.0" }, "engines": { "node": ">=18.12.0", @@ -7784,22 +8361,22 @@ } }, "node_modules/@wordpress/upload-media": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@wordpress/upload-media/-/upload-media-0.3.0.tgz", - "integrity": "sha512-tX7R4UKigkfe9m9BlS/jVJ9uOIrHGPJf6fTScqhCgmRiXKMymwtPFS+3OP9yCQe4Tz1bNyhhzPBhaFWFI7WJ1w==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/upload-media/-/upload-media-0.5.0.tgz", + "integrity": "sha512-gwRO06ftesM8DnsAD5tvSF6Y+ZJY+h4dgr1d1S7xFu96zMULoQ99A3NVKKH5TLIOVAPYPZoITbJOFviSbv5PPQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", "@shopify/web-worker": "^6.4.0", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/blob": "^4.18.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/preferences": "^4.18.0", - "@wordpress/private-apis": "^1.18.0", - "@wordpress/url": "^4.18.0", + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/blob": "^4.20.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/preferences": "^4.20.0", + "@wordpress/private-apis": "^1.20.0", + "@wordpress/url": "^4.20.0", "uuid": "^9.0.1" }, "engines": { @@ -7837,9 +8414,9 @@ } }, "node_modules/@wordpress/url": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-4.18.0.tgz", - "integrity": "sha512-Jr1O9NjNKQuWRIBzc0G/aiHt54vXkCJ50JJiKAAFnz6yTE6XVoPvxDG3nidGAThNWQgZ1UykY6Zir+XrQPHBtw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-4.20.0.tgz", + "integrity": "sha512-IUkph25ewBDTxuSC9wXvMbec6IB2A3pNz0Xkm1Ffzm2ngk/f+0+Ko2WSKdXqqR8U67Eyb+ZUZFtBPmEsKvEZ4A==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", @@ -7863,15 +8440,15 @@ } }, "node_modules/@wordpress/viewport": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-6.18.0.tgz", - "integrity": "sha512-MokrS9MiDh6g4Vzl0MSU1LKuTBLcydZjvryYjLnfd1BqE0DGNBOMtCe1L7RwXEkbxbhv4UCc7xZ5G0CUeOaGDw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-6.20.0.tgz", + "integrity": "sha512-B+QXj86+AZz1Q3nfVIF3RsvxSoRIxrX/evvikDrkxb10UlWFrMOYWDTsPwiOls3NGxb3NhV3HSsO2AWaUjgHxQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/compose": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/element": "^6.18.0" + "@wordpress/compose": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/element": "^6.20.0" }, "engines": { "node": ">=18.12.0", @@ -7904,23 +8481,23 @@ } }, "node_modules/@wordpress/widgets": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/widgets/-/widgets-4.18.0.tgz", - "integrity": "sha512-teNnhluHDmPLYIShyhfYpSj4vzkFQVl5zAecNOzFDiACNjX57bZfQTDzeVm1AWzsLJ0WRapoc19oRM4P39ObEQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/widgets/-/widgets-4.20.0.tgz", + "integrity": "sha512-EwjOGnccTNMEwkYQWb15ApLzsQktKel8oXz9GbDRP40qexUQ745k/ZaUOPkyvGHznC84CNBJ9Ju0YfZHujW+5w==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/api-fetch": "^7.18.0", - "@wordpress/block-editor": "^14.13.0", - "@wordpress/blocks": "^14.7.0", - "@wordpress/components": "^29.4.0", - "@wordpress/compose": "^7.18.0", - "@wordpress/core-data": "^7.18.0", - "@wordpress/data": "^10.18.0", - "@wordpress/element": "^6.18.0", - "@wordpress/i18n": "^5.18.0", - "@wordpress/icons": "^10.18.0", - "@wordpress/notices": "^5.18.0", + "@wordpress/api-fetch": "^7.20.0", + "@wordpress/block-editor": "^14.15.0", + "@wordpress/blocks": "^14.9.0", + "@wordpress/components": "^29.6.0", + "@wordpress/compose": "^7.20.0", + "@wordpress/core-data": "^7.20.0", + "@wordpress/data": "^10.20.0", + "@wordpress/element": "^6.20.0", + "@wordpress/i18n": "^5.20.0", + "@wordpress/icons": "^10.20.0", + "@wordpress/notices": "^5.20.0", "clsx": "^2.1.1" }, "engines": { @@ -7945,9 +8522,9 @@ } }, "node_modules/@wordpress/wordcount": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-4.18.0.tgz", - "integrity": "sha512-JNflIJoeuLDjzK2k9JdHcY+RhJ9cr0iHO8lgtVOTYSqF5tGpk1+QiA8Y/cyONJNzBbUO48C/G+gEsRk5fyXNhA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-4.20.0.tgz", + "integrity": "sha512-3RP94Xt3TTnLrfuVOiQE80tUluq6jLoPeQD1V7IiZMTZUw2gpgxE6ZX81yoM1oYOUWCp1n9hqsiF4zaRQ/75cQ==", "dev": true, "dependencies": { "@babel/runtime": "7.25.7" @@ -7980,9 +8557,9 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/10up-toolkit": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/10up-toolkit/-/10up-toolkit-6.4.0.tgz", - "integrity": "sha512-6PKv6HSxlqphoR/p/VXBhWvylMBAqvbqYg8YreY91I4k02P53ECxV4OZn8qEofRlHUiKju1c/NOkSl7Ya+zbjA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/10up-toolkit/-/10up-toolkit-6.4.1.tgz", + "integrity": "sha512-LvLs9YP5hM1HDXqfwhVtpsW0h0cjzveO/DwpjYJT1qcNm2R8WqaqlljWjZB2DmPrQh+4EWMllt6LvkS3KjDCUA==", "dependencies": { "@babel/eslint-parser": "^7.23.3", "@csstools/postcss-global-data": "^2.1.1", @@ -8048,7 +8625,7 @@ }, "peerDependencies": { "@10up/babel-preset-default": ">=2.1.1", - "@10up/eslint-config": ">=4.1.1-next.0", + "@10up/eslint-config": ">=4.1.1", "@10up/stylelint-config": ">=3.0.0", "@linaria/babel-preset": ">=4.3.3", "@linaria/webpack-loader": ">=4.1.11", @@ -8084,9 +8661,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "bin": { "acorn": "bin/acorn" }, @@ -8259,6 +8836,11 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, "node_modules/aria-hidden": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", @@ -8357,16 +8939,17 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -8476,9 +9059,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "funding": [ { "type": "opencollective", @@ -8494,11 +9077,11 @@ } ], "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -8532,9 +9115,9 @@ } }, "node_modules/axe-core": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", - "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", "engines": { "node": ">=4" } @@ -8762,12 +9345,12 @@ } }, "node_modules/bare-os": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.4.0.tgz", - "integrity": "sha512-9Ous7UlnKbe3fMi7Y+qh0DwAup6A1JkYgPnjvMDNOlmnxNRQvQ/7Nst+OnUQKzk0iAT0m9BisbDVp9gCv8+ETA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.0.tgz", + "integrity": "sha512-BUrFS5TqSBdA0LwHop4OjPJwisqxGy6JsWVqV6qaFoe965qqtaKfDzHY5T2YA1gUL0ZeeQeA+4BBc1FJTcHiPw==", "optional": true, "engines": { - "bare": ">=1.6.0" + "bare": ">=1.14.0" } }, "node_modules/bare-path": { @@ -8884,6 +9467,17 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -9038,12 +9632,12 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -9130,9 +9724,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001700", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", - "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", + "version": "1.0.30001705", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001705.tgz", + "integrity": "sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==", "funding": [ { "type": "opencollective", @@ -9301,9 +9895,9 @@ } }, "node_modules/client-zip": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/client-zip/-/client-zip-2.4.6.tgz", - "integrity": "sha512-e7t1u14h/yT0A12qBwFsaus8UZZ8+MCaNAEn/z53mrukLq/LFcKX7TkbntAppGu8he2p8pz9vc5NEGE/h4ohlw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/client-zip/-/client-zip-2.5.0.tgz", + "integrity": "sha512-ydG4nDZesbFurnNq0VVCp/yyomIBh+X/1fZPI/P24zbnG4dtC4tQAfI5uQsomigsUMeiRO2wiTPizLWQh+IAyQ==", "dev": true }, "node_modules/clipboard": { @@ -9363,15 +9957,15 @@ } }, "node_modules/cmdk": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.4.tgz", - "integrity": "sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", "dev": true, "dependencies": { - "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-id": "^1.1.0", - "@radix-ui/react-primitive": "^2.0.0", - "use-sync-external-store": "^1.2.2" + "@radix-ui/react-primitive": "^2.0.2" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", @@ -9639,9 +10233,9 @@ } }, "node_modules/core-js": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", - "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz", + "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -9649,11 +10243,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", - "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "dependencies": { - "browserslist": "^4.24.3" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -9661,9 +10255,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.40.0.tgz", - "integrity": "sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz", + "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -9924,9 +10518,9 @@ } }, "node_modules/cssdb": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.3.tgz", - "integrity": "sha512-9BDG5XmJrJQQnJ51VFxXCAtpZ5ebDlAREmO8sxMOVU0aSxN/gocbctjIG5LMh3WBUq+xTlb/jw2LoljBEqraTA==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.4.tgz", + "integrity": "sha512-3KSCVkjZJe/QxicVXnbyYSY26WsFc1YoMY7jep1ZKWMEVc7jEm6V2Xq2r+MX8WKQIuB7ofGbnr5iVI+aZpoSzg==", "funding": [ { "type": "opencollective", @@ -10508,9 +11102,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.5.101", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz", - "integrity": "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==" + "version": "1.5.119", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.119.tgz", + "integrity": "sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==" }, "node_modules/emittery": { "version": "0.13.1", @@ -10553,18 +11147,6 @@ "iconv-lite": "^0.6.2" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "devOptional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -10788,9 +11370,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", + "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -10799,31 +11381,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "@esbuild/aix-ppc64": "0.25.1", + "@esbuild/android-arm": "0.25.1", + "@esbuild/android-arm64": "0.25.1", + "@esbuild/android-x64": "0.25.1", + "@esbuild/darwin-arm64": "0.25.1", + "@esbuild/darwin-x64": "0.25.1", + "@esbuild/freebsd-arm64": "0.25.1", + "@esbuild/freebsd-x64": "0.25.1", + "@esbuild/linux-arm": "0.25.1", + "@esbuild/linux-arm64": "0.25.1", + "@esbuild/linux-ia32": "0.25.1", + "@esbuild/linux-loong64": "0.25.1", + "@esbuild/linux-mips64el": "0.25.1", + "@esbuild/linux-ppc64": "0.25.1", + "@esbuild/linux-riscv64": "0.25.1", + "@esbuild/linux-s390x": "0.25.1", + "@esbuild/linux-x64": "0.25.1", + "@esbuild/netbsd-arm64": "0.25.1", + "@esbuild/netbsd-x64": "0.25.1", + "@esbuild/openbsd-arm64": "0.25.1", + "@esbuild/openbsd-x64": "0.25.1", + "@esbuild/sunos-x64": "0.25.1", + "@esbuild/win32-arm64": "0.25.1", + "@esbuild/win32-ia32": "0.25.1", + "@esbuild/win32-x64": "0.25.1" } }, "node_modules/escalade": { @@ -11711,6 +12293,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -11724,6 +12311,17 @@ "node": ">=4" } }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fast-average-color": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/fast-average-color/-/fast-average-color-9.4.0.tgz", @@ -11810,9 +12408,9 @@ } }, "node_modules/fastq": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", - "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dependencies": { "reusify": "^1.0.4" } @@ -11966,9 +12564,9 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "peer": true }, "node_modules/follow-redirects": { @@ -12145,16 +12743,16 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -12816,11 +13414,12 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -14352,9 +14951,9 @@ } }, "node_modules/launch-editor": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", - "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", + "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -15010,9 +15609,9 @@ "dev": true }, "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "engines": { "node": ">=10" } @@ -15040,9 +15639,9 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.10.tgz", + "integrity": "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==", "funding": [ { "type": "github", @@ -15263,13 +15862,14 @@ } }, "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -15615,9 +16215,10 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", @@ -15744,9 +16345,9 @@ } }, "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.0.tgz", + "integrity": "sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==", "engines": { "node": ">=12.20" }, @@ -15773,9 +16374,9 @@ } }, "node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "funding": [ { "type": "opencollective", @@ -17115,9 +17716,9 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/preact": { - "version": "10.26.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.1.tgz", - "integrity": "sha512-K5aMG0NdGHZ8yV1GfGtGA4JwnWxe/HIDzyr9svdo2DeokLUJ/+W8MpeuPrfOytu5rHHgYQrvGxUoW83sapJZnw==", + "version": "10.26.4", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.4.tgz", + "integrity": "sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==", "dev": true, "funding": { "type": "opencollective", @@ -17196,6 +17797,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -17417,6 +18019,17 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -17440,9 +18053,9 @@ } }, "node_modules/re-resizable": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.10.3.tgz", - "integrity": "sha512-zvWb7X3RJMA4cuSrqoxgs3KR+D+pEXnGrD2FAD6BMYAULnZsSF4b7AOVyG6pC3VVNVOtlagGDCDmZSwWLjjBBw==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.11.2.tgz", + "integrity": "sha512-2xI2P3OHs5qw7K0Ud1aLILK6MQxW50TcO+DetD9eIV58j84TqYeHoZcL9H4GXFXXIh7afhH8mv5iUCXII7OW7A==", "dev": true, "peerDependencies": { "react": "^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", @@ -17498,9 +18111,9 @@ } }, "node_modules/react-easy-crop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-5.2.0.tgz", - "integrity": "sha512-gjb7jN+WnwfgpbNUI2jSwyoIxF1sJ0PVSNVgEysAgF1rj8AqR75fqmdvqZ6PFVgEX3rT1G4HJELesiQXr2ZvAg==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-5.4.1.tgz", + "integrity": "sha512-Djtsi7bWO75vkKYkVxNRrJWY69pXLahIAkUN0mmt9cXNnaq2tpG59ctSY6P7ipJgBc7COJDRMRuwb2lYwtACNQ==", "dev": true, "dependencies": { "normalize-wheel": "^1.0.1", @@ -18034,9 +18647,9 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -18100,9 +18713,9 @@ "dev": true }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dependencies": { "tslib": "^2.1.0" } @@ -18181,9 +18794,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.0.tgz", - "integrity": "sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.1.tgz", + "integrity": "sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==", "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -19092,11 +19705,11 @@ } }, "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, "node_modules/source-map-js": { @@ -19190,9 +19803,10 @@ } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true }, "node_modules/stack-utils": { "version": "2.0.6", @@ -19227,9 +19841,9 @@ } }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==" + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz", + "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==" }, "node_modules/streamx": { "version": "2.22.0", @@ -19577,9 +20191,9 @@ } }, "node_modules/stylelint-declaration-strict-value": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/stylelint-declaration-strict-value/-/stylelint-declaration-strict-value-1.10.7.tgz", - "integrity": "sha512-FlMvc3uoQtMcItW3Zh8lHJ7oN2KGns3vZDCaTZoGFRiRIjImQoxO+6gAeRf+Dgi0nXFICIPq9xxFsMi8zuYUsg==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/stylelint-declaration-strict-value/-/stylelint-declaration-strict-value-1.10.11.tgz", + "integrity": "sha512-oVQvhZlFZAiDz9r2BPFZLtTGm1A2JVhdKObKAJoTjFfR4F/NpApC4bMBTxf4sZS76Na3njYKVOaAaKSZ4+FU+g==", "peer": true, "engines": { "node": ">=18.12.0" @@ -19966,9 +20580,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -20360,9 +20974,9 @@ } }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -20443,9 +21057,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -20913,9 +21527,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "engines": { "node": ">=10.0.0" }, @@ -21089,14 +21703,15 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -21245,9 +21860,9 @@ } }, "node_modules/y-webrtc/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "dev": true, "optional": true, "engines": { @@ -21325,9 +21940,9 @@ } }, "node_modules/yjs": { - "version": "13.6.23", - "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.23.tgz", - "integrity": "sha512-ExtnT5WIOVpkL56bhLeisG/N5c4fmzKn4k0ROVfJa5TY2QHbH7F0Wu2T5ZhR7ErsFWQEFafyrnSI8TPKVF9Few==", + "version": "13.6.24", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.24.tgz", + "integrity": "sha512-xn/pYLTZa3uD1uDG8lpxfLRo5SR/rp0frdASOl2a71aYNvUXdWcLtVL91s2y7j+Q8ppmjZ9H3jsGVgoFMbT2VA==", "dev": true, "dependencies": { "lib0": "^0.2.99" diff --git a/package.json b/package.json index 6ccdbd6..e4995f2 100644 --- a/package.json +++ b/package.json @@ -23,8 +23,9 @@ "test": "10up-toolkit test-unit-jest" }, "dependencies": { - "@10up/block-components": "dev-develop", - "10up-toolkit": "^6.4.0" + "@10up/block-components": "^1.20.0", + "10up-toolkit": "^6.4.0", + "uuid": "^11.1.0" }, "10up-toolkit": { "entry": { @@ -38,7 +39,6 @@ "@wordpress/edit-post": "^8.18.0", "@wordpress/editor": "^14.18.0", "@wordpress/html-entities": "^4.18.0", - "@wordpress/url": "^4.18.0", - "prettier": "^3.5.3" + "@wordpress/url": "^4.18.0" } } From 8c30bcc45d478d9e9f218776d9146065cf30e56c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Santos?= Date: Mon, 17 Mar 2025 15:23:12 +0000 Subject: [PATCH 6/7] Rename extended attributes and add initial support for the relationship query --- assets/js/block-extensions/core-query.js | 86 ++++++++---- .../QueryBlockIntegration.php | 122 ++++++++++++++++++ 2 files changed, 183 insertions(+), 25 deletions(-) diff --git a/assets/js/block-extensions/core-query.js b/assets/js/block-extensions/core-query.js index 260b79b..2ea8466 100644 --- a/assets/js/block-extensions/core-query.js +++ b/assets/js/block-extensions/core-query.js @@ -31,9 +31,10 @@ import { store } from '../store'; const BlockEdit = ({ setAttributes, attributes }) => { const { query: { postType: queriedPostType }, - showRelated, - relationshipName, - sourcePosts, + relationshipQuery, + relationshipKey, + relationshipPost, + relationshipOrderBy, } = attributes; const { @@ -53,7 +54,7 @@ const BlockEdit = ({ setAttributes, attributes }) => { const currentPostId = select(editorStore).getCurrentPostId(); const currentPostType = select(editorStore).getCurrentPostType(); const postRelationships = select(store).getRelationships( - sourcePosts?.[0]?.id || currentPostId, + relationshipPost?.[0]?.id || currentPostId, ); const postTypeRelationships = Object.values(postRelationships).filter( (relationship) => @@ -69,7 +70,7 @@ const BlockEdit = ({ setAttributes, attributes }) => { currentPostType, }; }, - [queriedPostType, sourcePosts?.length], + [queriedPostType, relationshipPost?.length], ); const postTypesSlugs = useMemo(() => (postTypes || []).map(({ slug }) => slug), [postTypes]); @@ -77,47 +78,67 @@ const BlockEdit = ({ setAttributes, attributes }) => { const postTypeRelationshipsOptions = useMemo( () => postTypeRelationships.map((relationship) => ({ - value: relationship.rel_name, + value: relationship.rel_key, label: relationship.labels.name, })), [postTypeRelationships], ); + const selectedRelationshipKey = useMemo( + () => + relationshipKey && postTypeRelationships.some((rel) => rel.rel_key === relationshipKey) + ? relationshipKey + : postTypeRelationships[0]?.rel_key, + [relationshipKey, postTypeRelationships], + ); + + const selectedRelationship = useMemo( + () => + postTypeRelationships.find( + (relationship) => relationship.rel_key === selectedRelationshipKey, + ), + [postTypeRelationships, selectedRelationshipKey], + ); + const postTypeRelationshipsControlLabel = __('Relationship', 'tenup-content-connect'); const postTypeRelationshipsControlHelp = __( 'Select a relationship to determine how related items are retrieved.', 'tenup-content-connect', ); - const sourcePostsControlHelp = __( + const relationshipPostControlHelp = __( 'Choose the post from which related items will be pulled. Defaults to the current post.', 'tenup-content-connect', ); const onPostTypeRelationshipChange = (value) => { - setAttributes({ relationshipName: value }); + setAttributes({ relationshipKey: value }); }; const resetAll = () => { setAttributes({ - showRelated: false, - sourcePosts: undefined, - relationshipName: undefined, + relationshipQuery: false, + relationshipPost: undefined, + relationshipKey: undefined, + relationshipOrderBy: true, }); }; return ( - + { if (!value) { resetAll(); } else { setAttributes({ - showRelated: value, - sourcePosts: [ + relationshipQuery: value, + relationshipPost: [ { id: currentPostId, type: currentPostType, @@ -128,32 +149,32 @@ const BlockEdit = ({ setAttributes, attributes }) => { } }} /> - {showRelated && ( - + {relationshipQuery && ( + - setAttributes({ sourcePosts: ids.length ? ids : undefined }) + setAttributes({ relationshipPost: ids.length ? ids : undefined }) } mode="post" - content={sourcePosts} + content={relationshipPost} contentTypes={postTypesSlugs} singlePickedLabel={__('Selected post:', 'tenup-content-connect')} multiPickedLabel={__('Selected posts:', 'tenup-content-connect')} /> )} - {showRelated && postTypeRelationshipsOptions.length > 1 && ( + {relationshipQuery && postTypeRelationshipsOptions.length > 1 && ( )} - {showRelated && !hasPostRelationships && ( + {relationshipQuery && !hasPostRelationships && ( {__( 'No relationships exist for the selected post type or post. Try selecting a different post or post type.', @@ -161,6 +182,17 @@ const BlockEdit = ({ setAttributes, attributes }) => { )} )} + {relationshipQuery && selectedRelationship?.sortable && ( + setAttributes({ relationshipOrderBy: value })} + help={__( + 'If enabled, the order of the related items will be determined by the relationship.', + 'tenup-content-connect', + )} + /> + )} ); @@ -169,16 +201,20 @@ const BlockEdit = ({ setAttributes, attributes }) => { registerBlockExtension('core/query', { extensionName: 'content-connect', attributes: { - showRelated: { + relationshipQuery: { type: 'boolean', default: false, }, - sourcePosts: { + relationshipPost: { type: 'array', }, - relationshipName: { + relationshipKey: { type: 'string', }, + relationshipOrderBy: { + type: 'boolean', + default: true, + }, }, classNameGenerator: () => '', Edit: BlockEdit, diff --git a/includes/QueryIntegration/QueryBlockIntegration.php b/includes/QueryIntegration/QueryBlockIntegration.php index 308aa21..fc2f415 100644 --- a/includes/QueryIntegration/QueryBlockIntegration.php +++ b/includes/QueryIntegration/QueryBlockIntegration.php @@ -2,8 +2,130 @@ namespace TenUp\ContentConnect\QueryIntegration; +use function TenUp\ContentConnect\Helpers\get_post_to_post_relationships_data; + class QueryBlockIntegration { + /** + * The block with its attributes before it gets rendered. + * + * @var array + */ + public $parsed_block; + + /** + * Setup the Query block integration module. + * + * @since 1.7.0 + */ public function setup() { + add_action( 'pre_render_block', [ $this, 'modify_query_loop_query' ], 10, 2 ); + } + + /** + * Modifies the query loop to include the post picker posts. + * + * @param string $block_content The block content. + * @param array $block The block object. + * @return string + */ + public function modify_query_loop_query( $block_content, $block ) { + + if ( ! $this->is_query_block( $block ) ) { + return $block_content; + } + + $this->parsed_block = $block; + + add_filter( 'query_loop_block_query_vars', [ $this, 'get_query_by_attributes_once' ] ); + + return $block_content; + } + + /** + * Remove the query block filter and parse the custom query. + * + * @param array $query_args Array containing parameters for `WP_Query`. + * @return array + */ + public function get_query_by_attributes_once( $query_args ) { + remove_filter( 'query_loop_block_query_vars', [ $this, 'get_query_by_attributes_once' ] ); + return $this->get_query_by_attributes( $query_args, $this->parsed_block ); + } + + /** + * Returns a custom query based on block attributes. + * + * @param array $query_args Array containing parameters for `WP_Query`. + * @param array $block The block being rendered. + * @return array + */ + public function get_query_by_attributes( $query_args, $block ) { + + if ( ! $this->is_query_block( $block ) ) { + return $query_args; + } + + if ( empty( $block['attrs']['relationshipQuery'] ) ) { + return $query_args; + } + + if ( empty( $block['attrs']['relationshipPost'] ) ) { + return $query_args; + } + + $post_id = wp_list_pluck( $block['attrs']['relationshipPost'], 'id' ); + + if ( empty( $post_id ) ) { + return $query_args; + } + + $post_id = reset( $post_id ); + $other_post_type = $block['attrs']['query']['postType']; + + $post_relationships = get_post_to_post_relationships_data( $post_id, $other_post_type ); + + if ( empty( $post_relationships ) ) { + return $query_args; + } + + $relationship_key = ''; + if ( ! empty( $block['attrs']['relationshipKey'] ) ) { + $relationship_key = $block['attrs']['relationshipKey']; + } + + $relationship_query = array(); + + foreach ( $post_relationships as $post_relationship ) { + + if ( ! empty( $relationship_key ) && $relationship_key !== $post_relationship['rel_key'] ) { + continue; + } + + $relationship_query[] = array( + 'name' => $post_relationship['rel_name'], + 'related_to_post' => $post_id, + ); + } + + if ( ! empty( $relationship_query ) ) { + $query_args['relationship_query'] = $relationship_query; + } + + if ( ! isset( $block['attrs']['relationshipOrderBy'] ) || ! empty( $block['attrs']['relationshipOrderBy'] ) ) { + $query_args['orderby'] = 'relationship'; + } + + return $query_args; + } + + /** + * Check if the block is a Query block. + * + * @param array $block The block object. + * @return bool + */ + public function is_query_block( $block ) { + return ! empty( $block['blockName'] ) && 'core/query' === $block['blockName']; } } From 150c31e8a9dbf832105426e72005aa129fc9b782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Santos?= Date: Tue, 18 Mar 2025 00:55:32 +0000 Subject: [PATCH 7/7] Updates for Query Loop editor and front-end queries --- assets/js/block-extensions/core-query.js | 183 ++++++++++-------- includes/API/V2/Post/Field/Relationships.php | 4 + .../QueryBlockIntegration.php | 120 +++++++----- 3 files changed, 171 insertions(+), 136 deletions(-) diff --git a/assets/js/block-extensions/core-query.js b/assets/js/block-extensions/core-query.js index 2ea8466..fa65798 100644 --- a/assets/js/block-extensions/core-query.js +++ b/assets/js/block-extensions/core-query.js @@ -21,7 +21,7 @@ import { useSelect } from '@wordpress/data'; import { __ } from '@wordpress/i18n'; import { store as coreStore } from '@wordpress/core-data'; import { store as editorStore } from '@wordpress/editor'; -import { useMemo } from '@wordpress/element'; +import { useMemo, useEffect, useRef } from '@wordpress/element'; /** * Internal dependencies @@ -29,116 +29,129 @@ import { useMemo } from '@wordpress/element'; import { store } from '../store'; const BlockEdit = ({ setAttributes, attributes }) => { - const { - query: { postType: queriedPostType }, - relationshipQuery, - relationshipKey, - relationshipPost, - relationshipOrderBy, - } = attributes; - - const { - postTypes, - postTypeRelationships, - hasPostRelationships, - currentPostId, - currentPostType, - } = useSelect( - (select) => { - const { getPostTypes } = select(coreStore); - const excludedPostTypes = ['attachment']; - const filteredPostTypes = getPostTypes({ per_page: -1 })?.filter( - ({ viewable, slug }) => viewable && !excludedPostTypes.includes(slug), - ); - - const currentPostId = select(editorStore).getCurrentPostId(); - const currentPostType = select(editorStore).getCurrentPostType(); - const postRelationships = select(store).getRelationships( - relationshipPost?.[0]?.id || currentPostId, - ); - const postTypeRelationships = Object.values(postRelationships).filter( - (relationship) => - Array.isArray(relationship.post_type) && - relationship.post_type.includes(queriedPostType), - ); - - return { - postTypes: filteredPostTypes, - postTypeRelationships, - hasPostRelationships: postTypeRelationships.length > 0, - currentPostId, - currentPostType, - }; - }, - [queriedPostType, relationshipPost?.length], - ); + const { query, showRelated, relationshipKey, sourcePost, orderByRelationship } = attributes; + const { postType: queriedPostType } = query; + + const { postTypes, relationships, hasRelationships, currentPostId, currentPostType } = + useSelect( + (select) => { + const { getPostTypes } = select(coreStore); + const excludedPostTypes = ['attachment']; + const filteredPostTypes = getPostTypes({ per_page: -1 })?.filter( + ({ viewable, slug }) => viewable && !excludedPostTypes.includes(slug), + ); + + const currentPostId = select(editorStore).getCurrentPostId(); + const currentPostType = select(editorStore).getCurrentPostType(); + + const postRelationships = select(store).getRelationships( + sourcePost?.[0]?.id || currentPostId, + ); + const filteredRelationships = Object.values(postRelationships).filter( + (relationship) => + Array.isArray(relationship.post_type) && + relationship.post_type.includes(queriedPostType), + ); + + return { + postTypes: filteredPostTypes, + relationships: filteredRelationships, + hasRelationships: filteredRelationships.length > 0, + currentPostId, + currentPostType, + }; + }, + [queriedPostType, sourcePost?.length], + ); const postTypesSlugs = useMemo(() => (postTypes || []).map(({ slug }) => slug), [postTypes]); - const postTypeRelationshipsOptions = useMemo( + const relationshipsOptions = useMemo( () => - postTypeRelationships.map((relationship) => ({ + relationships.map((relationship) => ({ value: relationship.rel_key, label: relationship.labels.name, })), - [postTypeRelationships], + [relationships], ); const selectedRelationshipKey = useMemo( () => - relationshipKey && postTypeRelationships.some((rel) => rel.rel_key === relationshipKey) + relationshipKey && relationships.some((rel) => rel.rel_key === relationshipKey) ? relationshipKey - : postTypeRelationships[0]?.rel_key, - [relationshipKey, postTypeRelationships], + : relationships[0]?.rel_key, + [relationshipKey, relationships], ); const selectedRelationship = useMemo( () => - postTypeRelationships.find( - (relationship) => relationship.rel_key === selectedRelationshipKey, - ), - [postTypeRelationships, selectedRelationshipKey], + relationships.find((relationship) => relationship.rel_key === selectedRelationshipKey), + [relationships, selectedRelationshipKey], ); - const postTypeRelationshipsControlLabel = __('Relationship', 'tenup-content-connect'); - const postTypeRelationshipsControlHelp = __( + const lastQueryRef = useRef(query); + + const updatedQuery = useMemo(() => { + if (!showRelated || !selectedRelationship) { + const { relationshipQuery, orderByRelationship, ...cleanQuery } = query; + return cleanQuery; + } + + return { + ...query, + orderByRelationship: orderByRelationship && selectedRelationship.sortable, + relationshipQuery: [ + { + name: selectedRelationship.rel_name, + related_to_post: sourcePost?.[0]?.id || currentPostId, + }, + ], + }; + }, [query, showRelated, orderByRelationship, selectedRelationship, sourcePost, currentPostId]); + + useEffect(() => { + if (JSON.stringify(lastQueryRef.current) !== JSON.stringify(updatedQuery)) { + setAttributes({ query: updatedQuery }); + lastQueryRef.current = updatedQuery; + } + }, [updatedQuery, setAttributes]); + + const relationshipsControlLabel = __('Relationship', 'tenup-content-connect'); + const relationshipsControlHelp = __( 'Select a relationship to determine how related items are retrieved.', 'tenup-content-connect', ); - const relationshipPostControlHelp = __( + const sourcePostControlHelp = __( 'Choose the post from which related items will be pulled. Defaults to the current post.', 'tenup-content-connect', ); - const onPostTypeRelationshipChange = (value) => { + const onRelationshipChange = (value) => { setAttributes({ relationshipKey: value }); }; const resetAll = () => { setAttributes({ - relationshipQuery: false, - relationshipPost: undefined, + showRelated: false, + sourcePost: undefined, relationshipKey: undefined, - relationshipOrderBy: true, + orderByRelationship: true, }); }; return ( - + { if (!value) { resetAll(); } else { setAttributes({ - relationshipQuery: value, - relationshipPost: [ + showRelated: value, + sourcePost: [ { id: currentPostId, type: currentPostType, @@ -149,32 +162,32 @@ const BlockEdit = ({ setAttributes, attributes }) => { } }} /> - {relationshipQuery && ( - + {showRelated && ( + - setAttributes({ relationshipPost: ids.length ? ids : undefined }) + setAttributes({ sourcePost: ids.length ? ids : undefined }) } mode="post" - content={relationshipPost} + content={sourcePost} contentTypes={postTypesSlugs} singlePickedLabel={__('Selected post:', 'tenup-content-connect')} multiPickedLabel={__('Selected posts:', 'tenup-content-connect')} /> )} - {relationshipQuery && postTypeRelationshipsOptions.length > 1 && ( + {showRelated && relationshipsOptions.length > 1 && ( )} - {relationshipQuery && !hasPostRelationships && ( + {showRelated && !hasRelationships && ( {__( 'No relationships exist for the selected post type or post. Try selecting a different post or post type.', @@ -182,11 +195,11 @@ const BlockEdit = ({ setAttributes, attributes }) => { )} )} - {relationshipQuery && selectedRelationship?.sortable && ( + {showRelated && selectedRelationship?.sortable && ( setAttributes({ relationshipOrderBy: value })} + checked={orderByRelationship} + onChange={(value) => setAttributes({ orderByRelationship: value })} help={__( 'If enabled, the order of the related items will be determined by the relationship.', 'tenup-content-connect', @@ -201,17 +214,17 @@ const BlockEdit = ({ setAttributes, attributes }) => { registerBlockExtension('core/query', { extensionName: 'content-connect', attributes: { - relationshipQuery: { + showRelated: { type: 'boolean', default: false, }, - relationshipPost: { + sourcePost: { type: 'array', }, relationshipKey: { type: 'string', }, - relationshipOrderBy: { + orderByRelationship: { type: 'boolean', default: true, }, diff --git a/includes/API/V2/Post/Field/Relationships.php b/includes/API/V2/Post/Field/Relationships.php index b4bfa66..6b6c8d6 100644 --- a/includes/API/V2/Post/Field/Relationships.php +++ b/includes/API/V2/Post/Field/Relationships.php @@ -23,6 +23,10 @@ public function register_fields() { foreach ( $post_types as $post_type ) { + if ( 'attachment' === $post_type ) { + continue; + } + register_rest_field( $post_type, 'relationships', diff --git a/includes/QueryIntegration/QueryBlockIntegration.php b/includes/QueryIntegration/QueryBlockIntegration.php index fc2f415..40f1a40 100644 --- a/includes/QueryIntegration/QueryBlockIntegration.php +++ b/includes/QueryIntegration/QueryBlockIntegration.php @@ -19,11 +19,60 @@ class QueryBlockIntegration { * @since 1.7.0 */ public function setup() { - add_action( 'pre_render_block', [ $this, 'modify_query_loop_query' ], 10, 2 ); + add_action( 'rest_api_init', array( $this, 'rest_api_init' ) ); + add_action( 'pre_render_block', array( $this, 'modify_query_loop_query' ), 10, 2 ); } /** - * Modifies the query loop to include the post picker posts. + * Registers the necessary REST API modifications for supported post types. + * + * @since 1.7.0 + * + * @return void + */ + public function rest_api_init() { + + $post_types = get_post_types( array( 'public' => true ) ); + $excluded_post_types = array( 'attachment' ); + + foreach ( $post_types as $post_type ) { + + if ( in_array( $post_type, $excluded_post_types, true ) ) { + continue; + } + + add_filter( "rest_{$post_type}_query", array( $this, 'rest_post_query' ), 10, 2 ); + } + } + + /** + * Modifies the REST API query to support relationship-based filtering and ordering. + * + * @since 1.7.0 + * + * @param array $args Array of arguments for \WP_Query. + * @param array $request The REST API request. + * @return array Modified query arguments. + */ + public function rest_post_query( $args, $request ) { + + if ( isset( $request['relationshipQuery'] ) ) { + $args['relationship_query'] = $request['relationshipQuery']; + } + + $order_by_relationship = rest_sanitize_boolean( $request['orderByRelationship'] ?? false ); + + if ( ! empty( $order_by_relationship ) ) { + $args['orderby'] = 'relationship'; + } + + return $args; + } + + /** + * Modifies the query loop arguments when the block is rendered on the front end. + * + * @since 1.7.0 * * @param string $block_content The block content. * @param array $block The block object. @@ -37,24 +86,31 @@ public function modify_query_loop_query( $block_content, $block ) { $this->parsed_block = $block; - add_filter( 'query_loop_block_query_vars', [ $this, 'get_query_by_attributes_once' ] ); + add_filter( 'query_loop_block_query_vars', array( $this, 'get_query_by_attributes_once' ) ); return $block_content; } /** - * Remove the query block filter and parse the custom query. + * Applies custom query modifications based on block attributes, then removes itself. + * + * @since 1.7.0 * * @param array $query_args Array containing parameters for `WP_Query`. * @return array */ public function get_query_by_attributes_once( $query_args ) { - remove_filter( 'query_loop_block_query_vars', [ $this, 'get_query_by_attributes_once' ] ); + if ( has_filter( 'query_loop_block_query_vars', array( $this, 'get_query_by_attributes_once' ) ) ) { + remove_filter( 'query_loop_block_query_vars', array( $this, 'get_query_by_attributes_once' ) ); + } + return $this->get_query_by_attributes( $query_args, $this->parsed_block ); } /** - * Returns a custom query based on block attributes. + * Generates a modified query based on the block attributes. + * + * @since 1.7.0 * * @param array $query_args Array containing parameters for `WP_Query`. * @param array $block The block being rendered. @@ -66,53 +122,13 @@ public function get_query_by_attributes( $query_args, $block ) { return $query_args; } - if ( empty( $block['attrs']['relationshipQuery'] ) ) { - return $query_args; - } - - if ( empty( $block['attrs']['relationshipPost'] ) ) { - return $query_args; - } - - $post_id = wp_list_pluck( $block['attrs']['relationshipPost'], 'id' ); - - if ( empty( $post_id ) ) { - return $query_args; - } - - $post_id = reset( $post_id ); - $other_post_type = $block['attrs']['query']['postType']; + $query_attrs = $block['attrs']['query'] ?? []; - $post_relationships = get_post_to_post_relationships_data( $post_id, $other_post_type ); - - if ( empty( $post_relationships ) ) { - return $query_args; - } - - $relationship_key = ''; - if ( ! empty( $block['attrs']['relationshipKey'] ) ) { - $relationship_key = $block['attrs']['relationshipKey']; + if ( ! empty( $query_attrs['relationshipQuery'] ) ) { + $query_args['relationship_query'] = $query_attrs['relationshipQuery']; } - $relationship_query = array(); - - foreach ( $post_relationships as $post_relationship ) { - - if ( ! empty( $relationship_key ) && $relationship_key !== $post_relationship['rel_key'] ) { - continue; - } - - $relationship_query[] = array( - 'name' => $post_relationship['rel_name'], - 'related_to_post' => $post_id, - ); - } - - if ( ! empty( $relationship_query ) ) { - $query_args['relationship_query'] = $relationship_query; - } - - if ( ! isset( $block['attrs']['relationshipOrderBy'] ) || ! empty( $block['attrs']['relationshipOrderBy'] ) ) { + if ( ! empty( $query_attrs['orderByRelationship'] ) ) { $query_args['orderby'] = 'relationship'; } @@ -120,7 +136,9 @@ public function get_query_by_attributes( $query_args, $block ) { } /** - * Check if the block is a Query block. + * Determines if a given block is a Query Loop block. + * + * @since 1.7.0 * * @param array $block The block object. * @return bool