From 0e65ea53cca937aa850d84c653d66dd4fb0cf230 Mon Sep 17 00:00:00 2001 From: Kader Ibrahim S Date: Fri, 8 Sep 2023 19:17:27 +0530 Subject: [PATCH 01/81] Updates the endpoint to fetch marketing knowledgebase posts. --- .../Admin/Marketing/MarketingSpecs.php | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php b/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php index c1938c6acb1..1c4ebf2d44c 100644 --- a/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php +++ b/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php @@ -136,43 +136,29 @@ class MarketingSpecs { /** * Load knowledge base posts from WooCommerce.com * - * @param string|null $term Term of posts to retrieve. + * @param string|null $topic The topic of marketing knowledgebase to retrieve. * @return array */ - public function get_knowledge_base_posts( ?string $term ): array { - $terms = array( - 'marketing' => array( - 'taxonomy' => 'category', - 'term_id' => 1744, - 'argument' => 'categories', - ), - 'coupons' => array( - 'taxonomy' => 'post_tag', - 'term_id' => 1377, - 'argument' => 'tags', - ), - ); + public function get_knowledge_base_posts( ?string $topic ): array { + $available_topics = array( 'marketing', 'coupons' ); - // Default to the marketing category (if no term is set on the kb component). - if ( empty( $term ) || ! array_key_exists( $term, $terms ) ) { - $term = 'marketing'; + // Default to the marketing topic (if no topic is set on the kb component). + if ( empty( $topic ) || ! in_array( $topic, $available_topics, true ) ) { + $topic = 'marketing'; } - $term_id = $terms[ $term ]['term_id']; - $argument = $terms[ $term ]['argument']; - $kb_transient = self::KNOWLEDGE_BASE_TRANSIENT . '_' . strtolower( $term ); + $kb_transient = self::KNOWLEDGE_BASE_TRANSIENT . '_' . strtolower( $topic ); $posts = get_transient( $kb_transient ); if ( false === $posts ) { $request_url = add_query_arg( array( - $argument => $term_id, 'page' => 1, 'per_page' => 8, '_embed' => 1, ), - 'https://woocommerce.com/wp-json/wp/v2/posts?utm_medium=product' + 'https://woocommerce.com/wccom/marketing-knowledgebase/v1/posts/' . $topic ); $request = wp_remote_get( From d339e9ff5bbd8bc4c795223bc7810fd602f3523c Mon Sep 17 00:00:00 2001 From: Dan Q Date: Mon, 18 Sep 2023 10:47:12 +0100 Subject: [PATCH 02/81] Rather than adding border, add color to border of search box This prevents the "jiggle" issue. --- .../client/marketplace/components/search/search.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/marketplace/components/search/search.scss b/plugins/woocommerce-admin/client/marketplace/components/search/search.scss index d65c24f36b1..30b0596099f 100644 --- a/plugins/woocommerce-admin/client/marketplace/components/search/search.scss +++ b/plugins/woocommerce-admin/client/marketplace/components/search/search.scss @@ -3,6 +3,7 @@ .woocommerce-marketplace__search { grid-area: mktpl-search; background: $gutenberg-gray-100; + border: 1.5px solid transparent; border-radius: 2px; display: flex; height: 40px; @@ -15,7 +16,7 @@ &:focus-within { background: #fff; - border: 1.5px solid var(--wp-admin-theme-color, #3858e9); + border-color: var(--wp-admin-theme-color, #3858e9); } @media (width <= $breakpoint-medium) { From 2720fe0993a361aaccd8f252111e0caa52a24218 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 18 Sep 2023 09:57:25 +0000 Subject: [PATCH 03/81] Add changefile(s) from automation for the following project(s): woocommerce --- .../woocommerce/changelog/fix-wccom-18179-search-box-border | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-wccom-18179-search-box-border diff --git a/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border b/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border new file mode 100644 index 00000000000..5625300eec7 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border @@ -0,0 +1,5 @@ +Significance: patch +Type: fix +Comment: Prevented a 1.5px cosmetic shift of contents in the Extension Search box when focussing/unfocussing. + + From bb2826ac9a9eb6d2c5e822c2398e16bde4c0342c Mon Sep 17 00:00:00 2001 From: Kader Ibrahim S Date: Tue, 19 Sep 2023 12:18:45 +0530 Subject: [PATCH 04/81] Sets the correct URL for the marketing KB API endpoint. --- .../woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php b/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php index 1c4ebf2d44c..08987aabeb9 100644 --- a/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php +++ b/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php @@ -158,7 +158,7 @@ class MarketingSpecs { 'per_page' => 8, '_embed' => 1, ), - 'https://woocommerce.com/wccom/marketing-knowledgebase/v1/posts/' . $topic + 'https://woocommerce.com/wp-json/wccom/marketing-knowledgebase/v1/posts/' . $topic ); $request = wp_remote_get( From 5293dbeb62855c7bb7851cbea4aeb08a9b5df2ec Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 19 Sep 2023 07:33:08 +0000 Subject: [PATCH 05/81] Add changefile(s) from automation for the following project(s): woocommerce --- plugins/woocommerce/changelog/update-marketing-kb-endpoints | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/update-marketing-kb-endpoints diff --git a/plugins/woocommerce/changelog/update-marketing-kb-endpoints b/plugins/woocommerce/changelog/update-marketing-kb-endpoints new file mode 100644 index 00000000000..56d490a25cf --- /dev/null +++ b/plugins/woocommerce/changelog/update-marketing-kb-endpoints @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Updates the marketing knowledgebase API endpoint From 915350800b307deade6ef997ff2976739b093496 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Tue, 19 Sep 2023 14:10:35 -0300 Subject: [PATCH 06/81] save hpos order data before clearing the order from cache --- plugins/woocommerce/changelog/fix-hpos-save-before-cache | 4 ++++ .../Internal/DataStores/Orders/OrdersTableDataStore.php | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-hpos-save-before-cache diff --git a/plugins/woocommerce/changelog/fix-hpos-save-before-cache b/plugins/woocommerce/changelog/fix-hpos-save-before-cache new file mode 100644 index 00000000000..aefb0493c3e --- /dev/null +++ b/plugins/woocommerce/changelog/fix-hpos-save-before-cache @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +save hpos order data before clearing the order from cache diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php index dc7d37f2bc0..45aa8333ed1 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php @@ -2924,15 +2924,17 @@ CREATE TABLE $meta_table ( */ protected function after_meta_change( &$order, $meta ) { method_exists( $meta, 'apply_changes' ) && $meta->apply_changes(); - $this->clear_caches( $order ); + $order_saved = false; // Prevent this happening multiple time in same request. if ( $this->should_save_after_meta_change( $order ) ) { $order->set_date_modified( current_time( 'mysql' ) ); $order->save(); - return true; + $order_saved = true; } - return false; + + $this->clear_caches( $order ); + return $order_saved; } /** From c6afc7a4c3d0fbb94b78b6b22257461126a65df8 Mon Sep 17 00:00:00 2001 From: Vedanshu Jain Date: Thu, 21 Sep 2023 12:47:31 +0530 Subject: [PATCH 07/81] Use less invasive cache validation for after meta cache. Entire cache is still invalidated on an object save. --- .../Orders/OrdersTableDataStore.php | 9 +++-- .../Orders/OrdersTableDataStoreTests.php | 37 +++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php index 45aa8333ed1..97a76222966 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php @@ -2924,17 +2924,18 @@ CREATE TABLE $meta_table ( */ protected function after_meta_change( &$order, $meta ) { method_exists( $meta, 'apply_changes' ) && $meta->apply_changes(); - $order_saved = false; // Prevent this happening multiple time in same request. if ( $this->should_save_after_meta_change( $order ) ) { $order->set_date_modified( current_time( 'mysql' ) ); $order->save(); - $order_saved = true; + return true; + } else { + $order_cache = wc_get_container()->get( OrderCache::class ); + $order_cache->remove( $order->get_id() ); } - $this->clear_caches( $order ); - return $order_saved; + return false; } /** diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php index c7f26cd8652..5ec49afe448 100644 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php @@ -3006,4 +3006,41 @@ class OrdersTableDataStoreTests extends HposTestCase { $this->assertEquals( 0, count( $query->orders ) ); } + /** + * @testDox Hooking into woocommerce_delete_shop_order_transients does not cause data loss. + */ + public function test_data_retained_when_hooked_in_cache_filter() { + $this->toggle_cot_authoritative( true ); + $this->enable_cot_sync(); + + add_action( 'woocommerce_delete_shop_order_transients', function ( $order_id ) { + wc_get_order( $order_id ); + } ); + $order = OrderHelper::create_order(); + remove_all_actions( 'woocommerce_delete_shop_order_transients' ); + + $this->assertEquals( 1, $order->get_customer_id() ); + + $r_order = wc_get_order( $order->get_id() ); + $this->assertEquals( 1, $r_order->get_customer_id() ); + } + + /** + * @testDox Cache is cleared when order meta is saved. + */ + public function test_order_cache_is_cleared_on_meta_save() { + $this->toggle_cot_authoritative( true ); + $this->enable_cot_sync(); + + $order = OrderHelper::create_order(); + + // set the cache + wc_get_order( $order->get_id() ); + + $order->add_meta_data( 'test_key', 'test_value' ); + $order->save_meta_data(); + + $r_order = wc_get_order( $order->get_id() ); + $this->assertEquals( 'test_value', $r_order->get_meta( 'test_key' ) ); + } } From 4f425aca340d634ff580f0fc44d6b82b5abc267b Mon Sep 17 00:00:00 2001 From: Vedanshu Jain Date: Thu, 21 Sep 2023 13:22:17 +0530 Subject: [PATCH 08/81] Move clear cache to after backfilling bit is set as its not atomic. --- .../DataStores/Orders/OrdersTableDataStore.php | 4 ++-- .../DataStores/Orders/OrdersTableDataStoreTests.php | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php index 97a76222966..d7b562f367e 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php @@ -2523,9 +2523,9 @@ FROM $order_meta_table $order->save_meta_data(); if ( $backfill ) { - $this->clear_caches( $order ); self::$backfilling_order_ids[] = $order->get_id(); - $r_order = wc_get_order( $order->get_id() ); // Refresh order to account for DB changes from post hooks. + $this->clear_caches( $order ); + $r_order = wc_get_order( $order->get_id() ); // Refresh order to account for DB changes from post hooks. $this->maybe_backfill_post_record( $r_order ); self::$backfilling_order_ids = array_diff( self::$backfilling_order_ids, array( $order->get_id() ) ); } diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php index 5ec49afe448..1a0608cc8f0 100644 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php @@ -3017,12 +3017,20 @@ class OrdersTableDataStoreTests extends HposTestCase { wc_get_order( $order_id ); } ); $order = OrderHelper::create_order(); - remove_all_actions( 'woocommerce_delete_shop_order_transients' ); $this->assertEquals( 1, $order->get_customer_id() ); $r_order = wc_get_order( $order->get_id() ); $this->assertEquals( 1, $r_order->get_customer_id() ); + + $this->reset_order_data_store_state( wc_get_container()->get( OrdersTableDataStore::class ) ); + $order->set_customer_id( 2 ); + $order->save(); + + $r_order = wc_get_order( $order->get_id() ); + $this->assertEquals( 2, $r_order->get_customer_id() ); + + remove_all_actions( 'woocommerce_delete_shop_order_transients' ); } /** From 6e83c3c9e6cbdaa5a455c1acf73b23e6b94c63bd Mon Sep 17 00:00:00 2001 From: Vlad Olaru Date: Thu, 21 Sep 2023 15:54:27 +0300 Subject: [PATCH 09/81] Remove custom button styling and defer to core styling --- .../woocommerce-admin/client/payments-welcome/style.scss | 8 -------- 1 file changed, 8 deletions(-) diff --git a/plugins/woocommerce-admin/client/payments-welcome/style.scss b/plugins/woocommerce-admin/client/payments-welcome/style.scss index 289492995b8..7a0636dfadd 100644 --- a/plugins/woocommerce-admin/client/payments-welcome/style.scss +++ b/plugins/woocommerce-admin/client/payments-welcome/style.scss @@ -189,14 +189,6 @@ button { margin-left: 0.5em; } - - button.is-destructive { - background-color: #cc1818; - color: #fff; - &:hover { - color: #fff !important; - } - } } } } From 81d5df92e826ba56a292fb357f35e249af80f9ec Mon Sep 17 00:00:00 2001 From: Vlad Olaru Date: Thu, 21 Sep 2023 15:58:18 +0300 Subject: [PATCH 10/81] Add changelog entry --- .../fix-39936-incentives-exit-survey-just-dismiss-styling | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-39936-incentives-exit-survey-just-dismiss-styling diff --git a/plugins/woocommerce/changelog/fix-39936-incentives-exit-survey-just-dismiss-styling b/plugins/woocommerce/changelog/fix-39936-incentives-exit-survey-just-dismiss-styling new file mode 100644 index 00000000000..36a74923101 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-39936-incentives-exit-survey-just-dismiss-styling @@ -0,0 +1,5 @@ +Significance: patch +Type: fix +Comment: This is a tiny fix of the Incentives exit survey dismiss button hover behavior. + + From 97697fcdbbc68664c3522cfe145e312a6ed61e84 Mon Sep 17 00:00:00 2001 From: Jorge Torres Date: Thu, 21 Sep 2023 14:15:43 +0100 Subject: [PATCH 11/81] Add changelog --- .../changelog/tweak-ignore-some-metadata-in-hpos-verify-tool | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/tweak-ignore-some-metadata-in-hpos-verify-tool diff --git a/plugins/woocommerce/changelog/tweak-ignore-some-metadata-in-hpos-verify-tool b/plugins/woocommerce/changelog/tweak-ignore-some-metadata-in-hpos-verify-tool new file mode 100644 index 00000000000..cdc7205b591 --- /dev/null +++ b/plugins/woocommerce/changelog/tweak-ignore-some-metadata-in-hpos-verify-tool @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Exclude some metadata from being considered in HPOS verify tool. From 10c66d219608959bc572d7b46a084d330922a3c3 Mon Sep 17 00:00:00 2001 From: Jorge Torres Date: Thu, 21 Sep 2023 14:15:49 +0100 Subject: [PATCH 12/81] Ignore some metadata in HPOS verify tool. --- .../Database/Migrations/CustomOrderTable/CLIRunner.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/CLIRunner.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/CLIRunner.php index 19b551722d0..4dfdb94cebd 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/CLIRunner.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/CLIRunner.php @@ -581,11 +581,19 @@ class CLIRunner { * @return array Failed IDs with meta details. */ private function verify_meta_data( array $order_ids, array $failed_ids ) : array { + $meta_keys_to_ignore = array( + '_paid_date', // This is set by the CPT datastore but no longer used anywhere. + '_edit_lock', + ); + global $wpdb; if ( ! count( $order_ids ) ) { return array(); } - $excluded_columns = $this->post_to_cot_migrator->get_migrated_meta_keys(); + $excluded_columns = array_merge( + $this->post_to_cot_migrator->get_migrated_meta_keys(), + $meta_keys_to_ignore + ); $excluded_columns_placeholder = implode( ', ', array_fill( 0, count( $excluded_columns ), '%s' ) ); $order_ids_placeholder = implode( ', ', array_fill( 0, count( $order_ids ), '%d' ) ); $meta_table = OrdersTableDataStore::get_meta_table_name(); From 01b99e98036e365d7e57112f2c539b12789aac7f Mon Sep 17 00:00:00 2001 From: Kader Ibrahim S Date: Thu, 21 Sep 2023 21:16:36 +0530 Subject: [PATCH 13/81] Removes the default topic for unavailable topics. --- .../src/Internal/Admin/Marketing/MarketingSpecs.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php b/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php index 08987aabeb9..be6d14ea488 100644 --- a/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php +++ b/plugins/woocommerce/src/Internal/Admin/Marketing/MarketingSpecs.php @@ -140,10 +140,8 @@ class MarketingSpecs { * @return array */ public function get_knowledge_base_posts( ?string $topic ): array { - $available_topics = array( 'marketing', 'coupons' ); - // Default to the marketing topic (if no topic is set on the kb component). - if ( empty( $topic ) || ! in_array( $topic, $available_topics, true ) ) { + if ( empty( $topic ) ) { $topic = 'marketing'; } From e0c44f07fbcbc053d640e972f7c963d08b6602bb Mon Sep 17 00:00:00 2001 From: nigeljamesstevenson <105309450+nigeljamesstevenson@users.noreply.github.com> Date: Thu, 21 Sep 2023 17:50:26 +0100 Subject: [PATCH 14/81] test update for failing k6 tests (#40350) --- plugins/woocommerce/changelog/update-k6-failing-tests-in-CI | 4 ++++ .../tests/performance/tests/gh-action-pr-requests.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce/changelog/update-k6-failing-tests-in-CI diff --git a/plugins/woocommerce/changelog/update-k6-failing-tests-in-CI b/plugins/woocommerce/changelog/update-k6-failing-tests-in-CI new file mode 100644 index 00000000000..0cab208c592 --- /dev/null +++ b/plugins/woocommerce/changelog/update-k6-failing-tests-in-CI @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Implement back to home actions for the customize your store. diff --git a/plugins/woocommerce/tests/performance/tests/gh-action-pr-requests.js b/plugins/woocommerce/tests/performance/tests/gh-action-pr-requests.js index afd8f10b4a1..cce8e7b80e4 100644 --- a/plugins/woocommerce/tests/performance/tests/gh-action-pr-requests.js +++ b/plugins/woocommerce/tests/performance/tests/gh-action-pr-requests.js @@ -272,7 +272,7 @@ export function cartFlow() { } export function allMerchantFlow() { wpLogin(); - homeWCAdmin(); + homeWCAdmin( { other: false, orders: false, reviews: false, products: false} ); addOrder(); orders(); ordersSearch(); From 92faebbe696121cc33fb3ba846bcff3899475442 Mon Sep 17 00:00:00 2001 From: Jorge Torres Date: Thu, 21 Sep 2023 18:55:11 +0100 Subject: [PATCH 15/81] Handle change in name of order ID in list table --- .../woocommerce/client/legacy/js/admin/woocommerce_admin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/client/legacy/js/admin/woocommerce_admin.js b/plugins/woocommerce/client/legacy/js/admin/woocommerce_admin.js index 138966adf62..a32863d7dc4 100644 --- a/plugins/woocommerce/client/legacy/js/admin/woocommerce_admin.js +++ b/plugins/woocommerce/client/legacy/js/admin/woocommerce_admin.js @@ -725,7 +725,7 @@ }, send_orders_in_list: function( e, data ) { - data['wc-check-locked-orders'] = wc_order_lock.$list_table.find( 'tr input[name="order"]' ).map( + data['wc-check-locked-orders'] = wc_order_lock.$list_table.find( 'tr input[name="id[]"]' ).map( function() { return this.value; } ).get(); }, @@ -735,7 +735,7 @@ wc_order_lock.$list_table.find( 'tr' ).each( function( i, tr ) { var $tr = $( tr ); - var order_id = $tr.find( 'input[name="order"]' ).val(); + var order_id = $tr.find( 'input[name="id[]"]' ).val(); if ( locked_orders[ order_id ] ) { if ( ! $tr.hasClass( 'wp-locked' ) ) { From 5d7b2f36fc9e0ccb0d492109b025e3a4d9946731 Mon Sep 17 00:00:00 2001 From: Jorge Torres Date: Thu, 21 Sep 2023 18:55:31 +0100 Subject: [PATCH 16/81] =?UTF-8?q?Prevent=20conflict=20with=20WP=E2=80=99s?= =?UTF-8?q?=20post=20lock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../woocommerce/client/legacy/js/admin/woocommerce_admin.js | 5 +++++ plugins/woocommerce/includes/class-wc-ajax.php | 2 +- plugins/woocommerce/src/Internal/Admin/Orders/EditLock.php | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/client/legacy/js/admin/woocommerce_admin.js b/plugins/woocommerce/client/legacy/js/admin/woocommerce_admin.js index a32863d7dc4..998ca5845a8 100644 --- a/plugins/woocommerce/client/legacy/js/admin/woocommerce_admin.js +++ b/plugins/woocommerce/client/legacy/js/admin/woocommerce_admin.js @@ -675,6 +675,10 @@ // Order screen. this.$lock_dialog = $( '.woocommerce_page_wc-orders #post-lock-dialog.order-lock-dialog' ); if ( 0 !== this.$lock_dialog.length && 'undefined' !== typeof woocommerce_admin_meta_boxes ) { + // We do not want WP's lock to interfere. + $( document ).off( 'heartbeat-send.refresh-lock' ); + $( document ).off( 'heartbeat-tick.refresh-lock' ); + $( document ).on( 'heartbeat-send', this.refresh_order_lock ); $( document ).on( 'heartbeat-tick', this.check_order_lock ); } @@ -688,6 +692,7 @@ }, refresh_order_lock: function( e, data ) { + delete data['wp-refresh-post-lock']; data['wc-refresh-order-lock'] = woocommerce_admin_meta_boxes.post_id; }, diff --git a/plugins/woocommerce/includes/class-wc-ajax.php b/plugins/woocommerce/includes/class-wc-ajax.php index 91068f16844..835a5a91a1e 100644 --- a/plugins/woocommerce/includes/class-wc-ajax.php +++ b/plugins/woocommerce/includes/class-wc-ajax.php @@ -209,7 +209,7 @@ class WC_AJAX { function( $response, $data ) use ( $ajax_callback ) { return call_user_func_array( array( __CLASS__, $ajax_callback ), func_get_args() ); }, - 10, + 11, 2 ); } diff --git a/plugins/woocommerce/src/Internal/Admin/Orders/EditLock.php b/plugins/woocommerce/src/Internal/Admin/Orders/EditLock.php index 1c5aa71ff37..00d0a8d1436 100644 --- a/plugins/woocommerce/src/Internal/Admin/Orders/EditLock.php +++ b/plugins/woocommerce/src/Internal/Admin/Orders/EditLock.php @@ -99,6 +99,8 @@ class EditLock { return $response; } + unset( $response['wp-refresh-post-lock'] ); + $order = wc_get_order( $order_id ); if ( ! $order || ( ! current_user_can( get_post_type_object( $order->get_type() )->cap->edit_post, $order->get_id() ) && ! current_user_can( 'manage_woocommerce' ) ) ) { return $response; From 46e437cbfd7058706882c33db1bf3edaceb4f0a6 Mon Sep 17 00:00:00 2001 From: Jorge Torres Date: Thu, 21 Sep 2023 18:55:36 +0100 Subject: [PATCH 17/81] Add changelog --- plugins/woocommerce/changelog/fix-wp-post-lock-conflict | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-wp-post-lock-conflict diff --git a/plugins/woocommerce/changelog/fix-wp-post-lock-conflict b/plugins/woocommerce/changelog/fix-wp-post-lock-conflict new file mode 100644 index 00000000000..3bb080e9ff4 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-wp-post-lock-conflict @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Disable WP's post lock on HPOS order edit screen. From bdbd590819d2e059e4e2b63560197d95fbb40b37 Mon Sep 17 00:00:00 2001 From: louwie17 Date: Thu, 21 Sep 2023 16:14:11 -0300 Subject: [PATCH 18/81] Fix product editor images block (#40356) * Enqueue media utils which are required for images block * Add changelog --- plugins/woocommerce/changelog/fix-product-editor-images-block | 4 ++++ .../src/Admin/Features/ProductBlockEditor/Init.php | 1 + 2 files changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-product-editor-images-block diff --git a/plugins/woocommerce/changelog/fix-product-editor-images-block b/plugins/woocommerce/changelog/fix-product-editor-images-block new file mode 100644 index 00000000000..1f469c3b618 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-product-editor-images-block @@ -0,0 +1,4 @@ +Significance: minor +Type: fix + +Enqueue media scripts for Images block within the product editor, as is required for Images block. diff --git a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/Init.php b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/Init.php index ab1a43454ec..09d99a19d7a 100644 --- a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/Init.php +++ b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/Init.php @@ -100,6 +100,7 @@ class Init { 'before' ); wp_tinymce_inline_scripts(); + wp_enqueue_media(); } /** From fb557cf21fcbe7735545b7962300a619e368ea24 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Fri, 22 Sep 2023 10:20:08 +1200 Subject: [PATCH 19/81] Components: TreeSelectControl - Make sure individuallySelectParent value is preserved (#40301) * make sure individually selected parent value is preserved * Add changefile(s) from automation for the following project(s): @woocommerce/components --------- Co-authored-by: github-actions --- .../fix-tree-select-control-individuallySelectParent | 4 ++++ packages/js/components/src/tree-select-control/index.js | 7 +++++-- .../js/components/src/tree-select-control/stories/index.js | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 packages/js/components/changelog/fix-tree-select-control-individuallySelectParent diff --git a/packages/js/components/changelog/fix-tree-select-control-individuallySelectParent b/packages/js/components/changelog/fix-tree-select-control-individuallySelectParent new file mode 100644 index 00000000000..49dcda57609 --- /dev/null +++ b/packages/js/components/changelog/fix-tree-select-control-individuallySelectParent @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +TreeSelectControl Component - Make sure individuallySelectParent prop is respected diff --git a/packages/js/components/src/tree-select-control/index.js b/packages/js/components/src/tree-select-control/index.js index 86b4026e492..8fb65589454 100644 --- a/packages/js/components/src/tree-select-control/index.js +++ b/packages/js/components/src/tree-select-control/index.js @@ -234,7 +234,10 @@ const TreeSelectControl = ( { * @return {boolean} True if checked, false otherwise. */ get() { - if ( includeParent && this.value !== ROOT_VALUE ) { + if ( + ( includeParent || individuallySelectParent ) && + this.value !== ROOT_VALUE + ) { return cache.selectedValues.includes( this.value ); } if ( this.hasChildren ) { @@ -427,7 +430,7 @@ const TreeSelectControl = ( { const handleParentChange = ( checked, option ) => { let newValue; const changedValues = individuallySelectParent - ? [] + ? [ option.value ] : option.leaves .filter( ( opt ) => opt.checked !== checked ) .map( ( opt ) => opt.value ); diff --git a/packages/js/components/src/tree-select-control/stories/index.js b/packages/js/components/src/tree-select-control/stories/index.js index d30221a7218..eb6a3df1d3d 100644 --- a/packages/js/components/src/tree-select-control/stories/index.js +++ b/packages/js/components/src/tree-select-control/stories/index.js @@ -96,6 +96,7 @@ Base.args = { selectAllLabel: 'All countries', includeParent: false, alwaysShowPlaceholder: false, + individuallySelectParent: false, }; Base.argTypes = { From ce7038d8143286c474fd50eb20f0f07af756a2e1 Mon Sep 17 00:00:00 2001 From: Moon Date: Thu, 21 Sep 2023 15:35:45 -0700 Subject: [PATCH 20/81] Remove unnecessary APIs calls when the setup tasklist is shown (#40291) * Consider setup task hidden when activeSetupList is null * Render ActivityPanel when the setup tasklist is hidden only * Add changefile(s) from automation for the following project(s): woocommerce --------- Co-authored-by: github-actions --- .../woocommerce-admin/client/activity-panel/activity-panel.js | 4 ++-- plugins/woocommerce-admin/client/homescreen/layout.js | 2 +- .../changelog/fix-setup-tasklist-is-considered-as-hidden | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-setup-tasklist-is-considered-as-hidden diff --git a/plugins/woocommerce-admin/client/activity-panel/activity-panel.js b/plugins/woocommerce-admin/client/activity-panel/activity-panel.js index ccc4bc0d1d5..2b275810c9d 100644 --- a/plugins/woocommerce-admin/client/activity-panel/activity-panel.js +++ b/plugins/woocommerce-admin/client/activity-panel/activity-panel.js @@ -164,9 +164,9 @@ export const ActivityPanel = ( { isEmbedded, query } ) => { ONBOARDING_STORE_NAME ); - const setupList = getTaskList( activeSetupList ); + const setupList = activeSetupList && getTaskList( activeSetupList ); - const isSetupTaskListHidden = setupList?.isHidden ?? true; + const isSetupTaskListHidden = setupList?.isHidden ?? false; const setupVisibleTasks = getVisibleTasks( setupList?.tasks || [] ); const extendedTaskList = getTaskList( 'extended' ); diff --git a/plugins/woocommerce-admin/client/homescreen/layout.js b/plugins/woocommerce-admin/client/homescreen/layout.js index 6a0a25b0896..229a9e373b4 100644 --- a/plugins/woocommerce-admin/client/homescreen/layout.js +++ b/plugins/woocommerce-admin/client/homescreen/layout.js @@ -112,7 +112,7 @@ export const Layout = ( { /> ) } { shouldShowWCPayFeature && } - { } + { isTaskListHidden && } { hasTaskList && renderTaskList() } diff --git a/plugins/woocommerce/changelog/fix-setup-tasklist-is-considered-as-hidden b/plugins/woocommerce/changelog/fix-setup-tasklist-is-considered-as-hidden new file mode 100644 index 00000000000..fc6c9daff46 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-setup-tasklist-is-considered-as-hidden @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Remove unnecessary APIs calls when the setup tasklist is shown From 3544ef300f9bead72fe25a8e949c8f1514c836b2 Mon Sep 17 00:00:00 2001 From: nigeljamesstevenson <105309450+nigeljamesstevenson@users.noreply.github.com> Date: Fri, 22 Sep 2023 00:10:38 +0100 Subject: [PATCH 21/81] update correlation in performance requests (#40359) * update correlation * update correlation --- .../woocommerce/changelog/update-k6-home-wc-admin-correlation | 4 ++++ .../tests/performance/requests/merchant/home-wc-admin.js | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/update-k6-home-wc-admin-correlation diff --git a/plugins/woocommerce/changelog/update-k6-home-wc-admin-correlation b/plugins/woocommerce/changelog/update-k6-home-wc-admin-correlation new file mode 100644 index 00000000000..344e7f8402e --- /dev/null +++ b/plugins/woocommerce/changelog/update-k6-home-wc-admin-correlation @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Update correlation to allow previously removed Perf Requests to run again diff --git a/plugins/woocommerce/tests/performance/requests/merchant/home-wc-admin.js b/plugins/woocommerce/tests/performance/requests/merchant/home-wc-admin.js index 1cf8bbb6d98..f4ac2d8b7cd 100644 --- a/plugins/woocommerce/tests/performance/requests/merchant/home-wc-admin.js +++ b/plugins/woocommerce/tests/performance/requests/merchant/home-wc-admin.js @@ -58,8 +58,8 @@ export function homeWCAdmin( includeTests = {} ) { // Correlate nonce values for use in subsequent requests. api_x_wp_nonce = findBetween( response.body, - 'wp-json\\/","nonce":"', - '",' + 'wp.apiFetch.createNonceMiddleware( "', + '"' ); // Create request header with nonce value for use in subsequent requests. From f446315f325352c6546db5ffbdcdd9550897acbe Mon Sep 17 00:00:00 2001 From: "Jorge A. Torres" Date: Fri, 22 Sep 2023 00:44:22 +0100 Subject: [PATCH 22/81] Make sure orders are always saved with addresses indexes set (#40332) * Make sure orders are saved with addresses indexes set. * Add changelog --- .../woocommerce/changelog/fix-always-set-address-indexes | 4 ++++ .../src/Internal/DataStores/Orders/OrdersTableDataStore.php | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-always-set-address-indexes diff --git a/plugins/woocommerce/changelog/fix-always-set-address-indexes b/plugins/woocommerce/changelog/fix-always-set-address-indexes new file mode 100644 index 00000000000..3294b511960 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-always-set-address-indexes @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Always generate address metadata indexes for HPOS orders. diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php index 71d66846787..b8baed86f82 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php @@ -2580,8 +2580,10 @@ FROM $order_meta_table private function update_address_index_meta( $order, $changes ) { // If address changed, store concatenated version to make searches faster. foreach ( array( 'billing', 'shipping' ) as $address_type ) { - if ( isset( $changes[ $address_type ] ) ) { - $order->update_meta_data( "_{$address_type}_address_index", implode( ' ', $order->get_address( $address_type ) ) ); + $index_meta_key = "_{$address_type}_address_index"; + + if ( isset( $changes[ $address_type ] ) || ( is_a( $order, 'WC_Order' ) && empty( $order->get_meta( $index_meta_key ) ) ) ) { + $order->update_meta_data( $index_meta_key, implode( ' ', $order->get_address( $address_type ) ) ); } } } From 0c43712b6866c4e2460f40ba7541f8fd698ada2d Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Fri, 22 Sep 2023 14:27:22 +0800 Subject: [PATCH 23/81] [Customize Your Store] Hide color panel and fix nav links on WooExpress site (#40326) --- .../assembler-hub/block-editor.tsx | 65 +++++++++++++------ .../global-styles-variation-iframe/style.scss | 15 +++-- .../changelog/fix-color-panel-and-nav-links | 4 ++ 3 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-color-panel-and-nav-links diff --git a/plugins/woocommerce-admin/client/customize-store/assembler-hub/block-editor.tsx b/plugins/woocommerce-admin/client/customize-store/assembler-hub/block-editor.tsx index 62b14e13669..29550738d8d 100644 --- a/plugins/woocommerce-admin/client/customize-store/assembler-hub/block-editor.tsx +++ b/plugins/woocommerce-admin/client/customize-store/assembler-hub/block-editor.tsx @@ -4,7 +4,10 @@ * External dependencies */ // @ts-ignore No types for this exist yet. +import { store as blockEditorStore } from '@wordpress/block-editor'; +// @ts-ignore No types for this exist yet. import { useEntityRecords } from '@wordpress/core-data'; +import { select } from '@wordpress/data'; // @ts-ignore No types for this exist yet. import { privateApis as routerPrivateApis } from '@wordpress/router'; // @ts-ignore No types for this exist yet. @@ -29,6 +32,31 @@ type Page = { [ key: string ]: unknown; }; +const findPageIdByLinkOrTitle = ( event: MouseEvent, _pages: Page[] ) => { + const target = event.target as HTMLAnchorElement; + const clickedPage = + _pages.find( ( page ) => page.link === target.href ) || + _pages.find( ( page ) => page.title.rendered === target.innerText ); + return clickedPage ? clickedPage.id : null; +}; + +const findPageIdByBlockClientId = ( event: MouseEvent ) => { + const navLink = ( event.target as HTMLAnchorElement ).closest( + '.wp-block-navigation-link' + ); + if ( navLink ) { + const blockClientId = navLink.getAttribute( 'data-block' ); + const navLinkBlocks = + // @ts-ignore No types for this exist yet. + select( blockEditorStore ).getBlocksByClientId( blockClientId ); + + if ( navLinkBlocks && navLinkBlocks.length ) { + return navLinkBlocks[ 0 ].attributes.id; + } + } + return null; +}; + // We only show the edit option when page count is <= MAX_PAGE_COUNT // Performance of Navigation Links is not good past this value. const MAX_PAGE_COUNT = 100; @@ -62,31 +90,28 @@ export const BlockEditor = ( {} ) => { const onClickNavigationItem = useCallback( ( event: MouseEvent ) => { - const clickedPage = - pages.find( - ( page: Page ) => - page.link === ( event.target as HTMLAnchorElement ).href - ) || - // Fallback to page title if the link is not found. This is needed for a bug in the block library - // See https://github.com/woocommerce/team-ghidorah/issues/253#issuecomment-1665106817 - pages.find( - ( page: Page ) => - page.title.rendered === - ( event.target as HTMLAnchorElement ).innerText - ); - if ( clickedPage ) { + // If the user clicks on a navigation item, we want to update the URL to reflect the page they are on. + // Because of bug in the block library (See https://github.com/woocommerce/team-ghidorah/issues/253#issuecomment-1665106817), we're not able to use href link to find the page ID. Instead, we'll use the link/title first, and if that doesn't work, we'll use the block client ID. It depends on the header block type to determine which one to use. + // This is a temporary solution until the block library is fixed. + + const pageId = + findPageIdByLinkOrTitle( event, pages ) || + findPageIdByBlockClientId( event ); + + if ( pageId ) { history.push( { ...urlParams, - postId: clickedPage.id, + postId: pageId, postType: 'page', } ); - } else { - // Home page - const { postId, postType, ...params } = urlParams; - history.push( { - ...params, - } ); + return; } + + // Home page + const { postId, postType, ...params } = urlParams; + history.push( { + ...params, + } ); }, [ history, urlParams, pages ] ); diff --git a/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/global-styles-variation-iframe/style.scss b/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/global-styles-variation-iframe/style.scss index 3e356e2b532..2099afbccdd 100644 --- a/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/global-styles-variation-iframe/style.scss +++ b/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/global-styles-variation-iframe/style.scss @@ -73,10 +73,17 @@ } } } +} - .block-editor-color-gradient-control__panel { - > .components-flex > .components-h-stack.components-v-stack { - display: none; - } +// Hide "theme" and "default" sections +.block-editor-color-gradient-control__panel { + // Text or Background tab + > .components-flex > .components-h-stack.components-v-stack { + display: none; + } + + // Gradient tab + > .components-spacer > .components-flex > .components-h-stack.components-v-stack:not(.components-custom-gradient-picker) { + display: none; } } diff --git a/plugins/woocommerce/changelog/fix-color-panel-and-nav-links b/plugins/woocommerce/changelog/fix-color-panel-and-nav-links new file mode 100644 index 00000000000..bd83580ce22 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-color-panel-and-nav-links @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +CYS: Hide color panel and fix nav links on WooExpress site From 687495a87842bcd6128e7293f93f1c0196bdfe36 Mon Sep 17 00:00:00 2001 From: Vedanshu Jain Date: Fri, 22 Sep 2023 17:25:39 +0530 Subject: [PATCH 24/81] Add unit test around number of times order save is being called. (#40241) --- plugins/woocommerce/changelog/add-unit-tests | 5 ++ .../legacy/unit-tests/webhooks/functions.php | 5 +- .../Orders/OrdersTableDataStoreTests.php | 83 +++++++++++++++++++ 3 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 plugins/woocommerce/changelog/add-unit-tests diff --git a/plugins/woocommerce/changelog/add-unit-tests b/plugins/woocommerce/changelog/add-unit-tests new file mode 100644 index 00000000000..ed38db4dae9 --- /dev/null +++ b/plugins/woocommerce/changelog/add-unit-tests @@ -0,0 +1,5 @@ +Significance: patch +Type: fix +Comment: Adds unit tests, no functionality is modified. + + diff --git a/plugins/woocommerce/tests/legacy/unit-tests/webhooks/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/webhooks/functions.php index a4508ce0402..46294873d65 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/webhooks/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/webhooks/functions.php @@ -15,7 +15,7 @@ class WC_Tests_Webhook_Functions extends WC_Unit_Test_Case { * Temporarily store webhook delivery counters. * @var array */ - protected $delivery_counter = array(); + public $delivery_counter = array(); /** * Data provider for test_wc_is_webhook_valid_topic. @@ -276,8 +276,7 @@ class WC_Tests_Webhook_Functions extends WC_Unit_Test_Case { * @param string $topic The webhook topic for the test. * @param string $status The status of the webhook to be tested. */ - protected function create_webhook( $topic = 'action.woocommerce_some_action', $status = 'active' ) { - + public function create_webhook( $topic = 'action.woocommerce_some_action', $status = 'active' ) { $webhook = new WC_Webhook(); $webhook->set_props( array( diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php index 1a0608cc8f0..7ecd66c22df 100644 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php @@ -44,6 +44,12 @@ class OrdersTableDataStoreTests extends HposTestCase { */ private $cot_state; + /** + * Temporarily store webhook delivery counters. + * @var array + */ + private $delivery_counter = array(); + /** * Initializes system under test. */ @@ -3051,4 +3057,81 @@ class OrdersTableDataStoreTests extends HposTestCase { $r_order = wc_get_order( $order->get_id() ); $this->assertEquals( 'test_value', $r_order->get_meta( 'test_key' ) ); } + + /** + * @testDox Test that order save is not called frequently on meta save. + */ + public function test_order_save_is_not_called_frequently_on_meta_save() { + $this->toggle_cot_authoritative( true ); + $this->enable_cot_sync(); + + $order = wc_create_order(); + + assert( empty( $order->get_changes() ), 'Order was not saved properly, test cannot continue.' ); + $call_private = function ( $order ) { + return $this->should_save_after_meta_change( $order ); + }; + + $order->set_date_modified( time() - 1 ); + $order->save(); + + $this->assertTrue( $call_private->call( $this->sut, $order ) ); + + $count = 0; + add_filter( + 'woocommerce_before_order_object_save', + function () use ( &$count ) { + $count++; + } + ); + + $order->add_meta_data( 'key1', 'value' ); + $order->save_meta_data(); + $order->add_meta_data( 'key2', 'value' ); + $order->save_meta_data(); + $order->add_meta_data( 'key2', 'value2' ); + $order->save_meta_data(); + $order->update_meta_data( 'key1', 'value2' ); + $order->save_meta_data(); + $order->delete_meta_data( 'key1' ); + $order->save_meta_data(); + $this->assertEquals( 1, $count ); + remove_all_actions( 'woocommerce_before_order_object_save' ); + } + + /** + * @testDox Test webhooks are not fired multiple times on order save. + */ + public function test_order_updated_webhook_delivered_once() { + $this->toggle_cot_authoritative( true ); + $this->enable_cot_sync(); + + $webhook_tests = new WC_Tests_Webhook_Functions(); + $webhook = $webhook_tests->create_webhook( 'order.updated' ); + + $order = WC_Helper_Order::create_order(); + $order->set_date_modified( time() - 100 ); + $order->save(); + + $this->assertTrue( wc_load_webhooks( 'active' ) ); + add_action( 'woocommerce_webhook_process_delivery', array( $webhook_tests, 'woocommerce_webhook_process_delivery' ), 1, 2 ); + add_filter( 'woocommerce_webhook_should_deliver', '__return_true' ); + $call_private = function ( $order ) { + return $this->should_save_after_meta_change( $order ); + }; + $this->assertTrue( $call_private->call( $this->sut, $order ) ); + $order->add_meta_data( 'test', 'value' ); + $order->save_meta_data(); + $order->add_meta_data( 'key2', 'value' ); + $order->save_meta_data(); + $order->add_meta_data( 'key2', 'value2' ); + $order->save_meta_data(); + $order->update_meta_data( 'key1', 'value2' ); + $order->save_meta_data(); + $order->delete_meta_data( 'key1' ); + $order->save_meta_data(); + $this->assertEquals( 1, $webhook_tests->delivery_counter[ $webhook->get_id() . $order->get_id() ] ); + remove_all_actions( 'woocommerce_webhook_process_delivery' ); + remove_all_actions( 'woocommerce_webhook_should_deliver' ); + } } From f29f519526639bb1702bfef49a4122ea09d70df2 Mon Sep 17 00:00:00 2001 From: RJ <27843274+rjchow@users.noreply.github.com> Date: Fri, 22 Sep 2023 20:43:42 +0800 Subject: [PATCH 25/81] add: save cys ai input and response to options (#40330) * add: save cys ai input and response to options * fix type error --- .../customize-store/design-with-ai/actions.ts | 28 +++++++- .../design-with-ai/services.ts | 7 ++ .../design-with-ai/state-machine.tsx | 65 ++++++++++++++++--- .../customize-store/design-with-ai/types.ts | 2 + .../client/customize-store/style.scss | 4 ++ .../changelog/add-cys-ai-save-options | 4 ++ 6 files changed, 100 insertions(+), 10 deletions(-) create mode 100644 plugins/woocommerce/changelog/add-cys-ai-save-options diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts index ee6d4f2987f..cb6ee703efa 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts @@ -1,9 +1,11 @@ /** * External dependencies */ -import { assign } from 'xstate'; +import { assign, spawn } from 'xstate'; import { getQuery, updateQueryString } from '@woocommerce/navigation'; import { recordEvent } from '@woocommerce/tracks'; +import { dispatch } from '@wordpress/data'; +import { OPTIONS_STORE_NAME } from '@woocommerce/data'; /** * Internal dependencies @@ -148,6 +150,29 @@ const assignFooter = assign< }, } ); +const updateWooAiStoreDescriptionOption = ( descriptionText: string ) => { + return dispatch( OPTIONS_STORE_NAME ).updateOptions( { + woo_ai_describe_store_description: descriptionText, + } ); +}; + +const spawnSaveDescriptionToOption = assign< + designWithAiStateMachineContext, + designWithAiStateMachineEvents, + designWithAiStateMachineEvents +>( { + spawnSaveDescriptionToOptionRef: ( + context: designWithAiStateMachineContext + ) => + spawn( + () => + updateWooAiStoreDescriptionOption( + context.businessInfoDescription.descriptionText + ), + 'update-woo-ai-business-description-option' + ), +} ); + const logAIAPIRequestError = () => { // log AI API request error // eslint-disable-next-line no-console @@ -223,4 +248,5 @@ export const actions = { recordTracksStepViewed, recordTracksStepClosed, recordTracksStepCompleted, + spawnSaveDescriptionToOption, }; diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts index 211856d035a..a78e22f26dd 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts @@ -383,10 +383,17 @@ export const assembleSite = async ( invalidateResolutionForStoreSelector( '__experimentalGetTemplateForLink' ); }; +const saveAiResponseToOption = ( context: designWithAiStateMachineContext ) => { + return dispatch( OPTIONS_STORE_NAME ).updateOptions( { + woocommerce_customize_store_ai_suggestions: context.aiSuggestions, + } ); +}; + export const services = { getLookAndTone, browserPopstateHandler, queryAiEndpoint, assembleSite, updateStorePatterns, + saveAiResponseToOption, }; diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx b/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx index 83d59516093..50a41dcf075 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx @@ -142,7 +142,10 @@ export const designWithAiStateMachineDefinition = createMachine( ], on: { BUSINESS_INFO_DESCRIPTION_COMPLETE: { - actions: [ 'assignBusinessInfoDescription' ], + actions: [ + 'assignBusinessInfoDescription', + 'spawnSaveDescriptionToOption', + ], target: 'postBusinessInfoDescription', }, }, @@ -423,15 +426,59 @@ export const designWithAiStateMachineDefinition = createMachine( onDone: 'postApiCallLoader', }, postApiCallLoader: { - invoke: { - src: 'assembleSite', - onDone: { - actions: [ - sendParent( () => ( { - type: 'THEME_SUGGESTED', - } ) ), - ], + type: 'parallel', + states: { + assembleSite: { + initial: 'pending', + states: { + pending: { + invoke: { + src: 'assembleSite', + onDone: { + target: 'done', + }, + onError: { + target: 'failed', + }, + }, + }, + done: { + type: 'final', + }, + failed: { + type: 'final', // If there's an error we should not block the user from proceeding. They'll just not see the AI suggestions, but that's better than being stuck + }, + }, }, + saveAiResponse: { + initial: 'pending', + states: { + pending: { + invoke: { + src: 'saveAiResponseToOption', + onDone: { + target: 'done', + }, + onError: { + target: 'failed', + }, + }, + }, + done: { + type: 'final', + }, + failed: { + type: 'final', + }, + }, + }, + }, + onDone: { + actions: [ + sendParent( () => ( { + type: 'THEME_SUGGESTED', + } ) ), + ], }, }, }, diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts index d6a6160569b..742a08f6725 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts @@ -2,6 +2,7 @@ * External dependencies */ import { z } from 'zod'; +import { spawn } from 'xstate'; /** * Internal dependencies */ @@ -31,6 +32,7 @@ export type designWithAiStateMachineContext = { }; // If we require more data from options, previously provided core profiler details, // we can retrieve them in preBusinessInfoDescription and then assign them here + spawnSaveDescriptionToOptionRef?: ReturnType< typeof spawn >; }; export type designWithAiStateMachineEvents = | { type: 'AI_WIZARD_CLOSED_BEFORE_COMPLETION'; payload: { step: string } } diff --git a/plugins/woocommerce-admin/client/customize-store/style.scss b/plugins/woocommerce-admin/client/customize-store/style.scss index 66e6c91a481..10059196b4b 100644 --- a/plugins/woocommerce-admin/client/customize-store/style.scss +++ b/plugins/woocommerce-admin/client/customize-store/style.scss @@ -24,6 +24,10 @@ body.woocommerce-customize-store.js.is-fullscreen-mode { & > div.tour-kit.woocommerce-tour-kit > div > div.tour-kit-spotlight.is-visible { outline: 99999px solid rgba(0, 0, 0, 0.15); } + + #screen-meta-links { + display: none; + } } .woocommerce-cys-layout { diff --git a/plugins/woocommerce/changelog/add-cys-ai-save-options b/plugins/woocommerce/changelog/add-cys-ai-save-options new file mode 100644 index 00000000000..823971e6b24 --- /dev/null +++ b/plugins/woocommerce/changelog/add-cys-ai-save-options @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Save CYS AI wizard response to options From 94069bb4ff1c46cb9e402e999865d6f865d02c5f Mon Sep 17 00:00:00 2001 From: Vedanshu Jain Date: Fri, 22 Sep 2023 19:34:52 +0530 Subject: [PATCH 26/81] Use correct feature name for back compat. (#40367) --- plugins/woocommerce/changelog/fix-feature_name | 5 +++++ plugins/woocommerce/includes/class-wc-install.php | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce/changelog/fix-feature_name diff --git a/plugins/woocommerce/changelog/fix-feature_name b/plugins/woocommerce/changelog/fix-feature_name new file mode 100644 index 00000000000..af78e77d3ec --- /dev/null +++ b/plugins/woocommerce/changelog/fix-feature_name @@ -0,0 +1,5 @@ +Significance: patch +Type: fix +Comment: Fixes a minor regression in using the correct option name. + + diff --git a/plugins/woocommerce/includes/class-wc-install.php b/plugins/woocommerce/includes/class-wc-install.php index c451fee1313..2293e32f182 100644 --- a/plugins/woocommerce/includes/class-wc-install.php +++ b/plugins/woocommerce/includes/class-wc-install.php @@ -912,7 +912,7 @@ class WC_Install { return false; } - $plugin_compat_info = $feature_controller->get_compatible_plugins_for_feature( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION, true ); + $plugin_compat_info = $feature_controller->get_compatible_plugins_for_feature( 'custom_order_tables', true ); if ( ! empty( $plugin_compat_info['incompatible'] ) || ! empty( $plugin_compat_info['uncertain'] ) ) { return false; } From 247b8990d2106fde34e563d9eedd75b13c98170d Mon Sep 17 00:00:00 2001 From: louwie17 Date: Fri, 22 Sep 2023 11:39:35 -0300 Subject: [PATCH 27/81] Add default price support to product variations (#40343) * Optimize crud totalCount queries to avoid two requests * Make use of same request params for totalCount as getVariations * Add support for default_values when generating product variations * Add test for default_values * Add changelogs * Only use default values of first variation * Address some PR feedback * Update types --- .../js/data/changelog/add-40042_default_price | 4 ++ .../add-40042_default_values_for_variations | 4 ++ packages/js/data/src/crud/resolvers.ts | 17 ++++++ .../js/data/src/product-variations/types.ts | 1 + .../changelog/add-40042_default_price | 4 ++ .../variations-table/variations-table.tsx | 13 +---- .../hooks/use-product-variations-helper.ts | 58 ++++++++++++++++--- .../changelog/add-40042_default_price | 4 ++ .../class-wc-product-data-store-cpt.php | 4 +- ...-wc-rest-product-variations-controller.php | 8 ++- .../Tests/Version3/product-variations.php | 48 +++++++++++++++ 11 files changed, 145 insertions(+), 20 deletions(-) create mode 100644 packages/js/data/changelog/add-40042_default_price create mode 100644 packages/js/data/changelog/add-40042_default_values_for_variations create mode 100644 packages/js/product-editor/changelog/add-40042_default_price create mode 100644 plugins/woocommerce/changelog/add-40042_default_price diff --git a/packages/js/data/changelog/add-40042_default_price b/packages/js/data/changelog/add-40042_default_price new file mode 100644 index 00000000000..531e7aed146 --- /dev/null +++ b/packages/js/data/changelog/add-40042_default_price @@ -0,0 +1,4 @@ +Significance: minor +Type: performance + +Update totalCount in crud store to avoid unnecessary requests. diff --git a/packages/js/data/changelog/add-40042_default_values_for_variations b/packages/js/data/changelog/add-40042_default_values_for_variations new file mode 100644 index 00000000000..7c05ac0ab91 --- /dev/null +++ b/packages/js/data/changelog/add-40042_default_values_for_variations @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add support for default_values param in productVariations store diff --git a/packages/js/data/src/crud/resolvers.ts b/packages/js/data/src/crud/resolvers.ts index ecfeef5b258..d3b676374a2 100644 --- a/packages/js/data/src/crud/resolvers.ts +++ b/packages/js/data/src/crud/resolvers.ts @@ -57,6 +57,13 @@ export const createResolvers = ( { const urlParameters = getUrlParameters( namespace, query || {} ); const resourceQuery = cleanQuery( query || {}, namespace ); + yield controls.dispatch( + storeName, + 'startResolution', + `get${ pluralResourceName }TotalCount`, + [ query ] + ); + // Require ID when requesting specific fields to later update the resource data. if ( resourceQuery && @@ -98,6 +105,16 @@ export const createResolvers = ( { }; const getItemsTotalCount = function* ( query?: Partial< ItemQuery > ) { + const startedTotalCountUsingGetItems: boolean = yield controls.select( + storeName, + 'hasStartedResolution', + `get${ pluralResourceName }`, + [ query ] + ); + // Skip resolver as we get the total count from the getItems query as well with same query parameters. + if ( startedTotalCountUsingGetItems ) { + return; + } const totalsQuery = { ...( query || {} ), page: 1, diff --git a/packages/js/data/src/product-variations/types.ts b/packages/js/data/src/product-variations/types.ts index 344731f4a89..563d48fbd19 100644 --- a/packages/js/data/src/product-variations/types.ts +++ b/packages/js/data/src/product-variations/types.ts @@ -96,6 +96,7 @@ export type ActionDispatchers = DispatchFromMap< ProductVariationActions >; export type GenerateRequest = { delete?: boolean; + default_values?: Partial< ProductVariation >; }; export type BatchUpdateRequest = { diff --git a/packages/js/product-editor/changelog/add-40042_default_price b/packages/js/product-editor/changelog/add-40042_default_price new file mode 100644 index 00000000000..84dfb2f2928 --- /dev/null +++ b/packages/js/product-editor/changelog/add-40042_default_price @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add regular price as default value if available when generating new product variations. diff --git a/packages/js/product-editor/src/components/variations-table/variations-table.tsx b/packages/js/product-editor/src/components/variations-table/variations-table.tsx index d64b59caeed..fdd36ccadac 100644 --- a/packages/js/product-editor/src/components/variations-table/variations-table.tsx +++ b/packages/js/product-editor/src/components/variations-table/variations-table.tsx @@ -116,14 +116,6 @@ export const VariationsTable = forwardRef< } ), [ productId, currentPage, perPage ] ); - const totalCountRequestParams = useMemo( - () => ( { - product_id: productId, - order: 'asc', - orderby: 'menu_order', - } ), - [ productId ] - ); const context = useContext( CurrencyContext ); const { formatAmount } = context; @@ -155,9 +147,8 @@ export const VariationsTable = forwardRef< ); return { - totalCount: getProductVariationsTotalCount< number >( - totalCountRequestParams - ), + totalCount: + getProductVariationsTotalCount< number >( requestParams ), }; }, [ productId ] diff --git a/packages/js/product-editor/src/hooks/use-product-variations-helper.ts b/packages/js/product-editor/src/hooks/use-product-variations-helper.ts index 38452a83f65..bfcef90bd78 100644 --- a/packages/js/product-editor/src/hooks/use-product-variations-helper.ts +++ b/packages/js/product-editor/src/hooks/use-product-variations-helper.ts @@ -9,12 +9,51 @@ import { EXPERIMENTAL_PRODUCT_VARIATIONS_STORE_NAME, Product, ProductDefaultAttribute, + ProductVariation, } from '@woocommerce/data'; /** * Internal dependencies */ import { EnhancedProductAttribute } from './use-product-attributes'; +import { DEFAULT_VARIATION_PER_PAGE_OPTION } from '../constants'; + +async function getDefaultVariationValues( + productId: number +): Promise< Partial< Omit< ProductVariation, 'id' > > > { + try { + const { attributes } = await resolveSelect( + 'core' + ).getEntityRecord< Product >( 'postType', 'product', productId ); + const alreadyHasVariableAttribute = attributes.some( + ( attr ) => attr.variation + ); + if ( ! alreadyHasVariableAttribute ) { + return {}; + } + const products = await resolveSelect( + EXPERIMENTAL_PRODUCT_VARIATIONS_STORE_NAME + ).getProductVariations< ProductVariation[] >( { + product_id: productId, + page: 1, + per_page: DEFAULT_VARIATION_PER_PAGE_OPTION, + order: 'asc', + orderby: 'menu_order', + } ); + if ( products && products.length > 0 && products[ 0 ].regular_price ) { + return { + regular_price: products[ 0 ].regular_price, + stock_quantity: products[ 0 ].stock_quantity, + stock_status: products[ 0 ].stock_status, + manage_stock: products[ 0 ].manage_stock, + low_stock_amount: products[ 0 ].low_stock_amount, + }; + } + return {}; + } catch { + return {}; + } +} export function useProductVariationsHelper() { const [ productId ] = useEntityProp< number >( @@ -36,17 +75,21 @@ export function useProductVariationsHelper() { ) => { setIsGenerating( true ); - const lastStatus = ( - ( await resolveSelect( 'core' ).getEditedEntityRecord( - 'postType', - 'product', - productId - ) ) as Product - ).status; + const { status: lastStatus } = await resolveSelect( + 'core' + ).getEditedEntityRecord< Product >( + 'postType', + 'product', + productId + ); const hasVariableAttribute = attributes.some( ( attr ) => attr.variation ); + const defaultVariationValues = await getDefaultVariationValues( + productId + ); + return _generateProductVariations< { count: number; deleted_count: number; @@ -61,6 +104,7 @@ export function useProductVariationsHelper() { }, { delete: true, + default_values: defaultVariationValues, } ) .then( () => { diff --git a/plugins/woocommerce/changelog/add-40042_default_price b/plugins/woocommerce/changelog/add-40042_default_price new file mode 100644 index 00000000000..e02e4592779 --- /dev/null +++ b/plugins/woocommerce/changelog/add-40042_default_price @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add support for default values when generating variations in data store and REST API. diff --git a/plugins/woocommerce/includes/data-stores/class-wc-product-data-store-cpt.php b/plugins/woocommerce/includes/data-stores/class-wc-product-data-store-cpt.php index 1e5590b4d6d..e7ed79814df 100644 --- a/plugins/woocommerce/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/plugins/woocommerce/includes/data-stores/class-wc-product-data-store-cpt.php @@ -1180,9 +1180,10 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da * @todo Add to interface in 4.0. * @param WC_Product $product Variable product. * @param int $limit Limit the number of created variations. + * @param array $default_values Key value pairs to set on created variations. * @return int Number of created variations. */ - public function create_all_product_variations( $product, $limit = -1 ) { + public function create_all_product_variations( $product, $limit = -1, $default_values = array() ) { $count = 0; if ( ! $product ) { @@ -1211,6 +1212,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da continue; } $variation = wc_get_product_object( 'variation' ); + $variation->set_props( $default_values ); $variation->set_parent_id( $product->get_id() ); $variation->set_attributes( $possible_attribute ); $variation_id = $variation->save(); diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php index d9725e270ac..5be6a20c387 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php @@ -48,6 +48,11 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Product_Variations_V 'description' => __( 'Deletes unused variations.', 'woocommerce' ), 'type' => 'boolean', ), + 'default_values' => array( + 'description' => __( 'Default values for generated variations.', 'woocommerce' ), + 'type' => 'object', + 'properties' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + ) ), array( 'methods' => WP_REST_Server::CREATABLE, @@ -1000,8 +1005,9 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Product_Variations_V $response = array(); $product = wc_get_product( $product_id ); + $default_values = isset( $request['default_values'] ) ? $request['default_values'] : array(); $data_store = $product->get_data_store(); - $response['count'] = $data_store->create_all_product_variations( $product, Constants::get_constant( 'WC_MAX_LINKED_VARIATIONS' ) ); + $response['count'] = $data_store->create_all_product_variations( $product, Constants::get_constant( 'WC_MAX_LINKED_VARIATIONS' ), $default_values ); if ( isset( $request['delete'] ) && $request['delete'] ) { $deleted_count = $this->delete_unmatched_product_variations( $product ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/product-variations.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/product-variations.php index e65750223a4..7e887575e7d 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/product-variations.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/product-variations.php @@ -534,6 +534,54 @@ class Product_Variations_API extends WC_REST_Unit_Test_Case { $this->assertEquals( 8, count( $children ) ); } + /** + * Test generating variations with default values. + * + * @since 8.2.0 + */ + public function test_generate_new_variations_with_default_values() { + wp_set_current_user( $this->user ); + + $product = \Automattic\WooCommerce\RestApi\UnitTests\Helpers\ProductHelper::create_variation_product(); + $children = $product->get_children(); + $existing_variations = array_map( 'wc_get_product', $product->get_children() ); + foreach ( $existing_variations as $existing_variation ) { + $existing_variation->delete( true ); + } + $color_attribute_data = \Automattic\WooCommerce\RestApi\UnitTests\Helpers\ProductHelper::create_attribute( 'color', array( 'red', 'blue', 'yellow' ) ); + $color_attribute = new WC_Product_Attribute(); + $color_attribute->set_id( $color_attribute_data['attribute_id'] ); + $color_attribute->set_name( $color_attribute_data['attribute_taxonomy'] ); + $color_attribute->set_options( $color_attribute_data['term_ids'] ); + $color_attribute->set_position( 1 ); + $color_attribute->set_visible( true ); + $color_attribute->set_variation( true ); + $attributes = $product->get_attributes(); + $attributes[] = $color_attribute; + $product->set_attributes( $attributes ); + $product->save(); + + // Set stock to true. + $request = new WP_REST_Request( 'POST', '/wc/v3/products/' . $product->get_id() . '/variations/generate' ); + $request->set_body_params( array( 'default_values' => array( + 'regular_price' => '4.99' + ) ) ); + $response = $this->server->dispatch( $request ); + + $variation = $response->get_data(); + $product = wc_get_product( $product->get_id() ); + $children = $product->get_children(); + + $existing_variations = array_map( 'wc_get_product', $product->get_children() ); + + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( 6, $variation['count'] ); + $this->assertEquals( 6, count( $children ) ); + foreach ( $existing_variations as $existing_variation ) { + $this->assertEquals( '4.99', $existing_variation->get_regular_price() ); + } + } + /** * Test updating a variation stock. * From 15257f8761cb631c44d4ae3ba9fa4d8ad262a633 Mon Sep 17 00:00:00 2001 From: raicem Date: Thu, 14 Sep 2023 13:01:56 +0300 Subject: [PATCH 28/81] Markatplace: Reset search input when tab changes When tab is changed, `@woocommerce/navigation` package resets the `term` query parameter. So `query.term` becomes undefined. Adding the else block allows us to catch that case and then we can reset the search input. --- .../client/marketplace/components/search/search.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/woocommerce-admin/client/marketplace/components/search/search.tsx b/plugins/woocommerce-admin/client/marketplace/components/search/search.tsx index e0915470e6e..0986823c098 100644 --- a/plugins/woocommerce-admin/client/marketplace/components/search/search.tsx +++ b/plugins/woocommerce-admin/client/marketplace/components/search/search.tsx @@ -26,6 +26,8 @@ function Search(): JSX.Element { useEffect( () => { if ( query.term ) { setSearchTerm( query.term ); + } else { + setSearchTerm( '' ); } }, [ query.term ] ); From b45119b6a7fdef808dfa72e67d81726e871cde2d Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 14 Sep 2023 10:12:05 +0000 Subject: [PATCH 29/81] Add changefile(s) from automation for the following project(s): woocommerce --- .../changelog/fix-wccom-18033-reset-search-when-tab-changes | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-wccom-18033-reset-search-when-tab-changes diff --git a/plugins/woocommerce/changelog/fix-wccom-18033-reset-search-when-tab-changes b/plugins/woocommerce/changelog/fix-wccom-18033-reset-search-when-tab-changes new file mode 100644 index 00000000000..40f039772fd --- /dev/null +++ b/plugins/woocommerce/changelog/fix-wccom-18033-reset-search-when-tab-changes @@ -0,0 +1,5 @@ +Significance: patch +Type: fix +Comment: Reset search input when switching between tabs in the marketplace page + + From 55c1bec4900137bb69405ae9d714ed5288ae2939 Mon Sep 17 00:00:00 2001 From: Veljko V Date: Fri, 22 Sep 2023 23:16:35 +0200 Subject: [PATCH 30/81] Add new E2E tests to cover Shopper > Shop milestone (#40244) * Add test to cover shopper tags and attributes * Add new scenarios to complete a milestone * Update comment in the code --- .../changelog/e2e-add-shopper-tags-attributes | 4 + .../shopper/product-tags-attributes.spec.js | 329 ++++++++++++++++++ ...pec.js => shop-search-browse-sort.spec.js} | 0 3 files changed, 333 insertions(+) create mode 100644 plugins/woocommerce/changelog/e2e-add-shopper-tags-attributes create mode 100644 plugins/woocommerce/tests/e2e-pw/tests/shopper/product-tags-attributes.spec.js rename plugins/woocommerce/tests/e2e-pw/tests/shopper/{product-browse-search-sort.spec.js => shop-search-browse-sort.spec.js} (100%) diff --git a/plugins/woocommerce/changelog/e2e-add-shopper-tags-attributes b/plugins/woocommerce/changelog/e2e-add-shopper-tags-attributes new file mode 100644 index 00000000000..e905225a137 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-add-shopper-tags-attributes @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Adds tests to check for the product tags and attributes diff --git a/plugins/woocommerce/tests/e2e-pw/tests/shopper/product-tags-attributes.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/shopper/product-tags-attributes.spec.js new file mode 100644 index 00000000000..1bce3ef8a47 --- /dev/null +++ b/plugins/woocommerce/tests/e2e-pw/tests/shopper/product-tags-attributes.spec.js @@ -0,0 +1,329 @@ +const { test, expect, request } = require( '@playwright/test' ); +const { admin } = require( '../../test-data/data' ); +const pageTitle = 'Product Showcase'; +const wcApi = require( '@woocommerce/woocommerce-rest-api' ).default; + +const singleProductPrice1 = '5.00'; +const singleProductPrice2 = '10.00'; +const singleProductPrice3 = '15.00'; + +const productTagName1 = 'product tag 1'; +const productTagName2 = 'product tag 2'; +const productTagName3 = 'product tag 3'; + +const productAttributeName = 'color'; +const productAttributeTerm = 'red'; + +const simpleProductName = 'Single Product With Tags'; + +let product1Id, + product2Id, + product3Id, + productTag1Id, + productTag2Id, + productTag3Id, + attributeId; + +test.describe( 'Browse product tags and attributes from the product page', () => { + test.use( { storageState: process.env.ADMINSTATE } ); + + test.beforeAll( async ( { baseURL } ) => { + const api = new wcApi( { + url: baseURL, + consumerKey: process.env.CONSUMER_KEY, + consumerSecret: process.env.CONSUMER_SECRET, + version: 'wc/v3', + } ); + // make sure the attribute term page is visible in the shop + await api.put( + 'settings/products/woocommerce_attribute_lookup_enabled', + { + value: 'yes', + } + ); + + // add product tags + await api + .post( 'products/tags', { + name: productTagName1, + } ) + .then( ( response ) => { + productTag1Id = response.data.id; + } ); + await api + .post( 'products/tags', { + name: productTagName2, + } ) + .then( ( response ) => { + productTag2Id = response.data.id; + } ); + await api + .post( 'products/tags', { + name: productTagName3, + } ) + .then( ( response ) => { + productTag3Id = response.data.id; + } ); + + // add product attribute + await api + .post( 'products/attributes', { + name: productAttributeName, + has_archives: true, + } ) + .then( ( response ) => { + attributeId = response.data.id; + } ); + + // add product attribute term + await api.post( `products/attributes/${ attributeId }/terms`, { + name: productAttributeTerm, + } ); + + // add products + await api + .post( 'products', { + name: simpleProductName + ' 1', + type: 'simple', + regular_price: singleProductPrice1, + tags: [ + { id: productTag1Id }, + { + id: productTag2Id, + }, + { + id: productTag3Id, + }, + ], + attributes: [ + { + id: attributeId, + visible: true, + options: [ productAttributeTerm ], + }, + ], + } ) + .then( ( response ) => { + product1Id = response.data.id; + } ); + await api + .post( 'products', { + name: simpleProductName + ' 2', + type: 'simple', + regular_price: singleProductPrice2, + tags: [ + { id: productTag1Id }, + { + id: productTag2Id, + }, + ], + attributes: [ + { + id: attributeId, + visible: true, + options: [ productAttributeTerm ], + }, + ], + } ) + .then( ( response ) => { + product2Id = response.data.id; + } ); + await api + .post( 'products', { + name: simpleProductName + ' 3', + type: 'simple', + regular_price: singleProductPrice3, + tags: [ { id: productTag1Id } ], + attributes: [ + { + id: attributeId, + visible: true, + options: [ productAttributeTerm ], + }, + ], + } ) + .then( ( response ) => { + product3Id = response.data.id; + } ); + } ); + + test.afterAll( async ( { baseURL } ) => { + const api = new wcApi( { + url: baseURL, + consumerKey: process.env.CONSUMER_KEY, + consumerSecret: process.env.CONSUMER_SECRET, + version: 'wc/v3', + } ); + await api.post( 'products/batch', { + delete: [ product1Id, product2Id, product3Id ], + } ); + await api.post( 'products/tags/batch', { + delete: [ productTag1Id, productTag2Id, productTag3Id ], + } ); + await api.post( 'products/attributes/batch', { + delete: [ attributeId ], + } ); + await api.put( + 'settings/products/woocommerce_attribute_lookup_enabled', + { + value: 'no', + } + ); + const base64auth = Buffer.from( + `${ admin.username }:${ admin.password }` + ).toString( 'base64' ); + const wpApi = await request.newContext( { + baseURL: `${ baseURL }/wp-json/wp/v2/`, + extraHTTPHeaders: { + Authorization: `Basic ${ base64auth }`, + }, + } ); + let response = await wpApi.get( `pages` ); + const allPages = await response.json(); + await allPages.forEach( async ( page ) => { + if ( page.title.rendered === pageTitle ) { + response = await wpApi.delete( `pages/${ page.id }`, { + data: { + force: true, + }, + } ); + } + } ); + } ); + + test( 'should see shop catalog with all its products', async ( { + page, + } ) => { + await page.goto( 'shop/' ); + await expect( page.locator( 'h1.page-title' ) ).toContainText( 'Shop' ); + await expect( page.locator( '.woocommerce-ordering' ) ).toBeVisible(); + + const addToCart = page.getByRole( 'add_to_cart_button' ); + for ( let i = 0; i < addToCart.count(); ++i ) + await expect( addToCart.nth( i ) ).toBeVisible(); + + const productPrice = page.getByRole( 'woocommerce-Price-amount' ); + for ( let i = 0; i < productPrice.count(); ++i ) + await expect( productPrice.nth( i ) ).toBeVisible(); + + const productTitle = page.getByRole( + 'woocommerce-loop-product__title' + ); + for ( let i = 0; i < productTitle.count(); ++i ) + await expect( productTitle.nth( i ) ).toBeVisible(); + + const productImage = page.getByRole( 'wp-post-image' ); + for ( let i = 0; i < productImage.count(); ++i ) + await expect( productImage.nth( i ) ).toBeVisible(); + } ); + + test( 'should see and sort tags page with all the products', async ( { + page, + } ) => { + await page.goto( 'shop/' ); + await page.locator( `text=${ simpleProductName } 1` ).click(); + await page + .locator( 'span.tagged_as > a', { hasText: productTagName1 } ) + .click(); + await expect( page.locator( 'h1.page-title' ) ).toContainText( + productTagName1 + ); + await expect( page.locator( '.woocommerce-breadcrumb' ) ).toContainText( + ` / Products tagged “${ productTagName1 }”` + ); + await expect( + page.locator( '.woocommerce-result-count' ) + ).toContainText( 'Showing all 3 results' ); + } ); + + test( 'should see and sort attributes page with all its products', async ( { + page, + } ) => { + // the api setting for enabling attribute term page doesn't apply for some reason + // but I could see it as checked/enabled in the settings + // workaround for the change to take effect is to just save the settings. + await page.goto( 'wp-admin/admin.php?page=wc-settings' ); + await page.locator( 'text=Save changes' ).click(); + + const slug = simpleProductName.replace( / /gi, '-' ).toLowerCase(); + await page.goto( `product/${ slug }` ); + await page + .locator( '.woocommerce-product-attributes-item__value > p > a', { + hasText: productAttributeTerm, + } ) + .click(); + await expect( page.locator( 'h1.page-title' ) ).toContainText( + productAttributeTerm + ); + await expect( page.locator( '.woocommerce-breadcrumb' ) ).toContainText( + ` / Product ${ productAttributeName } / ${ productAttributeTerm }` + ); + await expect( + page.locator( '.woocommerce-result-count' ) + ).toContainText( 'Showing all 3 results' ); + } ); + + test( 'can see products showcase', async ( { page } ) => { + // create as a merchant a new page with Products block + await page.goto( 'wp-admin/post-new.php?post_type=page' ); + + const welcomeModalVisible = await page + .getByRole( 'heading', { + name: 'Welcome to the block editor', + } ) + .isVisible(); + + if ( welcomeModalVisible ) { + await page.getByRole( 'button', { name: 'Close' } ).click(); + } + + await page + .getByRole( 'textbox', { name: 'Add Title' } ) + .fill( pageTitle ); + + await page.getByRole( 'button', { name: 'Add default block' } ).click(); + + await page + .getByRole( 'document', { + name: 'Empty block; start writing or type forward slash to choose a block', + } ) + .fill( '/products' ); + await page.keyboard.press( 'Enter' ); + + await page + .getByRole( 'button', { name: 'Publish', exact: true } ) + .click(); + + await page + .getByRole( 'region', { name: 'Editor publish' } ) + .getByRole( 'button', { name: 'Publish', exact: true } ) + .click(); + + await expect( + page.getByText( `${ pageTitle } is now live.` ) + ).toBeVisible(); + + // go to created page with products showcase + await page.goto( 'product-showcase' ); + await expect( page.locator( 'h1.entry-title' ) ).toContainText( + pageTitle + ); + const addToCart = page.getByRole( 'add_to_cart_button' ); + for ( let i = 0; i < addToCart.count(); ++i ) + await expect( addToCart.nth( i ) ).toBeVisible(); + + const productPrice = page.getByRole( 'woocommerce-Price-amount' ); + for ( let i = 0; i < productPrice.count(); ++i ) + await expect( productPrice.nth( i ) ).toBeVisible(); + + const productTitle = page.getByRole( + 'woocommerce-loop-product__title' + ); + for ( let i = 0; i < productTitle.count(); ++i ) + await expect( productTitle.nth( i ) ).toBeVisible(); + + const productImage = page.getByRole( 'wp-post-image' ); + for ( let i = 0; i < productImage.count(); ++i ) + await expect( productImage.nth( i ) ).toBeVisible(); + } ); +} ); diff --git a/plugins/woocommerce/tests/e2e-pw/tests/shopper/product-browse-search-sort.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/shopper/shop-search-browse-sort.spec.js similarity index 100% rename from plugins/woocommerce/tests/e2e-pw/tests/shopper/product-browse-search-sort.spec.js rename to plugins/woocommerce/tests/e2e-pw/tests/shopper/shop-search-browse-sort.spec.js From af10078e044dc4989f0f13edff2c16122c4de1c5 Mon Sep 17 00:00:00 2001 From: Dan Q Date: Mon, 25 Sep 2023 09:30:12 +0100 Subject: [PATCH 31/81] Inconsequential change to trigger hooks --- plugins/woocommerce/changelog/fix-wccom-18179-search-box-border | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border b/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border index 5625300eec7..d37a487c5f6 100644 --- a/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border +++ b/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border @@ -2,4 +2,3 @@ Significance: patch Type: fix Comment: Prevented a 1.5px cosmetic shift of contents in the Extension Search box when focussing/unfocussing. - From 547ad79a5a6942a3c976c1402b80993f06aa4ce9 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 25 Sep 2023 08:34:22 +0000 Subject: [PATCH 32/81] Add changefile(s) from automation for the following project(s): woocommerce --- plugins/woocommerce/changelog/fix-wccom-18179-search-box-border | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border b/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border index d37a487c5f6..5625300eec7 100644 --- a/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border +++ b/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border @@ -2,3 +2,4 @@ Significance: patch Type: fix Comment: Prevented a 1.5px cosmetic shift of contents in the Extension Search box when focussing/unfocussing. + From f0296485c3fc55ec714a39b356d0a9de2c1712c4 Mon Sep 17 00:00:00 2001 From: Dan Q Date: Mon, 25 Sep 2023 10:00:18 +0100 Subject: [PATCH 33/81] Inconsequential change to trigger hooks again --- plugins/woocommerce/changelog/fix-wccom-18179-search-box-border | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border b/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border index 5625300eec7..5b89c17f125 100644 --- a/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border +++ b/plugins/woocommerce/changelog/fix-wccom-18179-search-box-border @@ -3,3 +3,4 @@ Type: fix Comment: Prevented a 1.5px cosmetic shift of contents in the Extension Search box when focussing/unfocussing. + From 0b2ad50a21d3b775e99375eed04d65b91c442d7a Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Mon, 25 Sep 2023 18:30:31 +0800 Subject: [PATCH 34/81] CYS: Add homepage template AI completion and revamped header footer (#40363) * Moved homepage templates, added header and footer to homepage templates, revamped templates to use metadata. removed header and footer completion calls * Lint * Slight adjustment to completion prompt and changelog * Lint * Use header and footer in 'Change your homepage' * Add test * Lint * Add back homepage templates exclusion header and footer for assembler use * Add test for useHomeTemplates * Lint --- .../hooks/test/use-home-templates.js | 56 ++++++ .../assembler-hub/hooks/use-home-templates.ts | 72 +------- .../sidebar-navigation-screen-homepage.tsx | 2 +- .../customize-store/data/homepageTemplates.ts | 160 ++++++++++++++++++ .../customize-store/design-with-ai/actions.ts | 20 +++ .../prompts/homepageTemplate.ts | 41 +++++ .../design-with-ai/prompts/index.ts | 1 + .../prompts/test/homepageTemplate.test.ts | 49 ++++++ .../design-with-ai/services.ts | 30 +--- .../design-with-ai/state-machine.tsx | 48 +----- .../customize-store/design-with-ai/types.ts | 6 +- .../add-cys-homepage-template-completion | 4 + 12 files changed, 355 insertions(+), 134 deletions(-) create mode 100644 plugins/woocommerce-admin/client/customize-store/assembler-hub/hooks/test/use-home-templates.js create mode 100644 plugins/woocommerce-admin/client/customize-store/data/homepageTemplates.ts create mode 100644 plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/homepageTemplate.ts create mode 100644 plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/test/homepageTemplate.test.ts create mode 100644 plugins/woocommerce/changelog/add-cys-homepage-template-completion diff --git a/plugins/woocommerce-admin/client/customize-store/assembler-hub/hooks/test/use-home-templates.js b/plugins/woocommerce-admin/client/customize-store/assembler-hub/hooks/test/use-home-templates.js new file mode 100644 index 00000000000..01f5364b034 --- /dev/null +++ b/plugins/woocommerce-admin/client/customize-store/assembler-hub/hooks/test/use-home-templates.js @@ -0,0 +1,56 @@ +/** + * External dependencies + */ +import { renderHook } from '@testing-library/react-hooks'; + +/** + * Internal dependencies + */ +import { useHomeTemplates, getTemplatePatterns } from '../use-home-templates'; +import { usePatterns } from '../use-patterns'; + +// Mocking the dependent hooks and data +jest.mock( '../use-patterns' ); +jest.mock( '~/customize-store/data/homepageTemplates', () => ( { + HOMEPAGE_TEMPLATES: { + template1: { blocks: [ 'header', 'content1', 'content2', 'footer' ] }, + template2: { blocks: [ 'header', 'content3', 'footer' ] }, + }, +} ) ); + +const mockUsePatterns = usePatterns; + +const mockPatternsByName = { + header: { name: 'header', content: '
Header
' }, + content1: { name: 'content1', content: '
Content1
' }, + content2: { name: 'content2', content: '
Content2
' }, + content3: { name: 'content3', content: '
Content3
' }, + footer: { name: 'footer', content: '
Footer
' }, +}; + +describe( 'useHomeTemplates', () => { + beforeEach( () => { + mockUsePatterns.mockReturnValue( { + blockPatterns: Object.values( mockPatternsByName ), + isLoading: false, + } ); + } ); + + it( 'should return home templates without first and last items', () => { + const { result } = renderHook( () => useHomeTemplates() ); + + // The expected result based on the HOMEPAGE_TEMPLATES and mock patterns + const expectedResult = { + template1: getTemplatePatterns( + [ 'content1', 'content2' ], + mockPatternsByName + ), + template2: getTemplatePatterns( + [ 'content3' ], + mockPatternsByName + ), + }; + + expect( result.current.homeTemplates ).toEqual( expectedResult ); + } ); +} ); diff --git a/plugins/woocommerce-admin/client/customize-store/assembler-hub/hooks/use-home-templates.ts b/plugins/woocommerce-admin/client/customize-store/assembler-hub/hooks/use-home-templates.ts index ae5bf2d1ec6..d5f7309b69d 100644 --- a/plugins/woocommerce-admin/client/customize-store/assembler-hub/hooks/use-home-templates.ts +++ b/plugins/woocommerce-admin/client/customize-store/assembler-hub/hooks/use-home-templates.ts @@ -10,72 +10,7 @@ import { parse } from '@wordpress/blocks'; * Internal dependencies */ import { usePatterns, Pattern, PatternWithBlocks } from './use-patterns'; - -// TODO: It might be better to create an API endpoint to get the templates. -export const LARGE_BUSINESS_TEMPLATES = { - template1: [ - 'a8c/cover-image-with-left-aligned-call-to-action', - 'woocommerce-blocks/featured-products-5-item-grid', - 'woocommerce-blocks/featured-products-fresh-and-tasty', - 'woocommerce-blocks/featured-category-triple', - 'a8c/3-column-testimonials', - 'a8c/quotes-2', - 'woocommerce-blocks/social-follow-us-in-social-media', - ], - template2: [ - 'woocommerce-blocks/hero-product-split', - 'woocommerce-blocks/featured-products-fresh-and-tasty', - 'woocommerce-blocks/featured-category-triple', - 'woocommerce-blocks/featured-products-fresh-and-tasty', - 'a8c/three-columns-with-images-and-text', - 'woocommerce-blocks/testimonials-3-columns', - 'a8c/subscription', - ], - template3: [ - 'a8c/call-to-action-7', - 'a8c/3-column-testimonials', - 'woocommerce-blocks/featured-products-fresh-and-tasty', - 'woocommerce-blocks/featured-category-cover-image', - 'woocommerce-blocks/featured-products-5-item-grid', - 'woocommerce-blocks/featured-products-5-item-grid', - 'woocommerce-blocks/social-follow-us-in-social-media', - ], -}; - -export const SMALL_MEDIUM_BUSINESS_TEMPLATES = { - template1: [ - 'woocommerce-blocks/featured-products-fresh-and-tasty', - 'woocommerce-blocks/testimonials-single', - 'woocommerce-blocks/hero-product-3-split', - 'a8c/contact-8', - ], - template2: [ - 'a8c/about-me-4', - 'a8c/product-feature-with-buy-button', - 'woocommerce-blocks/featured-products-fresh-and-tasty', - 'a8c/subscription', - 'woocommerce-blocks/testimonials-3-columns', - 'a8c/contact-with-map-on-the-left', - ], - template3: [ - 'a8c/heading-and-video', - 'a8c/3-column-testimonials', - 'woocommerce-blocks/product-hero', - 'a8c/quotes-2', - 'a8c/product-feature-with-buy-button', - 'a8c/simple-two-column-layout', - 'woocommerce-blocks/social-follow-us-in-social-media', - ], -}; - -const TEMPLATES = { - template1: LARGE_BUSINESS_TEMPLATES.template1, - template2: LARGE_BUSINESS_TEMPLATES.template2, - template3: LARGE_BUSINESS_TEMPLATES.template3, - template4: SMALL_MEDIUM_BUSINESS_TEMPLATES.template1, - template5: SMALL_MEDIUM_BUSINESS_TEMPLATES.template2, - template6: SMALL_MEDIUM_BUSINESS_TEMPLATES.template3, -}; +import { HOMEPAGE_TEMPLATES } from '~/customize-store/data/homepageTemplates'; export const getTemplatePatterns = ( template: string[], @@ -106,6 +41,7 @@ export const patternsToNameMap = ( blockPatterns: Pattern[] ) => {} ); +// Returns home template patterns excluding header and footer. export const useHomeTemplates = () => { const { blockPatterns, isLoading } = usePatterns(); @@ -116,7 +52,7 @@ export const useHomeTemplates = () => { const homeTemplates = useMemo( () => { if ( isLoading ) return {}; - const recommendedTemplates = TEMPLATES; + const recommendedTemplates = HOMEPAGE_TEMPLATES; return Object.entries( recommendedTemplates ).reduce( ( @@ -125,7 +61,7 @@ export const useHomeTemplates = () => { ) => { if ( templateName in recommendedTemplates ) { acc[ templateName ] = getTemplatePatterns( - template, + template.blocks.slice( 1, -1 ), patternsByName ); } diff --git a/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/sidebar-navigation-screen-homepage.tsx b/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/sidebar-navigation-screen-homepage.tsx index 6dce4f01372..56244a002f1 100644 --- a/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/sidebar-navigation-screen-homepage.tsx +++ b/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/sidebar-navigation-screen-homepage.tsx @@ -97,7 +97,7 @@ export const SidebarNavigationScreenHomepage = () => { shownPatterns={ homePatterns } blockPatterns={ homePatterns } onClickPattern={ onClickPattern } - label={ 'Hompeage' } + label={ 'Homepage' } orientation="vertical" category={ 'homepage' } isDraggable={ false } diff --git a/plugins/woocommerce-admin/client/customize-store/data/homepageTemplates.ts b/plugins/woocommerce-admin/client/customize-store/data/homepageTemplates.ts new file mode 100644 index 00000000000..9d0614a9073 --- /dev/null +++ b/plugins/woocommerce-admin/client/customize-store/data/homepageTemplates.ts @@ -0,0 +1,160 @@ +// TODO: It might be better to create an API endpoint to get the templates. +export const HOMEPAGE_TEMPLATES = { + template1: { + blocks: [ + // Header + 'woocommerce-blocks/header-centered-menu-with-search', + + // Body + 'a8c/cover-image-with-left-aligned-call-to-action', + 'woocommerce-blocks/featured-products-5-item-grid', + 'woocommerce-blocks/featured-products-fresh-and-tasty', + 'woocommerce-blocks/featured-category-triple', + 'a8c/3-column-testimonials', + 'a8c/quotes-2', + 'woocommerce-blocks/social-follow-us-in-social-media', + + // Footer + 'woocommerce-blocks/footer-with-3-menus', + ], + metadata: { + businessType: [ 'e-commerce', 'large-business' ], + contentFocus: [ 'featured products' ], + audience: [ 'general' ], + design: [ 'contemporary' ], + features: [ + 'fullwidth-image-banner', + 'testimonials', + 'social-media', + 'search', + ], + complexity: 'high', + }, + }, + template2: { + blocks: [ + // Header + 'woocommerce-blocks/header-essential', + + // Body + 'woocommerce-blocks/hero-product-split', + 'woocommerce-blocks/featured-products-fresh-and-tasty', + 'woocommerce-blocks/featured-category-triple', + 'woocommerce-blocks/featured-products-fresh-and-tasty', + 'a8c/three-columns-with-images-and-text', + 'woocommerce-blocks/testimonials-3-columns', + 'a8c/subscription', + + // Footer + 'woocommerce-blocks/footer-large', + ], + metadata: { + businessType: [ 'e-commerce', 'subscription', 'large-business' ], + contentFocus: [ 'catalog' ], + audience: [ 'general' ], + design: [ 'contemporary' ], + features: [ 'small-banner', 'testimonials', 'newsletter' ], + complexity: 'high', + }, + }, + template3: { + blocks: [ + // Header + 'woocommerce-blocks/header-centered-menu-with-search', + + // Body + 'a8c/call-to-action-7', + 'a8c/3-column-testimonials', + 'woocommerce-blocks/featured-products-fresh-and-tasty', + 'woocommerce-blocks/featured-category-cover-image', + 'woocommerce-blocks/featured-products-5-item-grid', + 'woocommerce-blocks/featured-products-5-item-grid', + 'woocommerce-blocks/social-follow-us-in-social-media', + + // Footer + 'woocommerce-blocks/footer-with-3-menus', + ], + metadata: { + businessType: [ 'subscription', 'large-business' ], + contentFocus: [ 'catalog', 'call-to-action' ], + audience: [ 'general' ], + design: [ 'contemporary' ], + features: [ 'small-banner', 'social-media' ], + complexity: 'high', + }, + }, + template4: { + blocks: [ + // Header + 'woocommerce-blocks/header-essential', + + // Body + 'woocommerce-blocks/featured-products-fresh-and-tasty', + 'woocommerce-blocks/testimonials-single', + 'woocommerce-blocks/hero-product-3-split', + 'a8c/contact-8', + + // Footer + 'woocommerce-blocks/footer-simple-menu-and-cart', // This is supposed to be the "Footer with Newsletter Subscription Form" + ], + metadata: { + businessType: [ 'e-commerce', 'small-medium-business' ], + contentFocus: [ 'products' ], + audience: [ 'focused' ], + design: [ 'sleek' ], + features: [ 'single-testimonial', 'contact', 'call-to-action' ], + complexity: 'medium', + }, + }, + template5: { + blocks: [ + // Header + 'woocommerce-blocks/header-essential', + + // Body + 'a8c/about-me-4', + 'a8c/product-feature-with-buy-button', + 'woocommerce-blocks/featured-products-fresh-and-tasty', + 'a8c/subscription', + 'woocommerce-blocks/testimonials-3-columns', + 'a8c/contact-with-map-on-the-left', + + // Footer + 'woocommerce-blocks/footer-simple-menu-and-cart', + ], + metadata: { + businessType: [ 'e-commerce', 'small-medium-business' ], + contentFocus: [ 'products', 'featured-product' ], + audience: [ 'focused' ], + design: [ 'sleek' ], + features: [ 'testimonial' ], + complexity: 'medium', + }, + }, + template6: { + blocks: [ + // Header + 'woocommerce-blocks/header-minimal', + + // Body + 'a8c/heading-and-video', + 'a8c/3-column-testimonials', + 'woocommerce-blocks/product-hero', + 'a8c/quotes-2', + 'a8c/product-feature-with-buy-button', + 'a8c/simple-two-column-layout', + 'woocommerce-blocks/social-follow-us-in-social-media', + + // Footer + 'woocommerce-blocks/footer-simple-menu-and-cart', + ], + metadata: { + businessType: [ 'e-commerce', 'creative', 'small-medium-business' ], + contentFocus: [ 'services', 'storytelling', 'video' ], + audience: [ 'focused' ], + design: [ 'modern' ], + features: [ 'social-media', 'video' ], + complexity: 'high', + }, + }, +}; diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts index cb6ee703efa..b317557fe5e 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts @@ -18,6 +18,7 @@ import { LookAndToneCompletionResponse, Header, Footer, + HomepageTemplate, } from './types'; import { aiWizardClosedBeforeCompletionEvent } from './events'; import { @@ -150,6 +151,24 @@ const assignFooter = assign< }, } ); +const assignHomepageTemplate = assign< + designWithAiStateMachineContext, + designWithAiStateMachineEvents +>( { + aiSuggestions: ( context, event: unknown ) => { + return { + ...context.aiSuggestions, + homepageTemplate: ( + event as { + data: { + response: HomepageTemplate; + }; + } + ).data.response.homepage_template, + }; + }, +} ); + const updateWooAiStoreDescriptionOption = ( descriptionText: string ) => { return dispatch( OPTIONS_STORE_NAME ).updateOptions( { woo_ai_describe_store_description: descriptionText, @@ -243,6 +262,7 @@ export const actions = { assignFontPairing, assignHeader, assignFooter, + assignHomepageTemplate, logAIAPIRequestError, updateQueryStep, recordTracksStepViewed, diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/homepageTemplate.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/homepageTemplate.ts new file mode 100644 index 00000000000..d1b991f6fd6 --- /dev/null +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/homepageTemplate.ts @@ -0,0 +1,41 @@ +/** + * External dependencies + */ +import { z } from 'zod'; + +/** + * Internal dependencies + */ +import { HOMEPAGE_TEMPLATES } from '~/customize-store/data/homepageTemplates'; + +const allowedTemplates: string[] = Object.keys( HOMEPAGE_TEMPLATES ); + +export const homepageTemplateValidator = z.object( { + homepage_template: z + .string() + .refine( ( template ) => allowedTemplates.includes( template ), { + message: 'Template not part of allowed list', + } ), +} ); + +export const defaultHomepageTemplate = { + queryId: 'default_template', + + // make sure version is updated every time the prompt is changed + version: '2023-09-21', + prompt: ( businessDescription: string, look: string, tone: string ) => { + return ` + You are a WordPress theme expert and a business analyst. Analyse the following store description, merchant's chosen look and tone, template metadata, and determine the most appropriate template. + Consider the business size based on business description, where some templates are more suited for small and medium businesses, and some for large businesses. + Use metadata with the key "businessType" to determine the business size and type. + This is important, respond only with ONE template identifier (e.g., { "homepage_template": "template1" }). Do not explain or add any other information since it will fail the validation. + + Chosen look and tone: ${ look } look, ${ tone } tone. + Business description: ${ businessDescription } + + Templates to choose from: + ${ JSON.stringify( HOMEPAGE_TEMPLATES ) } + `; + }, + responseValidation: homepageTemplateValidator.parse, +}; diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/index.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/index.ts index 58c7c7a684c..a4254342320 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/index.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/index.ts @@ -3,3 +3,4 @@ export * from './lookAndTone'; export * from './fontPairings'; export * from './header'; export * from './footer'; +export * from './homepageTemplate'; diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/test/homepageTemplate.test.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/test/homepageTemplate.test.ts new file mode 100644 index 00000000000..43993f2a4a4 --- /dev/null +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/test/homepageTemplate.test.ts @@ -0,0 +1,49 @@ +/** + * Internal dependencies + */ +import { homepageTemplateValidator } from '..'; + +describe( 'homepageTemplateValidator', () => { + it( 'should validate when template is part of the allowed list', () => { + const validTemplate = { homepage_template: 'template1' }; + expect( () => + homepageTemplateValidator.parse( validTemplate ) + ).not.toThrow(); + } ); + + it( 'should not validate when template is not part of the allowed list', () => { + const invalidTemplate = { + homepage_template: 'nonexistingtemplate', + }; + expect( () => homepageTemplateValidator.parse( invalidTemplate ) ) + .toThrowErrorMatchingInlineSnapshot( ` + "[ + { + \\"code\\": \\"custom\\", + \\"message\\": \\"Template not part of allowed list\\", + \\"path\\": [ + \\"homepage_template\\" + ] + } + ]" + ` ); + } ); + + it( 'should not validate when template is not a string', () => { + const invalidType = { homepage_template: 123 }; + expect( () => homepageTemplateValidator.parse( invalidType ) ) + .toThrowErrorMatchingInlineSnapshot( ` + "[ + { + \\"code\\": \\"invalid_type\\", + \\"expected\\": \\"string\\", + \\"received\\": \\"number\\", + \\"path\\": [ + \\"homepage_template\\" + ], + \\"message\\": \\"Expected string, received number\\" + } + ]" + ` ); + } ); +} ); diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts index a78e22f26dd..706a2f48a29 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts @@ -24,9 +24,8 @@ import { COLOR_PALETTES } from '../assembler-hub/sidebar/global-styles/color-pal import { patternsToNameMap, getTemplatePatterns, - LARGE_BUSINESS_TEMPLATES, - SMALL_MEDIUM_BUSINESS_TEMPLATES, } from '../assembler-hub/hooks/use-home-templates'; +import { HOMEPAGE_TEMPLATES } from '../data/homepageTemplates'; const browserPopstateHandler = () => ( sendBack: Sender< { type: 'EXTERNAL_URL_UPDATE' } > ) => { @@ -278,36 +277,21 @@ const updateGlobalStyles = async ( { // Update the current theme template const updateTemplate = async ( { - headerSlug, - businessSize, homepageTemplateId, - footerSlug, }: { - headerSlug: string; - businessSize: 'SMB' | 'LB'; - homepageTemplateId: - | keyof typeof SMALL_MEDIUM_BUSINESS_TEMPLATES - | keyof typeof LARGE_BUSINESS_TEMPLATES; - footerSlug: string; + homepageTemplateId: keyof typeof HOMEPAGE_TEMPLATES; } ) => { const patterns = ( await resolveSelect( coreStore // @ts-ignore No types for this exist yet. ).getBlockPatterns() ) as Pattern[]; - const patternsByName = patternsToNameMap( patterns ); - - const headerPattern = patternsByName[ headerSlug ]; - const footerPattern = patternsByName[ footerSlug ]; - const homepageTemplate = getTemplatePatterns( - businessSize === 'SMB' - ? SMALL_MEDIUM_BUSINESS_TEMPLATES[ homepageTemplateId ] - : LARGE_BUSINESS_TEMPLATES[ homepageTemplateId ], + HOMEPAGE_TEMPLATES[ homepageTemplateId ].blocks, patternsByName ); - const content = [ headerPattern, ...homepageTemplate, footerPattern ] + const content = [ ...homepageTemplate ] .filter( Boolean ) .map( ( pattern ) => pattern.content ) .join( '\n\n' ); @@ -356,11 +340,9 @@ export const assembleSite = async ( try { await updateTemplate( { - headerSlug: context.aiSuggestions.header, // TODO: Get from context - businessSize: 'SMB', - homepageTemplateId: 'template1', - footerSlug: context.aiSuggestions.footer, + homepageTemplateId: context.aiSuggestions + .homepageTemplate as keyof typeof HOMEPAGE_TEMPLATES, } ); recordEvent( 'customize_your_store_ai_update_template_success' ); } catch ( error ) { diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx b/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx index 50a41dcf075..4a1f319570b 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx @@ -11,9 +11,8 @@ import { designWithAiStateMachineContext, designWithAiStateMachineEvents, FontPairing, - Header, - Footer, ColorPaletteResponse, + HomepageTemplate, } from './types'; import { BusinessInfoDescription, @@ -26,8 +25,7 @@ import { services } from './services'; import { defaultColorPalette, fontPairings, - defaultHeader, - defaultFooter, + defaultHomepageTemplate, } from './prompts'; export const hasStepInUrl = ( @@ -79,8 +77,7 @@ export const designWithAiStateMachineDefinition = createMachine( aiSuggestions: { defaultColorPalette: {} as ColorPaletteResponse, fontPairing: '' as FontPairing[ 'pair_name' ], - header: '' as Header[ 'slug' ], - footer: '' as Footer[ 'slug' ], + homepageTemplate: '' as HomepageTemplate[ 'homepage_template' ], }, }, initial: 'navigate', @@ -346,7 +343,7 @@ export const designWithAiStateMachineDefinition = createMachine( success: { type: 'final' }, }, }, - chooseHeader: { + chooseHomepageTemplate: { initial: 'pending', states: { pending: { @@ -354,8 +351,8 @@ export const designWithAiStateMachineDefinition = createMachine( src: 'queryAiEndpoint', data: ( context ) => { return { - ...defaultHeader, - prompt: defaultHeader.prompt( + ...defaultHomepageTemplate, + prompt: defaultHomepageTemplate.prompt( context .businessInfoDescription .descriptionText, @@ -367,36 +364,9 @@ export const designWithAiStateMachineDefinition = createMachine( }; }, onDone: { - actions: [ 'assignHeader' ], - target: 'success', - }, - }, - }, - success: { type: 'final' }, - }, - }, - chooseFooter: { - initial: 'pending', - states: { - pending: { - invoke: { - src: 'queryAiEndpoint', - data: ( context ) => { - return { - ...defaultFooter, - prompt: defaultFooter.prompt( - context - .businessInfoDescription - .descriptionText, - context.lookAndFeel - .choice, - context.toneOfVoice - .choice - ), - }; - }, - onDone: { - actions: [ 'assignFooter' ], + actions: [ + 'assignHomepageTemplate', + ], target: 'success', }, }, diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts index 742a08f6725..f8d4a81f5b4 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts @@ -12,6 +12,7 @@ import { headerValidator, footerValidator, colorPaletteResponseValidator, + homepageTemplateValidator, } from './prompts'; export type designWithAiStateMachineContext = { @@ -27,8 +28,7 @@ export type designWithAiStateMachineContext = { aiSuggestions: { defaultColorPalette: ColorPaletteResponse; fontPairing: FontPairing[ 'pair_name' ]; - header: Header[ 'slug' ]; - footer: Footer[ 'slug' ]; + homepageTemplate: HomepageTemplate[ 'homepage_template' ]; }; // If we require more data from options, previously provided core profiler details, // we can retrieve them in preBusinessInfoDescription and then assign them here @@ -70,3 +70,5 @@ export type FontPairing = z.infer< typeof fontChoiceValidator >; export type Header = z.infer< typeof headerValidator >; export type Footer = z.infer< typeof footerValidator >; + +export type HomepageTemplate = z.infer< typeof homepageTemplateValidator >; diff --git a/plugins/woocommerce/changelog/add-cys-homepage-template-completion b/plugins/woocommerce/changelog/add-cys-homepage-template-completion new file mode 100644 index 00000000000..ba920254742 --- /dev/null +++ b/plugins/woocommerce/changelog/add-cys-homepage-template-completion @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add homepage template AI completion and revamped header footer From b2bbe5e56a70d511f1bc704456d62727eaafb6ed Mon Sep 17 00:00:00 2001 From: Yordan Soares <38109855+YordanSoares@users.noreply.github.com> Date: Mon, 25 Sep 2023 14:41:45 +0200 Subject: [PATCH 35/81] Escape the default "Thank you" text instead of the filtered message (#40353) * Escape the default "Thank you" text instead of the filtered message Closes: #40329 and #40352 * Update plugins/woocommerce/templates/checkout/order-received.php Co-authored-by: Leif Singer * Bump template version to 8.3.0 * Add changefile(s) from automation for the following project(s): woocommerce --------- Co-authored-by: Leif Singer Co-authored-by: github-actions --- plugins/woocommerce/changelog/trunk | 4 ++++ plugins/woocommerce/templates/checkout/order-received.php | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 plugins/woocommerce/changelog/trunk diff --git a/plugins/woocommerce/changelog/trunk b/plugins/woocommerce/changelog/trunk new file mode 100644 index 00000000000..b67b210de7b --- /dev/null +++ b/plugins/woocommerce/changelog/trunk @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Escape the default 'thank you' text instead of the filtered message. diff --git a/plugins/woocommerce/templates/checkout/order-received.php b/plugins/woocommerce/templates/checkout/order-received.php index da63173ce87..5cfdd75ad97 100644 --- a/plugins/woocommerce/templates/checkout/order-received.php +++ b/plugins/woocommerce/templates/checkout/order-received.php @@ -12,7 +12,7 @@ * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce\Templates - * @version 8.1.0 + * @version 8.3.0 * * @var WC_Order|false $order */ @@ -32,10 +32,11 @@ defined( 'ABSPATH' ) || exit; */ $message = apply_filters( 'woocommerce_thankyou_order_received_text', - __( 'Thank you. Your order has been received.', 'woocommerce' ), + esc_html( __( 'Thank you. Your order has been received.', 'woocommerce' ) ), $order ); - echo esc_html( $message ); + // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo $message; ?>

From 402d4899994a52353028bcc184074515eb9a7c6b Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Mon, 25 Sep 2023 10:39:27 -0300 Subject: [PATCH 36/81] add enhancement exclusion to stalebot config (#40391) Co-authored-by: Ron Rennick --- .github/workflows/stalebot.yml | 3 +-- plugins/woocommerce/changelog/fix-stalebot-excl-enhancement | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-stalebot-excl-enhancement diff --git a/.github/workflows/stalebot.yml b/.github/workflows/stalebot.yml index a512944ea96..749e8373e75 100644 --- a/.github/workflows/stalebot.yml +++ b/.github/workflows/stalebot.yml @@ -7,8 +7,6 @@ permissions: {} jobs: stale: - if: | - ! contains(github.event.issue.labels.*.name, 'type: enhancement') runs-on: ubuntu-20.04 permissions: contents: read @@ -25,6 +23,7 @@ jobs: days-before-pr-close: -1 stale-issue-label: 'status: stale' stale-pr-label: 'status: stale' + exempt-issue-labels: 'type: enhancement' only-issue-labels: 'needs: author feedback' close-issue-label: "status: can't reproduce" ascending: true diff --git a/plugins/woocommerce/changelog/fix-stalebot-excl-enhancement b/plugins/woocommerce/changelog/fix-stalebot-excl-enhancement new file mode 100644 index 00000000000..6cc37d331b3 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-stalebot-excl-enhancement @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +add enhancement exclusion to stalebot config From cbe0db4d0fa1952cf58894c11400d40efc84f3af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20L=C3=B3pez=20Ariza?= <45979455+alopezari@users.noreply.github.com> Date: Mon, 25 Sep 2023 19:46:37 +0200 Subject: [PATCH 37/81] Add new guide to decide if a PR is high impact. (#40390) * Add new guide to decide if a PR is high impact. * Fix markdown errors. --- docs/contributing/deciding-pr-high-impact.md | 35 ++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/contributing/deciding-pr-high-impact.md diff --git a/docs/contributing/deciding-pr-high-impact.md b/docs/contributing/deciding-pr-high-impact.md new file mode 100644 index 00000000000..d0e283ac822 --- /dev/null +++ b/docs/contributing/deciding-pr-high-impact.md @@ -0,0 +1,35 @@ +# How to decide if a Pull Request is High-Impact + +Deciding if a Pull Request should be declared High-Impact is a complex task. To achieve it, we need to assess and estimate the impact that the changes introduced in the Pull Request have in WooCommerce, which is usually a subjective task and sometimes inaccurate, due to the huge knowledge it demands of the WooCommerce product details, technical details and even customers issues history. + +On this page, we will share some guidelines to help you assess the impact degree of a Pull Request. + +## You should mark a Pull Request as High-Impact if + +- It adds a **new feature** to WooCommerce, except if it's behind a feature flag. +- Modifies **critical functionality** (see the [critical flows list](https://github.com/woocommerce/woocommerce/wiki/Critical-Flows)). +- It fixes a **high-priority bug** (this includes Blocks fix releases core version bumps). +- It contains a **security fix**. +- Updates **SQL queries**. +- Touches any of the **$_REQUEST** family of variables. +- Any kind of **data migration/update**. +- Changes to **emails** sent from WooCommerce. +- Changes to WooCommerce **hooks/actions/filters**. +- Changes to **REST API endpoints**. +- It's a **big PR** (i.e. adds several changes in many files). +- It has **i18n changes** (for example, any file from `woocommerce/i18n` is modified). + +## You should not mark a Pull Request as High-Impact if + +- It only updates automated tests, things related to infrastructure not included in the WooCommerce release package, or other projects in the monorepo not included in the release package. +- It only contains readme or changelog changes. +- Fixes a low-priority bug such as a typo etc. +- Doesn’t need to be verified in multiple environment types. +- Regular scheduled (not a fix release) core version bumps for the Blocks package (as testing will already be scheduled). +- It's part of a feature that hasn't been released as a whole yet (i.e. it's behind a feature flag currently in progress). + +## My PR is High-Impact. What's next? + +If your PR is High-Impact, be sure to label it with `needs: analysis` so that it can get reviewed. If you don't have permission to add labels, please make sure that the **PR reviewers do it**. + +Once the PR labelled as `needs: analysis` is reviewed, it will get added the `impact: high` label if it qualifies for High-Impact and the WooCommerce Core team will keep special considerations for testing it. From 21dd36047a23a3690ae649855d71d87e36cf69dc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:11:41 -0500 Subject: [PATCH 38/81] Delete changelog files based on PR 40356 (#40402) Delete changelog files for 40356 Co-authored-by: WooCommerce Bot --- plugins/woocommerce/changelog/fix-product-editor-images-block | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 plugins/woocommerce/changelog/fix-product-editor-images-block diff --git a/plugins/woocommerce/changelog/fix-product-editor-images-block b/plugins/woocommerce/changelog/fix-product-editor-images-block deleted file mode 100644 index 1f469c3b618..00000000000 --- a/plugins/woocommerce/changelog/fix-product-editor-images-block +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: fix - -Enqueue media scripts for Images block within the product editor, as is required for Images block. From 15c9415ace02979b3c5dee2b3eb6a4172d129d1f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:20:17 -0500 Subject: [PATCH 39/81] Delete changelog files based on PR 40367 (#40404) Delete changelog files for 40367 Co-authored-by: WooCommerce Bot --- plugins/woocommerce/changelog/fix-feature_name | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 plugins/woocommerce/changelog/fix-feature_name diff --git a/plugins/woocommerce/changelog/fix-feature_name b/plugins/woocommerce/changelog/fix-feature_name deleted file mode 100644 index af78e77d3ec..00000000000 --- a/plugins/woocommerce/changelog/fix-feature_name +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fix -Comment: Fixes a minor regression in using the correct option name. - - From d1edec633170e6b05bce4e4a3211af22bbe40e99 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:26:17 -0500 Subject: [PATCH 40/81] Delete changelog files based on PR 40355 (#40406) Delete changelog files for 40355 Co-authored-by: WooCommerce Bot --- plugins/woocommerce/changelog/fix-wp-post-lock-conflict | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 plugins/woocommerce/changelog/fix-wp-post-lock-conflict diff --git a/plugins/woocommerce/changelog/fix-wp-post-lock-conflict b/plugins/woocommerce/changelog/fix-wp-post-lock-conflict deleted file mode 100644 index 3bb080e9ff4..00000000000 --- a/plugins/woocommerce/changelog/fix-wp-post-lock-conflict +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Disable WP's post lock on HPOS order edit screen. From d5fcd214c434c5518d8a333cd1b00e8420f19fbf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 11:36:12 -0700 Subject: [PATCH 41/81] Delete changelog files based on PR 40282 (#40408) Delete changelog files for 40282 Co-authored-by: WooCommerce Bot --- plugins/woocommerce/changelog/fix-hpos-save-before-cache | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 plugins/woocommerce/changelog/fix-hpos-save-before-cache diff --git a/plugins/woocommerce/changelog/fix-hpos-save-before-cache b/plugins/woocommerce/changelog/fix-hpos-save-before-cache deleted file mode 100644 index aefb0493c3e..00000000000 --- a/plugins/woocommerce/changelog/fix-hpos-save-before-cache +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -save hpos order data before clearing the order from cache From 1ca1536b310701028ced679ee6105e3a7bfe3ffd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:57:47 -0500 Subject: [PATCH 42/81] Delete changelog files based on PR 40334 (#40413) Delete changelog files for 40334 Co-authored-by: WooCommerce Bot --- .../fix-39936-incentives-exit-survey-just-dismiss-styling | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 plugins/woocommerce/changelog/fix-39936-incentives-exit-survey-just-dismiss-styling diff --git a/plugins/woocommerce/changelog/fix-39936-incentives-exit-survey-just-dismiss-styling b/plugins/woocommerce/changelog/fix-39936-incentives-exit-survey-just-dismiss-styling deleted file mode 100644 index 36a74923101..00000000000 --- a/plugins/woocommerce/changelog/fix-39936-incentives-exit-survey-just-dismiss-styling +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fix -Comment: This is a tiny fix of the Incentives exit survey dismiss button hover behavior. - - From 48834f88be4cb8c1fbb5e19021612d68ec5f6a3d Mon Sep 17 00:00:00 2001 From: louwie17 Date: Mon, 25 Sep 2023 16:10:38 -0300 Subject: [PATCH 43/81] Add global attribute terms filtering (#40253) * Deprecate local_attributes and add attributes filter to variation endpoint * Add test for variations attributes filter * Add changelog --- ...add-40070_global_attribute_terms_filtering | 4 ++ ...-wc-rest-product-variations-controller.php | 40 +++++++++++- .../Tests/Version3/product-variations.php | 63 +++++++++++++++++++ 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce/changelog/add-40070_global_attribute_terms_filtering diff --git a/plugins/woocommerce/changelog/add-40070_global_attribute_terms_filtering b/plugins/woocommerce/changelog/add-40070_global_attribute_terms_filtering new file mode 100644 index 00000000000..6de9f237076 --- /dev/null +++ b/plugins/woocommerce/changelog/add-40070_global_attribute_terms_filtering @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add attributes filter to variations endpoint and deprecate local_attributes filter. diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php index 5be6a20c387..4b4c21feece 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php @@ -821,8 +821,12 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Product_Variations_V // Set post_status. $args['post_status'] = $request['status']; - // Filter by local attributes. + /** + * @deprecated 8.1.0 replaced by attributes. + * Filter by local attributes. + */ if ( ! empty( $request['local_attributes'] ) && is_array( $request['local_attributes'] ) ) { + wc_deprecated_argument( 'local_attributes', '8.1', 'Use "attributes" instead.' ); foreach ( $request['local_attributes'] as $attribute ) { if ( ! isset( $attribute['attribute'] ) || ! isset( $attribute['term'] ) ) { continue; @@ -837,6 +841,22 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Product_Variations_V } } + // Filter by attributes. + if ( ! empty( $request['attributes'] ) && is_array( $request['attributes'] ) ) { + foreach ( $request['attributes'] as $attribute ) { + if ( ! isset( $attribute['attribute'] ) || ! isset( $attribute['term'] ) ) { + continue; + } + $args['meta_query'] = $this->add_meta_query( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query + $args, + array( + 'key' => 'attribute_' . $attribute['attribute'], + 'value' => $attribute['term'], + ) + ); + } + } + // Filter by sku. if ( ! empty( $request['sku'] ) ) { $skus = explode( ',', $request['sku'] ); @@ -950,6 +970,24 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Product_Variations_V 'validate_callback' => 'rest_validate_request_arg', ); + $params['attributes'] = array( + 'description' => __( 'Limit result set to products with specified attributes.', 'woocommerce' ), + 'type' => 'array', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'attribute' => array( + 'type' => 'string', + 'description' => __( 'Attribute slug.', 'woocommerce' ), + ), + 'term' => array( + 'type' => 'string', + 'description' => __( 'Attribute term.', 'woocommerce' ), + ), + ), + ), + ); + return $params; } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/product-variations.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/product-variations.php index 7e887575e7d..cdc35ce6fd4 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/product-variations.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/product-variations.php @@ -718,4 +718,67 @@ class Product_Variations_API extends WC_REST_Unit_Test_Case { // Removed four. $this->assertEquals( 2, count( $product->get_children() ) ); } + + /** + * Test getting variations with an attributes filter. + * + * @since 8.1.0 + */ + public function test_get_variations_with_attributes_filter() { + wp_set_current_user( $this->user ); + $product = \Automattic\WooCommerce\RestApi\UnitTests\Helpers\ProductHelper::create_variation_product(); + $color_attribute_data = \Automattic\WooCommerce\RestApi\UnitTests\Helpers\ProductHelper::create_attribute( 'color', array( 'red', 'blue', 'yellow' ) ); + $color_attribute = new WC_Product_Attribute(); + $color_attribute->set_id( $color_attribute_data['attribute_id'] ); + $color_attribute->set_name( $color_attribute_data['attribute_taxonomy'] ); + $color_attribute->set_options( $color_attribute_data['term_ids'] ); + $color_attribute->set_position( 1 ); + $color_attribute->set_visible( true ); + $color_attribute->set_variation( true ); + $local_attribute = new WC_Product_Attribute(); + $local_attribute->set_id( 0 ); + $local_attribute->set_name( 'Local' ); + $local_attribute->set_options( array( 'Local1', 'Local2', 'Local3' ) ); + $local_attribute->set_visible( true ); + $local_attribute->set_variation( true ); + $attributes = array(); + $attributes[] = $color_attribute; + $attributes[] = $local_attribute; + $product->set_attributes( $attributes ); + $product->save(); + $request = new WP_REST_Request( 'POST', '/wc/v3/products/' . $product->get_id() . '/variations/generate' ); + $request->set_body_params( array( 'delete' => true ) ); + $response = $this->server->dispatch( $request ); + + // Filter by single global attribute. + $request = new WP_REST_Request( 'GET', '/wc/v3/products/' . $product->get_id() . '/variations' ); + $request->set_query_params( array( 'attributes' => array( + array( 'attribute' => 'pa_color', 'term' => 'red' ) + ) ) ); + $response = $this->server->dispatch( $request ); + $variations = $response->get_data(); + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( 3, count( $variations ) ); + + // Filter by global and local attribute. + $request = new WP_REST_Request( 'GET', '/wc/v3/products/' . $product->get_id() . '/variations' ); + $request->set_query_params( array( 'attributes' => array( + array( 'attribute' => 'pa_color', 'term' => 'red' ), + array( 'attribute' => 'local', 'term' => 'Local1' ), + ) ) ); + $response = $this->server->dispatch( $request ); + $variations = $response->get_data(); + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( 1, count( $variations ) ); + + // Filter local attribute. + $request = new WP_REST_Request( 'GET', '/wc/v3/products/' . $product->get_id() . '/variations' ); + $request->set_query_params( array( 'attributes' => array( + array( 'attribute' => 'local', 'term' => 'Local1' ), + ) ) ); + $response = $this->server->dispatch( $request ); + $variations = $response->get_data(); + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( 3, count( $variations ) ); + } } From 9de59bf01fe8777a3fd985f849fb50e597afafb6 Mon Sep 17 00:00:00 2001 From: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:25:44 -0700 Subject: [PATCH 44/81] Fix Code Sniff Action Change Detection (#40400) * Adjusted PHPCS Workflow Change Detection This _should_ hopefully fix the broken detection of changed files for running the code sniffs. * Change Test * Core Change * Removed Sniff Test --- .github/workflows/pr-code-sniff.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/pr-code-sniff.yml b/.github/workflows/pr-code-sniff.yml index e02c5437a66..ff4dda93bcf 100644 --- a/.github/workflows/pr-code-sniff.yml +++ b/.github/workflows/pr-code-sniff.yml @@ -28,9 +28,7 @@ jobs: id: changed-files uses: tj-actions/changed-files@v32 with: - path: plugins/woocommerce - files: | - **/*.php + files: ./plugins/woocommerce/**/*.php - name: Setup WooCommerce Monorepo if: steps.changed-files.outputs.any_changed == 'true' From f9e05f620f88b8b61041bf575137b66d756b7b16 Mon Sep 17 00:00:00 2001 From: Veljko V Date: Tue, 26 Sep 2023 00:29:45 +0200 Subject: [PATCH 45/81] Add new E2E tests to cover Shopper Mini Cart (#40380) * Add new E2E tests to cover Shopper Mini Cart * Update test not to look for tax label and to check for 2 quantity price --- .../changelog/e2e-add-test-shopper-mini-cart | 4 + .../e2e-pw/tests/shopper/mini-cart.spec.js | 188 ++++++++++++++++++ 2 files changed, 192 insertions(+) create mode 100644 plugins/woocommerce/changelog/e2e-add-test-shopper-mini-cart create mode 100644 plugins/woocommerce/tests/e2e-pw/tests/shopper/mini-cart.spec.js diff --git a/plugins/woocommerce/changelog/e2e-add-test-shopper-mini-cart b/plugins/woocommerce/changelog/e2e-add-test-shopper-mini-cart new file mode 100644 index 00000000000..14cbec609f8 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-add-test-shopper-mini-cart @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Adds tests to cover shopper and mini cart flows diff --git a/plugins/woocommerce/tests/e2e-pw/tests/shopper/mini-cart.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/shopper/mini-cart.spec.js new file mode 100644 index 00000000000..af179bb0d44 --- /dev/null +++ b/plugins/woocommerce/tests/e2e-pw/tests/shopper/mini-cart.spec.js @@ -0,0 +1,188 @@ +const { test, expect, request } = require( '@playwright/test' ); +const { admin } = require( '../../test-data/data' ); +const wcApi = require( '@woocommerce/woocommerce-rest-api' ).default; + +const pageTitle = 'Mini Cart'; +const miniCartButton = '.wc-block-mini-cart__button'; + +const simpleProductName = 'Single Hundred Product'; +const simpleProductDesc = 'Lorem ipsum dolor sit amet.'; +const singleProductPrice = '100.00'; +const singleProductSalePrice = '50.00'; + +let product1Id; + +test.describe( 'Mini Cart block page', () => { + test.use( { storageState: process.env.ADMINSTATE } ); + + test.beforeAll( async ( { baseURL } ) => { + const api = new wcApi( { + url: baseURL, + consumerKey: process.env.CONSUMER_KEY, + consumerSecret: process.env.CONSUMER_SECRET, + version: 'wc/v3', + } ); + // add product + await api + .post( 'products', { + name: simpleProductName, + description: simpleProductDesc, + type: 'simple', + regular_price: singleProductPrice, + sale_price: singleProductSalePrice, + } ) + .then( ( response ) => { + product1Id = response.data.id; + } ); + } ); + + test.afterAll( async ( { baseURL } ) => { + const api = new wcApi( { + url: baseURL, + consumerKey: process.env.CONSUMER_KEY, + consumerSecret: process.env.CONSUMER_SECRET, + version: 'wc/v3', + } ); + await api.post( 'products/batch', { + delete: [ product1Id ], + } ); + const base64auth = Buffer.from( + `${ admin.username }:${ admin.password }` + ).toString( 'base64' ); + const wpApi = await request.newContext( { + baseURL: `${ baseURL }/wp-json/wp/v2/`, + extraHTTPHeaders: { + Authorization: `Basic ${ base64auth }`, + }, + } ); + let response = await wpApi.get( `pages` ); + const allPages = await response.json(); + await allPages.forEach( async ( page ) => { + if ( page.title.rendered === pageTitle ) { + response = await wpApi.delete( `pages/${ page.id }`, { + data: { + force: true, + }, + } ); + } + } ); + } ); + + test( 'can see empty mini cart', async ( { page } ) => { + // create a new page with mini cart block + await page.goto( 'wp-admin/post-new.php?post_type=page' ); + + const welcomeModalVisible = await page + .getByRole( 'heading', { + name: 'Welcome to the block editor', + } ) + .isVisible(); + + if ( welcomeModalVisible ) { + await page.getByRole( 'button', { name: 'Close' } ).click(); + } + + await page + .getByRole( 'textbox', { name: 'Add Title' } ) + .fill( pageTitle ); + + await page.getByRole( 'button', { name: 'Add default block' } ).click(); + + await page + .getByRole( 'document', { + name: 'Empty block; start writing or type forward slash to choose a block', + } ) + .fill( '/mini' ); + await page.keyboard.press( 'Enter' ); + + await page + .getByRole( 'button', { name: 'Publish', exact: true } ) + .click(); + + await page + .getByRole( 'region', { name: 'Editor publish' } ) + .getByRole( 'button', { name: 'Publish', exact: true } ) + .click(); + + await expect( + page.getByText( `${ pageTitle } is now live.` ) + ).toBeVisible(); + + // go to the page to test mini cart + await page.goto( '/mini-cart' ); + await expect( + page.getByRole( 'heading', { name: pageTitle } ) + ).toBeVisible(); + await page.locator( miniCartButton ).click(); + await expect( + page.getByText( 'Your cart is currently empty!' ) + ).toBeVisible(); + await page.getByRole( 'link', { name: 'Start shopping' } ).click(); + await expect( + page.getByRole( 'heading', { name: 'Shop' } ) + ).toBeVisible(); + } ); + + test( 'can proceed to mini cart, observe it and proceed to the checkout', async ( { + page, + } ) => { + const slug = simpleProductName.replace( / /gi, '-' ).toLowerCase(); + // add product to cart + await page.goto( `product/${ slug }` ); + await page.getByRole( 'button', { name: 'Add to cart' } ).click(); + + // go to page with mini cart block and test with the product added + await page.goto( '/mini-cart' ); + await expect( + page.locator( '.wc-block-mini-cart__button' ) + ).toContainText( `$${ singleProductSalePrice }` ); + await page.locator( miniCartButton ).click(); + await expect( + page.getByRole( 'heading', { name: 'Your cart (1 item)' } ) + ).toBeVisible(); + await expect( + page.getByRole( 'link', { name: simpleProductName } ) + ).toBeVisible(); + await expect( + page.locator( '.wc-block-components-product-badge' ) + ).toContainText( `Save $${ singleProductSalePrice }` ); + await expect( page.getByText( simpleProductDesc ) ).toBeVisible(); + await page.getByRole( 'button' ).filter( { hasText: '+' } ).click(); + await expect( + page.getByRole( 'heading', { name: 'Your cart (2 items)' } ) + ).toBeVisible(); + await expect( + page.locator( '.wc-block-mini-cart__button' ) + ).toContainText( `$${ singleProductSalePrice * 2 }` ); + await expect( + page.locator( '.wc-block-components-totals-item__value' ) + ).toContainText( `$${ singleProductSalePrice * 2 }` ); + await page + .getByRole( 'button' ) + .filter( { hasText: 'Remove item' } ) + .click(); + await expect( + page.getByText( 'Your cart is currently empty!' ) + ).toBeVisible(); + + // add product to cart and redirect from mini to regular cart + await page.goto( `product/${ slug }` ); + await page.getByRole( 'button', { name: 'Add to cart' } ).click(); + await page.goto( '/mini-cart' ); + await page.locator( miniCartButton ).click(); + await page.getByRole( 'link', { name: 'View my cart' } ).click(); + await expect( + page.getByRole( 'heading', { name: 'Cart', exact: true } ) + ).toBeVisible(); + await expect( page.locator( miniCartButton ) ).toBeHidden(); + + // go to mini cart and test redirection from mini cart to checkout + await page.goto( '/mini-cart' ); + await page.locator( miniCartButton ).click(); + await page.getByRole( 'link', { name: 'Go to checkout' } ).click(); + await expect( + page.getByRole( 'heading', { name: 'Checkout', exact: true } ) + ).toBeVisible(); + await expect( page.locator( miniCartButton ) ).toBeHidden(); + } ); +} ); From cf58e827b0f1e56993cd690bf5d9178a0902fbee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maikel=20David=20P=C3=A9rez=20G=C3=B3mez?= Date: Mon, 25 Sep 2023 21:40:40 -0400 Subject: [PATCH 46/81] Add missing help texts to sections in the Variations tab (#40415) * Add description to Variation options and Variations sections * Add changelog file --- plugins/woocommerce/changelog/add-40200 | 4 ++++ .../ProductTemplates/SimpleProductTemplate.php | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/add-40200 diff --git a/plugins/woocommerce/changelog/add-40200 b/plugins/woocommerce/changelog/add-40200 new file mode 100644 index 00000000000..1c0a342bc63 --- /dev/null +++ b/plugins/woocommerce/changelog/add-40200 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add description to Variation options and Variations sections diff --git a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php index e9babb61aa4..53229687d39 100644 --- a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php +++ b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php @@ -802,7 +802,8 @@ class SimpleProductTemplate extends AbstractProductFormTemplate implements Produ 'blockName' => 'woocommerce/product-section', 'order' => 10, 'attributes' => [ - 'title' => __( 'Variation options', 'woocommerce' ), + 'title' => __( 'Variation options', 'woocommerce' ), + 'description' => __( 'Add and manage attributes used for product options, such as size and color.', 'woocommerce' ), ], ] ); @@ -818,7 +819,8 @@ class SimpleProductTemplate extends AbstractProductFormTemplate implements Produ 'blockName' => 'woocommerce/product-section', 'order' => 20, 'attributes' => [ - 'title' => __( 'Variations', 'woocommerce' ), + 'title' => __( 'Variations', 'woocommerce' ), + 'description' => __( 'Manage individual product combinations created from options.', 'woocommerce' ), ], ] ); From bf80b7a5341be3adcfeae6322408789b37995f71 Mon Sep 17 00:00:00 2001 From: RJ <27843274+rjchow@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:32:14 +0800 Subject: [PATCH 47/81] add: use ai suggestions to populate color schemes in assembler hub (#40377) --- .../color-palette-variations/index.tsx | 66 ++++++++++++++++--- .../design-with-ai/prompts/colorChoices.ts | 11 ++-- .../add-cys-ai-select-color-palettes | 4 ++ 3 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 plugins/woocommerce/changelog/add-cys-ai-select-color-palettes diff --git a/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/color-palette-variations/index.tsx b/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/color-palette-variations/index.tsx index ff67f4b71b4..4ed2dd07dd3 100644 --- a/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/color-palette-variations/index.tsx +++ b/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/color-palette-variations/index.tsx @@ -1,11 +1,14 @@ // Reference: https://github.com/WordPress/gutenberg/blob/d5ab7238e53d0947d4bb0853464b1c58325b6130/packages/edit-site/src/components/global-styles/style-variations-container.js -/* eslint-disable @woocommerce/dependency-group */ -/* eslint-disable @typescript-eslint/ban-ts-comment */ +// @ts-expect-error -- No types for this exist yet. +// eslint-disable-next-line @woocommerce/dependency-group +import { __experimentalGrid as Grid } from '@wordpress/components'; + /** * External dependencies */ -// @ts-ignore No types for this exist yet. -import { __experimentalGrid as Grid } from '@wordpress/components'; +import { OPTIONS_STORE_NAME } from '@woocommerce/data'; +import { useSelect } from '@wordpress/data'; +import { useState, useEffect } from '@wordpress/element'; /** * Internal dependencies @@ -13,20 +16,63 @@ import { __experimentalGrid as Grid } from '@wordpress/components'; import { COLOR_PALETTES } from './constants'; import { VariationContainer } from '../variation-container'; import { ColorPaletteVariationPreview } from './preview'; +import { ColorPaletteResponse } from '~/customize-store/design-with-ai/types'; export const ColorPalette = () => { + const { aiSuggestions, isLoading } = useSelect( ( select ) => { + const { getOption, hasFinishedResolution } = + select( OPTIONS_STORE_NAME ); + return { + aiSuggestions: getOption( + 'woocommerce_customize_store_ai_suggestions' + ) as { defaultColorPalette: ColorPaletteResponse }, + isLoading: ! hasFinishedResolution( 'getOption', [ + 'woocommerce_customize_store_ai_suggestions', + ] ), + }; + } ); + + const [ colorPalettes, setColorPalettes ] = useState( + [] as typeof COLOR_PALETTES + ); + + useEffect( () => { + if ( ! isLoading ) { + if ( + aiSuggestions?.defaultColorPalette?.bestColors?.length > 0 && + aiSuggestions?.defaultColorPalette?.default + ) { + setColorPalettes( + COLOR_PALETTES.filter( + ( palette ) => + aiSuggestions.defaultColorPalette?.bestColors.includes( + palette.title + ) || + aiSuggestions.defaultColorPalette.default === + palette.title + ) + ); + } else { + // seems that aiSuggestions weren't correctly populated, we'll just use the first 9 + setColorPalettes( COLOR_PALETTES.slice( 0, 9 ) ); + } + } + }, [ isLoading, aiSuggestions?.defaultColorPalette ] ); + return ( - { /* TODO: Show 9 colors based on the AI recommendation */ } - { COLOR_PALETTES.slice( 0, 9 ).map( ( variation, index ) => ( - - - - ) ) } + { ! isLoading && + colorPalettes?.map( ( variation, index ) => ( + + + + ) ) } ); }; diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/colorChoices.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/colorChoices.ts index 2eaba5f279b..efae680778a 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/colorChoices.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/prompts/colorChoices.ts @@ -231,16 +231,17 @@ export const defaultColorPalette = { queryId: 'default_color_palette', // make sure version is updated every time the prompt is changed - version: '2023-09-18', + version: '2023-09-22', prompt: ( businessDescription: string, look: string, tone: string ) => { return ` - You are a WordPress theme expert. Analyse the following store description, merchant's chosen look and tone, and determine the most appropriate color scheme, along with 8 best alternatives. - Respond in the form: "{ default: "palette name", bestColors: [ "palette name 1", "palette name 2", "palette name 3", "palette name 4", "palette name 5", "palette name 6", "palette name 7", "palette name 8" ] }" - + You are a WordPress theme expert designing a WooCommerce site. Analyse the following store description, merchant's chosen look and tone, and determine the most appropriate color scheme, along with 8 best alternatives. + Do not use any palette names that are not part of the color choices provided below. + Respond in the form: "{ default: "palette name", bestColors: [ "palette name 1", "palette name 2", "palette name 3", "palette name 4", "palette name 5", "palette name 6", "palette name 7", "palette name 8" ] }" + Chosen look and tone: ${ look } look, ${ tone } tone. Business description: ${ businessDescription } - Colors to choose from: + Colors schemes to choose from: ${ JSON.stringify( colorChoices ) } `; }, diff --git a/plugins/woocommerce/changelog/add-cys-ai-select-color-palettes b/plugins/woocommerce/changelog/add-cys-ai-select-color-palettes new file mode 100644 index 00000000000..c50bde02695 --- /dev/null +++ b/plugins/woocommerce/changelog/add-cys-ai-select-color-palettes @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Use CYS AI suggestions to populate the color schemes in assembler hub color palette selection From cd8398bce978e80b0d14043e6e720f167b19483e Mon Sep 17 00:00:00 2001 From: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com> Date: Tue, 26 Sep 2023 00:58:31 -0700 Subject: [PATCH 48/81] Revert "Fix Code Sniff Action Change Detection" (#40429) Revert "Fix Code Sniff Action Change Detection (#40400)" This reverts commit 9de59bf01fe8777a3fd985f849fb50e597afafb6. --- .github/workflows/pr-code-sniff.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr-code-sniff.yml b/.github/workflows/pr-code-sniff.yml index ff4dda93bcf..e02c5437a66 100644 --- a/.github/workflows/pr-code-sniff.yml +++ b/.github/workflows/pr-code-sniff.yml @@ -28,7 +28,9 @@ jobs: id: changed-files uses: tj-actions/changed-files@v32 with: - files: ./plugins/woocommerce/**/*.php + path: plugins/woocommerce + files: | + **/*.php - name: Setup WooCommerce Monorepo if: steps.changed-files.outputs.any_changed == 'true' From 94660e04769571b1e014dad12018b23762dc5be2 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 26 Sep 2023 20:34:47 +0800 Subject: [PATCH 49/81] [Customize Your Store] Fix AI selected verticals not display (#40372) * Handle store patterns update API request properly * Full redirect to Assembler hub after ai loading * Add changefile(s) from automation for the following project(s): woocommerce --------- Co-authored-by: github-actions --- .../customize-store/design-with-ai/actions.ts | 15 +++++++++- .../design-with-ai/services.ts | 30 +++++++++++-------- .../design-with-ai/state-machine.tsx | 5 ++-- .../fix-ai-generate-images-not-display | 4 +++ 4 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-ai-generate-images-not-display diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts index b317557fe5e..7693fda32df 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts @@ -2,7 +2,11 @@ * External dependencies */ import { assign, spawn } from 'xstate'; -import { getQuery, updateQueryString } from '@woocommerce/navigation'; +import { + getQuery, + updateQueryString, + getNewPath, +} from '@woocommerce/navigation'; import { recordEvent } from '@woocommerce/tracks'; import { dispatch } from '@wordpress/data'; import { OPTIONS_STORE_NAME } from '@woocommerce/data'; @@ -253,6 +257,14 @@ const recordTracksStepCompleted = ( } ); }; +const redirectToAssemblerHub = () => { + window.location.href = getNewPath( + {}, + '/customize-store/assembler-hub', + {} + ); +}; + export const actions = { assignBusinessInfoDescription, assignLookAndFeel, @@ -269,4 +281,5 @@ export const actions = { recordTracksStepClosed, recordTracksStepCompleted, spawnSaveDescriptionToOption, + redirectToAssemblerHub, }; diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts index 706a2f48a29..6224881e7d2 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts @@ -13,7 +13,6 @@ import { dispatch, resolveSelect } from '@wordpress/data'; import { store as coreStore } from '@wordpress/core-data'; // @ts-ignore No types for this exist yet. import { mergeBaseAndUserConfigs } from '@wordpress/edit-site/build-module/components/global-styles/global-styles-provider'; - /** * Internal dependencies */ @@ -216,7 +215,10 @@ export const updateStorePatterns = async ( woocommerce_blocks_allow_ai_connection: true, } ); - await apiFetch( { + const response: { + ai_content_generated: boolean; + additional_errors?: unknown[]; + } = await apiFetch( { path: '/wc/store/patterns', method: 'POST', data: { @@ -224,6 +226,14 @@ export const updateStorePatterns = async ( context.businessInfoDescription.descriptionText, }, } ); + + if ( ! response.ai_content_generated ) { + throw new Error( + 'AI content not generated: ' + response.additional_errors + ? JSON.stringify( response.additional_errors ) + : '' + ); + } } catch ( error ) { recordEvent( 'customize_your_store_update_store_pattern_api_error', { error: error instanceof Error ? error.message : 'unknown', @@ -281,6 +291,12 @@ const updateTemplate = async ( { }: { homepageTemplateId: keyof typeof HOMEPAGE_TEMPLATES; } ) => { + // @ts-ignore No types for this exist yet. + const { invalidateResolutionForStoreSelector } = dispatch( coreStore ); + + // Ensure that the patterns are up to date because we populate images and content in previous step. + invalidateResolutionForStoreSelector( 'getBlockPatterns' ); + const patterns = ( await resolveSelect( coreStore // @ts-ignore No types for this exist yet. @@ -353,16 +369,6 @@ export const assembleSite = async ( error: error instanceof Error ? error.message : 'unknown', } ); } - - // @ts-ignore No types for this exist yet. - const { invalidateResolutionForStoreSelector } = dispatch( coreStore ); - - // Invalid the selectors so that the new template/style are used in assembler hub. - invalidateResolutionForStoreSelector( 'getEntityRecord' ); - invalidateResolutionForStoreSelector( - '__experimentalGetCurrentGlobalStylesId' - ); - invalidateResolutionForStoreSelector( '__experimentalGetTemplateForLink' ); }; const saveAiResponseToOption = ( context: designWithAiStateMachineContext ) => { diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx b/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx index 4a1f319570b..cd51285ad25 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx @@ -445,9 +445,8 @@ export const designWithAiStateMachineDefinition = createMachine( }, onDone: { actions: [ - sendParent( () => ( { - type: 'THEME_SUGGESTED', - } ) ), + // Full redirect to the Assembler Hub to ensure the user see the new generated content. + 'redirectToAssemblerHub', ], }, }, diff --git a/plugins/woocommerce/changelog/fix-ai-generate-images-not-display b/plugins/woocommerce/changelog/fix-ai-generate-images-not-display new file mode 100644 index 00000000000..f6904a63b91 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-ai-generate-images-not-display @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +CYS: Fix AI selected verticals not display From a2efd31b6fdc0f67908a349fe46040a0ce327df8 Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Tue, 26 Sep 2023 13:17:21 -0300 Subject: [PATCH 50/81] Open variation preview in a new tab (#40414) * Open variation preview in new tab * Add changelog * Move changelog * Add noreferrer --- .../changelog/fix-40173_open_variation_preview_in_new_tab | 4 ++++ .../variation-actions-menu/variation-actions-menu.tsx | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 packages/js/product-editor/changelog/fix-40173_open_variation_preview_in_new_tab diff --git a/packages/js/product-editor/changelog/fix-40173_open_variation_preview_in_new_tab b/packages/js/product-editor/changelog/fix-40173_open_variation_preview_in_new_tab new file mode 100644 index 00000000000..bd3363c949a --- /dev/null +++ b/packages/js/product-editor/changelog/fix-40173_open_variation_preview_in_new_tab @@ -0,0 +1,4 @@ +Significance: minor +Type: fix + +Open variation preview in a new tab #40414 diff --git a/packages/js/product-editor/src/components/variations-table/variation-actions-menu/variation-actions-menu.tsx b/packages/js/product-editor/src/components/variations-table/variation-actions-menu/variation-actions-menu.tsx index ec240a19855..fff3ed00a8e 100644 --- a/packages/js/product-editor/src/components/variations-table/variation-actions-menu/variation-actions-menu.tsx +++ b/packages/js/product-editor/src/components/variations-table/variation-actions-menu/variation-actions-menu.tsx @@ -45,6 +45,8 @@ export function VariationActionsMenu( { > { recordEvent( 'product_variations_preview', { source: TRACKS_SOURCE, From 58740c8ac78401b4d1d23e456ec418007223e16f Mon Sep 17 00:00:00 2001 From: jonathansadowski Date: Wed, 27 Sep 2023 00:53:16 +0700 Subject: [PATCH 51/81] Update stable tag to 8.1.1 (#40442) woorelease: Update stable tag to 8.1.1 --- plugins/woocommerce/readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/readme.txt b/plugins/woocommerce/readme.txt index c8575557fcf..e43a3617d8d 100644 --- a/plugins/woocommerce/readme.txt +++ b/plugins/woocommerce/readme.txt @@ -4,7 +4,7 @@ Tags: online store, ecommerce, shop, shopping cart, sell online, storefront, che Requires at least: 6.2 Tested up to: 6.3 Requires PHP: 7.4 -Stable tag: 8.1.0 +Stable tag: 8.1.1 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html From 7de08e175176e660ed98ac52850414dbd78c9c15 Mon Sep 17 00:00:00 2001 From: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:40:38 -0700 Subject: [PATCH 52/81] Fixed PHPCS Base Comparison --- .github/workflows/pr-code-sniff.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/pr-code-sniff.yml b/.github/workflows/pr-code-sniff.yml index e02c5437a66..30c690db906 100644 --- a/.github/workflows/pr-code-sniff.yml +++ b/.github/workflows/pr-code-sniff.yml @@ -26,11 +26,10 @@ jobs: - name: Get Changed Files id: changed-files - uses: tj-actions/changed-files@v32 + uses: tj-actions/changed-files@v39 with: path: plugins/woocommerce - files: | - **/*.php + files: "**/*.php" - name: Setup WooCommerce Monorepo if: steps.changed-files.outputs.any_changed == 'true' @@ -49,7 +48,4 @@ jobs: - name: Run PHPCS if: steps.changed-files.outputs.any_changed == 'true' working-directory: plugins/woocommerce - run: | - HEAD_REF=$(git rev-parse HEAD) - git checkout $HEAD_REF - phpcs-changed -s --git --git-base ${{ github.base_ref }} ${{ steps.changed-files.outputs.all_changed_files }} + run: phpcs-changed -s --git --git-base ${{ github.event.pull_request.base.sha }} ${{ steps.changed-files.outputs.all_changed_files }} From 7ff030c2e74858c7edc0aacb15d1f784d7a97b7b Mon Sep 17 00:00:00 2001 From: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:41:10 -0700 Subject: [PATCH 53/81] Test Error --- plugins/woocommerce/src/Autoloader.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Autoloader.php b/plugins/woocommerce/src/Autoloader.php index 53f802e31fb..f7721f58991 100644 --- a/plugins/woocommerce/src/Autoloader.php +++ b/plugins/woocommerce/src/Autoloader.php @@ -23,11 +23,13 @@ class Autoloader { * Require the autoloader and return the result. * * If the autoloader is not present, let's log the failure and display a nice admin notice. + * + * // Nonsense test * * @return boolean */ public static function init() { - $autoloader = dirname( __DIR__ ) . '/vendor/autoload_packages.php'; + $autoloader = dirname(__DIR__) . '/vendor/autoload_packages.php'; if ( ! is_readable( $autoloader ) ) { self::missing_autoloader(); From 47a5a248885ca5dcc999c78acac6c653795f86e3 Mon Sep 17 00:00:00 2001 From: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:47:15 -0700 Subject: [PATCH 54/81] Test Unrelated --- plugins/woo-ai/includes/class-woo-ai-settings.php | 2 ++ plugins/woocommerce/src/Autoloader.php | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/woo-ai/includes/class-woo-ai-settings.php b/plugins/woo-ai/includes/class-woo-ai-settings.php index c914f7c5ae1..049c06cb62c 100644 --- a/plugins/woo-ai/includes/class-woo-ai-settings.php +++ b/plugins/woo-ai/includes/class-woo-ai-settings.php @@ -16,6 +16,8 @@ class Woo_AI_Settings { /** * Plugin instance. + * + * // Unrelated Changede * * @var Woo_AI_Settings */ diff --git a/plugins/woocommerce/src/Autoloader.php b/plugins/woocommerce/src/Autoloader.php index f7721f58991..53f802e31fb 100644 --- a/plugins/woocommerce/src/Autoloader.php +++ b/plugins/woocommerce/src/Autoloader.php @@ -23,13 +23,11 @@ class Autoloader { * Require the autoloader and return the result. * * If the autoloader is not present, let's log the failure and display a nice admin notice. - * - * // Nonsense test * * @return boolean */ public static function init() { - $autoloader = dirname(__DIR__) . '/vendor/autoload_packages.php'; + $autoloader = dirname( __DIR__ ) . '/vendor/autoload_packages.php'; if ( ! is_readable( $autoloader ) ) { self::missing_autoloader(); From c7bc017faa4ef66cee6fc24392c389e2abdc603c Mon Sep 17 00:00:00 2001 From: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:50:51 -0700 Subject: [PATCH 55/81] Test No Change --- plugins/woo-ai/includes/class-woo-ai-settings.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/woo-ai/includes/class-woo-ai-settings.php b/plugins/woo-ai/includes/class-woo-ai-settings.php index 049c06cb62c..c914f7c5ae1 100644 --- a/plugins/woo-ai/includes/class-woo-ai-settings.php +++ b/plugins/woo-ai/includes/class-woo-ai-settings.php @@ -16,8 +16,6 @@ class Woo_AI_Settings { /** * Plugin instance. - * - * // Unrelated Changede * * @var Woo_AI_Settings */ From 5fa98ace1a3c10d1ce8c1f80fa492559adcbc1e2 Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Tue, 26 Sep 2023 16:08:57 -0300 Subject: [PATCH 56/81] Fix attribute list styles (#40378) * Fix attribute list style * Add changelog * Move changelog * Fix attributes style --- .../changelog/fix-39224_styles_attribute_list | 4 ++++ .../js/product-editor/src/blocks/attributes/editor.scss | 7 ++++++- .../src/blocks/variation-options/editor.scss | 7 ++++++- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 packages/js/product-editor/changelog/fix-39224_styles_attribute_list diff --git a/packages/js/product-editor/changelog/fix-39224_styles_attribute_list b/packages/js/product-editor/changelog/fix-39224_styles_attribute_list new file mode 100644 index 00000000000..e612b4413a6 --- /dev/null +++ b/packages/js/product-editor/changelog/fix-39224_styles_attribute_list @@ -0,0 +1,4 @@ +Significance: minor +Type: fix + +Fix styles for attribute list diff --git a/packages/js/product-editor/src/blocks/attributes/editor.scss b/packages/js/product-editor/src/blocks/attributes/editor.scss index 199ada5b2d3..fe022fb79ba 100644 --- a/packages/js/product-editor/src/blocks/attributes/editor.scss +++ b/packages/js/product-editor/src/blocks/attributes/editor.scss @@ -7,7 +7,7 @@ background: none; border: none; border-bottom: 1px solid $gray-200; - padding-left: 0; + padding: 0; grid-template-columns: 26% auto 90px; } @@ -15,4 +15,9 @@ display: none; } + .components-button.has-icon { + svg { + fill: $gray-700; + } + } } diff --git a/packages/js/product-editor/src/blocks/variation-options/editor.scss b/packages/js/product-editor/src/blocks/variation-options/editor.scss index 2f8dee6f9a8..6a95b640805 100644 --- a/packages/js/product-editor/src/blocks/variation-options/editor.scss +++ b/packages/js/product-editor/src/blocks/variation-options/editor.scss @@ -10,11 +10,16 @@ .woocommerce-list-item { background: none; border: none; - padding-left: 0; + padding: 0; grid-template-columns: 26% auto 90px; } .woocommerce-sortable__handle { display: none; } + .components-button.has-icon { + svg { + fill: $gray-700; + } + } } From 4ab577b69185f3e0447ae6899148c3697c41b801 Mon Sep 17 00:00:00 2001 From: "daniyal.ahmad1992@gmail.com" Date: Sat, 15 Oct 2022 23:11:21 +0500 Subject: [PATCH 57/81] Fixes typo mistake in coupon error message Closes #34889 --- plugins/woocommerce/includes/class-wc-coupon.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/class-wc-coupon.php b/plugins/woocommerce/includes/class-wc-coupon.php index 48d8f75337f..e57093bd032 100644 --- a/plugins/woocommerce/includes/class-wc-coupon.php +++ b/plugins/woocommerce/includes/class-wc-coupon.php @@ -1022,7 +1022,7 @@ class WC_Coupon extends WC_Legacy_Coupon { case self::E_WC_COUPON_USAGE_LIMIT_COUPON_STUCK: if ( is_user_logged_in() && wc_get_page_id( 'myaccount' ) > 0 ) { /* translators: %s: myaccount page link. */ - $err = sprintf( __( 'Coupon usage limit has been reached. If you were using this coupon just now but order was not complete, you can retry or cancel the order by going to the my account page.', 'woocommerce' ), wc_get_endpoint_url( 'orders', '', wc_get_page_permalink( 'myaccount' ) ) ); + $err = sprintf( __( 'Coupon usage limit has been reached. If you were using this coupon just now but your order was not complete, you can retry or cancel the order by going to the my account page.', 'woocommerce' ), wc_get_endpoint_url( 'orders', '', wc_get_page_permalink( 'myaccount' ) ) ); } else { $err = $this->get_coupon_error( self::E_WC_COUPON_USAGE_LIMIT_REACHED ); } From 15f5d51e4d574d7cbd04323e25003bb18b0af3b4 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Mon, 25 Sep 2023 22:29:29 -0700 Subject: [PATCH 58/81] Changelog. --- plugins/woocommerce/changelog/fix-coupon-error-notice-text | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-coupon-error-notice-text diff --git a/plugins/woocommerce/changelog/fix-coupon-error-notice-text b/plugins/woocommerce/changelog/fix-coupon-error-notice-text new file mode 100644 index 00000000000..8102b91d0c2 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-coupon-error-notice-text @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Fixes grammar in coupon error message. From b6674ef0c13c2112754608d9bf3bee4e02b57b65 Mon Sep 17 00:00:00 2001 From: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com> Date: Tue, 26 Sep 2023 14:26:12 -0700 Subject: [PATCH 59/81] Fixed PR Changelog Generation Workflow (#40410) This adds support for using double-quotes in the description of the PR. --- tools/monorepo-utils/src/changefile/index.ts | 96 ++++++++++++------- .../src/changefile/lib/__tests__/github.ts | 47 +++++++++ .../src/changefile/lib/__tests__/projects.ts | 26 ++--- .../src/changefile/lib/github.ts | 14 ++- .../src/changefile/lib/projects.ts | 19 ++-- 5 files changed, 145 insertions(+), 57 deletions(-) diff --git a/tools/monorepo-utils/src/changefile/index.ts b/tools/monorepo-utils/src/changefile/index.ts index a150dced310..9b53fd763ce 100644 --- a/tools/monorepo-utils/src/changefile/index.ts +++ b/tools/monorepo-utils/src/changefile/index.ts @@ -2,10 +2,9 @@ * External dependencies */ import { Command } from '@commander-js/extra-typings'; -import { execSync } from 'child_process'; import simpleGit from 'simple-git'; import nodePath from 'path'; -import { existsSync } from 'fs'; +import { existsSync, readFileSync, rmSync, writeFileSync } from 'fs'; /** * Internal dependencies @@ -118,60 +117,85 @@ const program = new Command( 'changefile' ) 'Removing existing changelog files in case a change is reverted and the entry is no longer needed' ); allProjectPaths.forEach( ( projectPath ) => { - const path = nodePath.join( + const composerFilePath = nodePath.join( tmpRepoPath, projectPath, - 'changelog', + 'composer.json' + ); + if ( ! existsSync( composerFilePath ) ) { + return; + } + + // Figure out where the changelog files belong for this project. + const composerFile = JSON.parse( + readFileSync( composerFilePath, { + encoding: 'utf-8', + } ) + ); + const changelogFilePath = nodePath.join( + tmpRepoPath, + projectPath, + composerFile.extra?.changelogger[ 'changes-dir' ] ?? + 'changelog', fileName ); - if ( existsSync( path ) ) { - Logger.notice( - `Remove existing changelog file ${ path }` - ); - - execSync( `rm ${ path }`, { - cwd: tmpRepoPath, - stdio: 'inherit', - } ); + if ( ! existsSync( changelogFilePath ) ) { + return; } + + Logger.notice( + `Remove existing changelog file ${ changelogFilePath }` + ); + + rmSync( changelogFilePath ); } ); - if ( touchedProjectsRequiringChangelog.length === 0 ) { + if ( ! touchedProjectsRequiringChangelog ) { Logger.notice( 'No projects require a changelog' ); process.exit( 0 ); } - // When a devRepoPath is provided, assume that the dependencies are already installed. - if ( ! devRepoPath ) { - Logger.notice( - `Installing dependencies in ${ tmpRepoPath }` + for ( const project in touchedProjectsRequiringChangelog ) { + const projectPath = nodePath.join( + tmpRepoPath, + touchedProjectsRequiringChangelog[ project ] ); - execSync( 'pnpm install', { - cwd: tmpRepoPath, - stdio: 'inherit', - } ); - } - touchedProjectsRequiringChangelog.forEach( ( project ) => { Logger.notice( - `Running changelog command for ${ project }` + `Generating changefile for ${ project } (${ projectPath }))` ); - const messageExpression = message - ? `-e "${ message }"` - : '--entry=""'; - const commentExpression = comment - ? `-c "${ comment }"` - : ''; - const cmd = `pnpm --filter=${ project } run changelog add -f ${ fileName } -s ${ significance } -t ${ type } ${ messageExpression } ${ commentExpression } -n`; - execSync( cmd, { cwd: tmpRepoPath, stdio: 'inherit' } ); - } ); + + // Figure out where the changelog file belongs for this project. + const composerFile = JSON.parse( + readFileSync( + nodePath.join( projectPath, 'composer.json' ), + { encoding: 'utf-8' } + ) + ); + const changelogFilePath = nodePath.join( + projectPath, + composerFile.extra?.changelogger[ 'changes-dir' ] ?? + 'changelog', + fileName + ); + + // Write the changefile using the correct format. + let fileContent = `Significance: ${ significance }\n`; + fileContent += `Type: ${ type }\n`; + if ( comment ) { + fileContent += `Comment: ${ comment }\n`; + } + fileContent += `\n${ message }`; + writeFileSync( changelogFilePath, fileContent ); + } } catch ( e ) { Logger.error( e ); } - const touchedProjectsString = - touchedProjectsRequiringChangelog.join( ', ' ); + const touchedProjectsString = Object.keys( + touchedProjectsRequiringChangelog + ).join( ', ' ); Logger.notice( `Changelogs created for ${ touchedProjectsString }` diff --git a/tools/monorepo-utils/src/changefile/lib/__tests__/github.ts b/tools/monorepo-utils/src/changefile/lib/__tests__/github.ts index 0f031f794c3..16fe75f27ba 100644 --- a/tools/monorepo-utils/src/changefile/lib/__tests__/github.ts +++ b/tools/monorepo-utils/src/changefile/lib/__tests__/github.ts @@ -351,6 +351,53 @@ describe( 'getChangelogDetails', () => { expect( details.comment ).toEqual( 'This is a very useful comment.' ); } ); + it( 'should remove newlines from message and comment', () => { + const body = + '### Changelog entry\r\n' + + '\r\n' + + '\r\n' + + '\r\n' + + '- [x] Automatically create a changelog entry from the details below.\r\n' + + '\r\n' + + '
\r\n' + + '\r\n' + + '#### Significance\r\n' + + '\r\n' + + '- [x] Patch\r\n' + + '- [ ] Minor\r\n' + + '- [ ] Major\r\n' + + '\r\n' + + '#### Type\r\n' + + '\r\n' + + '- [x] Fix - Fixes an existing bug\r\n' + + '- [ ] Add - Adds functionality\r\n' + + '- [ ] Update - Update existing functionality\r\n' + + '- [ ] Dev - Development related task\r\n' + + '- [ ] Tweak - A minor adjustment to the codebase\r\n' + + '- [ ] Performance - Address performance issues\r\n' + + '- [ ] Enhancement\r\n' + + '\r\n' + + '#### Message ' + + '\r\n' + + 'This is a very useful fix.\r\n' + + 'I promise!\r\n' + + '\r\n' + + '#### Comment ' + + `\r\n` + + 'This is a very useful comment.\r\n' + + "I don't promise!\r\n" + + '\r\n' + + '
'; + + const details = getChangelogDetails( body ); + expect( details.message ).toEqual( + 'This is a very useful fix. I promise!' + ); + expect( details.comment ).toEqual( + "This is a very useful comment. I don't promise!" + ); + } ); + it( 'should return a comment even when it is entered with a significance other than patch', () => { const body = '### Changelog entry\r\n' + diff --git a/tools/monorepo-utils/src/changefile/lib/__tests__/projects.ts b/tools/monorepo-utils/src/changefile/lib/__tests__/projects.ts index 52d1064a629..932e3d698ad 100644 --- a/tools/monorepo-utils/src/changefile/lib/__tests__/projects.ts +++ b/tools/monorepo-utils/src/changefile/lib/__tests__/projects.ts @@ -93,11 +93,11 @@ describe( 'Changelog project functions', () => { changeLoggerProjects ); - expect( intersectedProjects ).toHaveLength( 2 ); - expect( intersectedProjects ).toContain( - 'folder-with-lots-of-projects/project-b' - ); - expect( intersectedProjects ).toContain( 'projects/very-cool-project' ); + expect( intersectedProjects ).toMatchObject( { + 'folder-with-lots-of-projects/project-b': + 'folder-with-lots-of-projects/project-b', + 'projects/very-cool-project': 'projects/very-cool-project', + } ); } ); it( 'getTouchedChangeloggerProjectsPathsMappedToProjects should map plugins and js packages to the correct name', async () => { @@ -119,11 +119,12 @@ describe( 'Changelog project functions', () => { changeLoggerProjects ); - expect( intersectedProjects ).toHaveLength( 4 ); - expect( intersectedProjects ).toContain( 'woocommerce' ); - expect( intersectedProjects ).toContain( 'beta-tester' ); - expect( intersectedProjects ).toContain( '@woocommerce/components' ); - expect( intersectedProjects ).toContain( '@woocommerce/data' ); + expect( intersectedProjects ).toMatchObject( { + woocommerce: 'plugins/woocommerce', + 'beta-tester': 'plugins/beta-tester', + '@woocommerce/components': 'packages/js/components', + '@woocommerce/data': 'packages/js/data', + } ); } ); it( 'getTouchedChangeloggerProjectsPathsMappedToProjects should handle woocommerce-admin projects mapped to woocommerce core', async () => { @@ -138,7 +139,8 @@ describe( 'Changelog project functions', () => { changeLoggerProjects ); - expect( intersectedProjects ).toHaveLength( 1 ); - expect( intersectedProjects ).toContain( 'woocommerce' ); + expect( intersectedProjects ).toMatchObject( { + woocommerce: 'plugins/woocommerce', + } ); } ); } ); diff --git a/tools/monorepo-utils/src/changefile/lib/github.ts b/tools/monorepo-utils/src/changefile/lib/github.ts index 5757393f33b..c42943bcee9 100644 --- a/tools/monorepo-utils/src/changefile/lib/github.ts +++ b/tools/monorepo-utils/src/changefile/lib/github.ts @@ -120,7 +120,12 @@ export const getChangelogMessage = ( body: string ) => { Logger.error( 'No changelog message found' ); } - return match[ 3 ].trim(); + let message = match[ 3 ].trim(); + + // Newlines break the formatting of the changelog, so we replace them with spaces. + message = message.replace( /\r\n|\n/g, ' ' ); + + return message; }; /** @@ -133,7 +138,12 @@ export const getChangelogComment = ( body: string ) => { const commentRegex = /#### Comment ?()?(.*)<\/details>/gms; const match = commentRegex.exec( body ); - return match ? match[ 3 ].trim() : ''; + let comment = match ? match[ 3 ].trim() : ''; + + // Newlines break the formatting of the changelog, so we replace them with spaces. + comment = comment.replace( /\r\n|\n/g, ' ' ); + + return comment; }; /** diff --git a/tools/monorepo-utils/src/changefile/lib/projects.ts b/tools/monorepo-utils/src/changefile/lib/projects.ts index cf194060151..845f495a54c 100644 --- a/tools/monorepo-utils/src/changefile/lib/projects.ts +++ b/tools/monorepo-utils/src/changefile/lib/projects.ts @@ -120,7 +120,7 @@ export const getTouchedFilePaths = async ( * * @param {Array} touchedFiles List of files changed in a PR. touchedFiles * @param {Array} changeloggerProjects List of projects that have Jetpack changelogger enabled. - * @return {Array} List of projects that have Jetpack changelogger enabled and have files changed in a PR. + * @return {Object.} Paths to projects that have files changed in a PR keyed by the project name. */ export const getTouchedChangeloggerProjectsPathsMappedToProjects = ( touchedFiles: Array< string >, @@ -142,14 +142,19 @@ export const getTouchedChangeloggerProjectsPathsMappedToProjects = ( ); } ); - return touchedProjectPathsRequiringChangelog.map( ( project ) => { + + const projectPaths = {}; + for ( const projectPath of touchedProjectPathsRequiringChangelog ) { + let project = projectPath; if ( project.includes( 'plugins/' ) ) { - return project.replace( 'plugins/', '' ); + project = project.replace( 'plugins/', '' ); } else if ( project.includes( 'packages/js/' ) ) { - return project.replace( 'packages/js/', '@woocommerce/' ); + project = project.replace( 'packages/js/', '@woocommerce/' ); } - return project; - } ); + + projectPaths[ project ] = projectPath; + } + return projectPaths; }; /** @@ -175,7 +180,7 @@ export const getAllProjectPaths = async ( tmpRepoPath: string ) => { * @param {string} fileName changelog file name * @param {string} baseOwner PR base owner * @param {string} baseName PR base name - * @return {Array} List of projects that have Jetpack changelogger enabled and have files changed in a PR. + * @return {Object.} Paths to projects that have files changed in a PR keyed by the project name. */ export const getTouchedProjectsRequiringChangelog = async ( tmpRepoPath: string, From 7b9abcc79acf8cbcdce6c00a6d34d21c77d8a784 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 27 Sep 2023 16:14:13 +1300 Subject: [PATCH 60/81] TreeSelectControl: Handle ROOT selection with individuallySelectParent (#40422) * Handle selecting ROOT and includeParent * changelog --- ...control-individuallySelectParent-includeParent | 5 +++++ .../components/src/tree-select-control/index.js | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 packages/js/components/changelog/fix-tree-select-control-individuallySelectParent-includeParent diff --git a/packages/js/components/changelog/fix-tree-select-control-individuallySelectParent-includeParent b/packages/js/components/changelog/fix-tree-select-control-individuallySelectParent-includeParent new file mode 100644 index 00000000000..ffc0955275b --- /dev/null +++ b/packages/js/components/changelog/fix-tree-select-control-individuallySelectParent-includeParent @@ -0,0 +1,5 @@ +Significance: patch +Type: fix +Comment: Fixes and earlier unreleaed change, not changelog required + + diff --git a/packages/js/components/src/tree-select-control/index.js b/packages/js/components/src/tree-select-control/index.js index 8fb65589454..fc1a3a9167b 100644 --- a/packages/js/components/src/tree-select-control/index.js +++ b/packages/js/components/src/tree-select-control/index.js @@ -235,8 +235,8 @@ const TreeSelectControl = ( { */ get() { if ( - ( includeParent || individuallySelectParent ) && - this.value !== ROOT_VALUE + ( includeParent && this.value !== ROOT_VALUE ) || + individuallySelectParent ) { return cache.selectedValues.includes( this.value ); } @@ -434,7 +434,16 @@ const TreeSelectControl = ( { : option.leaves .filter( ( opt ) => opt.checked !== checked ) .map( ( opt ) => opt.value ); - if ( includeParent && option.value !== ROOT_VALUE ) { + /** + * If includeParent is true, we need to add the parent value to the array of + * changed values. However, if for some reason includeParent AND individuallySelectParent + * are both set to true, we want to avoid duplicating the parent value in the array. + */ + if ( + includeParent && + ! individuallySelectParent && + option.value !== ROOT_VALUE + ) { changedValues.push( option.value ); } if ( checked ) { From c752c60fd40fdc976381fcf9c8b248f2e3666999 Mon Sep 17 00:00:00 2001 From: Corey McKrill <916023+coreymckrill@users.noreply.github.com> Date: Wed, 27 Sep 2023 01:14:23 -0700 Subject: [PATCH 61/81] HPOS: Add background sync (#39952) * HPOS: Add a recurring event to check for unsynced orders Adds an event that will get scheduled when HPOS data sync gets enabled. The event will run every 6 hours and check for unsynced orders. If it finds any, it will queue up the data syncing batch processor. Fixes #39626 * Add button to sync orders immediately * Add changefile(s) from automation for the following project(s): woocommerce * Wrap AS function calls to avoid errors in unit tests * Use WC_Queue methods instead of AS functions * Add a filter to customize the sync check time interval * Ensure retrieved pending sync count is not a cached value * Change sync button style to link * Formatting fixes * Fix unit test * Add BatchProcessingController dependency to DataSynchronizer * Add background sync functionality to DataSynchronizer * Tweaks to watchdog scheduling in batch processor * Adds a filter to modify the amount of time the watchdog schedule gets delayed when calling the scheduler using `$with_delay` * Adds a check to ensure the scheduler doesn't overwrite an existing scheduled event. This is because the scheduler was getting called multiple times in a request, first without `$with_delay` (so the event would run right away) and then again with `$with_delay`, so that the event would then be delayed by an hour. The result was that the event was always scheduled for an hour later, even when we want it to run right away. * Improve query arg for running sync via UI * Remove sync check from COTController, add message about background sync * Abstract the removal of background sync events * Remove accidental test code * Add changefile(s) from automation for the following project(s): woocommerce * Ensure bg sync event is not scheduled when in continuous mode * Add missing @since comments on new filter hooks * Add caching to check for scheduled bg sync events * Use constants for bg sync modes * Add unit tests * Switch from init hook to shutdown * Switch bg sync settings from filters to options * Update unit tests * phpcs fix * Tweak "Background sync is enabled" message Only show this if it is enabled while real-time sync is disabled. Otherwise the message could be confusing to users who just check the "Compatibility mode" box, since background sync doesn't have any UI. --------- Co-authored-by: github-actions --- .../changelog/fix-39626-pending-order-syncs | 4 + .../BatchProcessingController.php | 29 ++- .../Orders/CustomOrdersTableController.php | 89 +++++--- .../DataStores/Orders/DataSynchronizer.php | 215 +++++++++++++++++- .../OrdersDataStoreServiceProvider.php | 1 + .../Internal/Features/FeaturesController.php | 2 +- .../Orders/DataSynchronizerTests.php | 125 +++++++++- 7 files changed, 416 insertions(+), 49 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-39626-pending-order-syncs diff --git a/plugins/woocommerce/changelog/fix-39626-pending-order-syncs b/plugins/woocommerce/changelog/fix-39626-pending-order-syncs new file mode 100644 index 00000000000..407005b95e2 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-39626-pending-order-syncs @@ -0,0 +1,4 @@ +Significance: minor +Type: enhancement + +Add a background sync that can run independently of the normal real-time HPOS data sync. Also add a button on the Features screen to trigger an order sync manually. diff --git a/plugins/woocommerce/src/Internal/BatchProcessing/BatchProcessingController.php b/plugins/woocommerce/src/Internal/BatchProcessing/BatchProcessingController.php index c9d8a117480..bdb4877ac2f 100644 --- a/plugins/woocommerce/src/Internal/BatchProcessing/BatchProcessingController.php +++ b/plugins/woocommerce/src/Internal/BatchProcessing/BatchProcessingController.php @@ -99,14 +99,27 @@ class BatchProcessingController { * @param bool $unique Whether to make the action unique. */ private function schedule_watchdog_action( bool $with_delay = false, bool $unique = false ): void { - $time = $with_delay ? time() + HOUR_IN_SECONDS : time(); - as_schedule_single_action( - $time, - self::WATCHDOG_ACTION_NAME, - array(), - self::ACTION_GROUP, - $unique - ); + $time = time(); + if ( $with_delay ) { + /** + * Modify the delay interval for the batch processor's watchdog events. + * + * @since 8.2.0 + * + * @param int $delay Time, in seconds, before the watchdog process will run. Defaults to 3600 (1 hour). + */ + $time += apply_filters( 'woocommerce_batch_processor_watchdog_delay_seconds', HOUR_IN_SECONDS ); + } + + if ( ! as_has_scheduled_action( self::WATCHDOG_ACTION_NAME ) ) { + as_schedule_single_action( + $time, + self::WATCHDOG_ACTION_NAME, + array(), + self::ACTION_GROUP, + $unique + ); + } } /** diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php b/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php index 5a7bef5c374..a184eeb63bc 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php @@ -12,6 +12,7 @@ use Automattic\WooCommerce\Internal\BatchProcessing\BatchProcessingController; use Automattic\WooCommerce\Internal\Features\FeaturesController; use Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods; use Automattic\WooCommerce\Utilities\PluginUtil; +use ActionScheduler; defined( 'ABSPATH' ) || exit; @@ -27,6 +28,8 @@ class CustomOrdersTableController { use AccessiblePrivateMethods; + private const SYNC_QUERY_ARG = 'wc_hpos_sync_now'; + /** * The name of the option for enabling the usage of the custom orders tables */ @@ -116,10 +119,11 @@ class CustomOrdersTableController { self::add_filter( 'woocommerce_debug_tools', array( $this, 'add_initiate_regeneration_entry_to_tools_array' ), 999, 1 ); self::add_filter( 'updated_option', array( $this, 'process_updated_option' ), 999, 3 ); self::add_filter( 'pre_update_option', array( $this, 'process_pre_update_option' ), 999, 3 ); - self::add_action( FeaturesController::FEATURE_ENABLED_CHANGED_ACTION, array( $this, 'handle_data_sync_option_changed' ), 10, 1 ); self::add_action( 'woocommerce_after_register_post_type', array( $this, 'register_post_type_for_order_placeholders' ), 10, 0 ); self::add_action( FeaturesController::FEATURE_ENABLED_CHANGED_ACTION, array( $this, 'handle_feature_enabled_changed' ), 10, 2 ); self::add_action( 'woocommerce_feature_setting', array( $this, 'get_hpos_feature_setting' ), 10, 2 ); + self::add_action( 'woocommerce_sections_advanced', array( $this, 'sync_now' ) ); + self::add_filter( 'removable_query_args', array( $this, 'register_removable_query_arg' ) ); } /** @@ -326,32 +330,34 @@ class CustomOrdersTableController { } /** - * Handler for the all settings updated hook. + * Callback to trigger a sync immediately by clicking a button on the Features screen. * - * @param string $feature_id Feature ID. + * @return void */ - private function handle_data_sync_option_changed( string $feature_id ) { - if ( DataSynchronizer::ORDERS_DATA_SYNC_ENABLED_OPTION !== $feature_id ) { + private function sync_now() { + $section = filter_input( INPUT_GET, 'section' ); + if ( 'features' !== $section ) { return; } - $data_sync_is_enabled = $this->data_synchronizer->data_sync_is_enabled(); - if ( ! $this->data_synchronizer->check_orders_table_exists() ) { - $this->data_synchronizer->create_database_tables(); - } - - // Enabling/disabling the sync implies starting/stopping it too, if needed. - // We do this check here, and not in process_pre_update_option, so that if for some reason - // the setting is enabled but no sync is in process, sync will start by just saving the - // settings even without modifying them (and the opposite: sync will be stopped if for - // some reason it was ongoing while it was disabled). - if ( $data_sync_is_enabled ) { + if ( filter_input( INPUT_GET, self::SYNC_QUERY_ARG, FILTER_VALIDATE_BOOLEAN ) ) { $this->batch_processing_controller->enqueue_processor( DataSynchronizer::class ); - } else { - $this->batch_processing_controller->remove_processor( DataSynchronizer::class ); } } + /** + * Tell WP Admin to remove the sync query arg from the URL. + * + * @param array $query_args The query args that are removable. + * + * @return array + */ + private function register_removable_query_arg( $query_args ) { + $query_args[] = self::SYNC_QUERY_ARG; + + return $query_args; + } + /** * Handle the 'woocommerce_feature_enabled_changed' action, * if the custom orders table feature is enabled create the database tables if they don't exist. @@ -474,24 +480,45 @@ class CustomOrdersTableController { */ private function get_hpos_setting_for_sync( $sync_status ) { $sync_in_progress = $this->batch_processing_controller->is_enqueued( get_class( $this->data_synchronizer ) ); - $sync_enabled = get_option( DataSynchronizer::ORDERS_DATA_SYNC_ENABLED_OPTION ); - $sync_message = ''; + $sync_enabled = $this->data_synchronizer->data_sync_is_enabled(); + $sync_message = array(); + + if ( ! $sync_enabled && $this->data_synchronizer->background_sync_is_enabled() ) { + $sync_message[] = __( 'Background sync is enabled.', 'woocommerce' ); + } + if ( $sync_in_progress && $sync_status['current_pending_count'] > 0 ) { - $sync_message = sprintf( + $sync_message[] = sprintf( // translators: %d: number of pending orders. __( 'Currently syncing orders... %d pending', 'woocommerce' ), $sync_status['current_pending_count'] ); } elseif ( $sync_status['current_pending_count'] > 0 ) { - $sync_message = sprintf( - // translators: %d: number of pending orders. - _n( - '%d order pending to be synchronized. You can switch order data storage only when the posts and orders tables are in sync.', - '%d orders pending to be synchronized. You can switch order data storage only when the posts and orders tables are in sync.', - $sync_status['current_pending_count'], - 'woocommerce' + $sync_now_url = add_query_arg( + array( + self::SYNC_QUERY_ARG => true, ), - $sync_status['current_pending_count'], + wc_get_container()->get( FeaturesController::class )->get_features_page_url() + ); + + $sync_message[] = wp_kses_data( __( + 'You can switch order data storage only when the posts and orders tables are in sync.', + 'woocommerce' + ) ); + + $sync_message[] = sprintf( + '%2$s', + esc_url( $sync_now_url ), + sprintf( + // translators: %d: number of pending orders. + _n( + 'Sync %s pending order', + 'Sync %s pending orders', + $sync_status['current_pending_count'], + 'woocommerce' + ), + number_format_i18n( $sync_status['current_pending_count'] ) + ) ); } @@ -500,8 +527,8 @@ class CustomOrdersTableController { 'title' => '', 'type' => 'checkbox', 'desc' => __( 'Enable compatibility mode (synchronizes orders to the posts table).', 'woocommerce' ), - 'value' => $sync_enabled, - 'desc_tip' => $sync_message, + 'value' => $sync_enabled ? 'yes' : 'no', + 'desc_tip' => implode( '
', $sync_message ), 'row_class' => DataSynchronizer::ORDERS_DATA_SYNC_ENABLED_OPTION, ); } diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php b/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php index b0f31dcddd9..67cb39fcde9 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php @@ -8,7 +8,7 @@ namespace Automattic\WooCommerce\Internal\DataStores\Orders; use Automattic\WooCommerce\Caches\OrderCache; use Automattic\WooCommerce\Caches\OrderCacheController; use Automattic\WooCommerce\Database\Migrations\CustomOrderTable\PostsToOrdersMigrationController; -use Automattic\WooCommerce\Internal\BatchProcessing\BatchProcessorInterface; +use Automattic\WooCommerce\Internal\BatchProcessing\{ BatchProcessingController, BatchProcessorInterface }; use Automattic\WooCommerce\Internal\Features\FeaturesController; use Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods; use Automattic\WooCommerce\Internal\Utilities\DatabaseUtil; @@ -45,6 +45,13 @@ class DataSynchronizer implements BatchProcessorInterface { public const ID_TYPE_DELETED_FROM_ORDERS_TABLE = 3; public const ID_TYPE_DELETED_FROM_POSTS_TABLE = 4; + public const BACKGROUND_SYNC_MODE_OPTION = 'woocommerce_custom_orders_table_background_sync_mode'; + public const BACKGROUND_SYNC_INTERVAL_OPTION = 'woocommerce_custom_orders_table_background_sync_interval'; + public const BACKGROUND_SYNC_MODE_INTERVAL = 'interval'; + public const BACKGROUND_SYNC_MODE_CONTINUOUS = 'continuous'; + public const BACKGROUND_SYNC_MODE_OFF = 'off'; + public const BACKGROUND_SYNC_EVENT_HOOK = 'woocommerce_custom_orders_table_background_sync'; + /** * The data store object to use. * @@ -80,6 +87,13 @@ class DataSynchronizer implements BatchProcessorInterface { */ private $order_cache_controller; + /** + * The batch processing controller. + * + * @var BatchProcessingController + */ + private $batch_processing_controller; + /** * Class constructor. */ @@ -89,6 +103,13 @@ class DataSynchronizer implements BatchProcessorInterface { self::add_action( 'woocommerce_refund_created', array( $this, 'handle_updated_order' ), 100 ); self::add_action( 'woocommerce_update_order', array( $this, 'handle_updated_order' ), 100 ); self::add_action( 'wp_scheduled_auto_draft_delete', array( $this, 'delete_auto_draft_orders' ), 9 ); + self::add_filter( 'updated_option', array( $this, 'process_updated_option' ), 999, 3 ); + self::add_filter( 'added_option', array( $this, 'process_added_option' ), 999, 2 ); + self::add_filter( 'deleted_option', array( $this, 'process_deleted_option' ), 999 ); + self::add_action( self::BACKGROUND_SYNC_EVENT_HOOK, array( $this, 'handle_interval_background_sync' ) ); + if ( self::BACKGROUND_SYNC_MODE_CONTINUOUS === $this->get_background_sync_mode() ) { + self::add_action( 'shutdown', array( $this, 'handle_continuous_background_sync' ) ); + } self::add_filter( 'woocommerce_feature_description_tip', array( $this, 'handle_feature_description_tip' ), 10, 3 ); } @@ -101,6 +122,7 @@ class DataSynchronizer implements BatchProcessorInterface { * @param PostsToOrdersMigrationController $posts_to_cot_migrator The posts to COT migration class to use. * @param LegacyProxy $legacy_proxy The legacy proxy instance to use. * @param OrderCacheController $order_cache_controller The order cache controller instance to use. + * @param BatchProcessingController $batch_processing_controller The batch processing controller to use. * @internal */ final public function init( @@ -108,13 +130,15 @@ class DataSynchronizer implements BatchProcessorInterface { DatabaseUtil $database_util, PostsToOrdersMigrationController $posts_to_cot_migrator, LegacyProxy $legacy_proxy, - OrderCacheController $order_cache_controller + OrderCacheController $order_cache_controller, + BatchProcessingController $batch_processing_controller ) { - $this->data_store = $data_store; - $this->database_util = $database_util; - $this->posts_to_cot_migrator = $posts_to_cot_migrator; - $this->error_logger = $legacy_proxy->call_function( 'wc_get_logger' ); - $this->order_cache_controller = $order_cache_controller; + $this->data_store = $data_store; + $this->database_util = $database_util; + $this->posts_to_cot_migrator = $posts_to_cot_migrator; + $this->error_logger = $legacy_proxy->call_function( 'wc_get_logger' ); + $this->order_cache_controller = $order_cache_controller; + $this->batch_processing_controller = $batch_processing_controller; } /** @@ -171,7 +195,7 @@ class DataSynchronizer implements BatchProcessorInterface { } /** - * Is the data sync between old and new tables currently enabled? + * Is the real-time data sync between old and new tables currently enabled? * * @return bool */ @@ -179,6 +203,181 @@ class DataSynchronizer implements BatchProcessorInterface { return 'yes' === get_option( self::ORDERS_DATA_SYNC_ENABLED_OPTION ); } + /** + * Get the current background data sync mode. + * + * @return string + */ + public function get_background_sync_mode(): string { + $default = $this->data_sync_is_enabled() ? self::BACKGROUND_SYNC_MODE_INTERVAL : self::BACKGROUND_SYNC_MODE_OFF; + + return get_option( self::BACKGROUND_SYNC_MODE_OPTION, $default ); + } + + /** + * Is the background data sync between old and new tables currently enabled? + * + * @return bool + */ + public function background_sync_is_enabled(): bool { + $enabled_modes = array( self::BACKGROUND_SYNC_MODE_INTERVAL, self::BACKGROUND_SYNC_MODE_CONTINUOUS ); + $mode = $this->get_background_sync_mode(); + + return in_array( $mode, $enabled_modes, true ); + } + + /** + * Process an option change for specific keys. + * + * @param string $option_key The option key. + * @param string $old_value The previous value. + * @param string $new_value The new value. + * + * @return void + */ + private function process_updated_option( $option_key, $old_value, $new_value ) { + $sync_option_keys = array( self::ORDERS_DATA_SYNC_ENABLED_OPTION, self::BACKGROUND_SYNC_MODE_OPTION ); + if ( ! in_array( $option_key, $sync_option_keys, true ) || $new_value === $old_value ) { + return; + } + + if ( self::BACKGROUND_SYNC_MODE_OPTION === $option_key ) { + $mode = $new_value; + } else { + $mode = $this->get_background_sync_mode(); + } + switch ( $mode ) { + case self::BACKGROUND_SYNC_MODE_INTERVAL: + $this->schedule_background_sync(); + break; + + case self::BACKGROUND_SYNC_MODE_CONTINUOUS: + case self::BACKGROUND_SYNC_MODE_OFF: + default: + $this->unschedule_background_sync(); + break; + } + + if ( self::ORDERS_DATA_SYNC_ENABLED_OPTION === $option_key ) { + if ( ! $this->check_orders_table_exists() ) { + $this->create_database_tables(); + } + + if ( $this->data_sync_is_enabled() ) { + $this->batch_processing_controller->enqueue_processor( self::class ); + } else { + $this->batch_processing_controller->remove_processor( self::class ); + } + } + } + + /** + * Process an option change when the key didn't exist before. + * + * @param string $option_key The option key. + * @param string $value The new value. + * + * @return void + */ + private function process_added_option( $option_key, $value ) { + $this->process_updated_option( $option_key, false, $value ); + } + + /** + * Process an option deletion for specific keys. + * + * @param string $option_key The option key. + * + * @return void + */ + private function process_deleted_option( $option_key ) { + if ( self::BACKGROUND_SYNC_MODE_OPTION !== $option_key ) { + return; + } + + $this->unschedule_background_sync(); + $this->batch_processing_controller->remove_processor( self::class ); + } + + /** + * Get the time interval, in seconds, between background syncs. + * + * @return int + */ + public function get_background_sync_interval(): int { + $interval = filter_var( + get_option( self::BACKGROUND_SYNC_INTERVAL_OPTION, HOUR_IN_SECONDS ), + FILTER_VALIDATE_INT, + array( + 'options' => array( + 'default' => HOUR_IN_SECONDS, + ), + ) + ); + + return $interval; + } + + /** + * Schedule an event to run background sync when the mode is set to interval. + * + * @return void + */ + private function schedule_background_sync() { + $interval = $this->get_background_sync_interval(); + + // Calling Action Scheduler directly because WC_Action_Queue doesn't support the unique parameter yet. + as_schedule_recurring_action( + time() + $interval, + $interval, + self::BACKGROUND_SYNC_EVENT_HOOK, + array(), + '', + true + ); + } + + /** + * Remove any pending background sync events. + * + * @return void + */ + private function unschedule_background_sync() { + WC()->queue()->cancel_all( self::BACKGROUND_SYNC_EVENT_HOOK ); + } + + /** + * Callback to check for pending syncs and enqueue the background data sync processor when in interval mode. + * + * @return void + */ + private function handle_interval_background_sync() { + if ( self::BACKGROUND_SYNC_MODE_INTERVAL !== $this->get_background_sync_mode() ) { + $this->unschedule_background_sync(); + return; + } + + $pending_count = $this->get_total_pending_count(); + if ( $pending_count > 0 ) { + $this->batch_processing_controller->enqueue_processor( self::class ); + } + } + + /** + * Callback to keep the background data sync processor enqueued when in continuous mode. + * + * @return void + */ + private function handle_continuous_background_sync() { + if ( self::BACKGROUND_SYNC_MODE_CONTINUOUS !== $this->get_background_sync_mode() ) { + $this->batch_processing_controller->remove_processor( self::class ); + return; + } + + // This method already checks if a processor is enqueued before adding it to avoid duplication. + $this->batch_processing_controller->enqueue_processor( self::class ); + } + /** * Get the current sync process status. * The information is meaningful only if pending_data_sync_is_in_progress return true. diff --git a/plugins/woocommerce/src/Internal/DependencyManagement/ServiceProviders/OrdersDataStoreServiceProvider.php b/plugins/woocommerce/src/Internal/DependencyManagement/ServiceProviders/OrdersDataStoreServiceProvider.php index 2cff758259a..287d676e57d 100644 --- a/plugins/woocommerce/src/Internal/DependencyManagement/ServiceProviders/OrdersDataStoreServiceProvider.php +++ b/plugins/woocommerce/src/Internal/DependencyManagement/ServiceProviders/OrdersDataStoreServiceProvider.php @@ -58,6 +58,7 @@ class OrdersDataStoreServiceProvider extends AbstractServiceProvider { PostsToOrdersMigrationController::class, LegacyProxy::class, OrderCacheController::class, + BatchProcessingController::class, ) ); $this->share( OrdersTableRefundDataStore::class )->addArguments( array( OrdersTableDataStoreMeta::class, DatabaseUtil::class, LegacyProxy::class ) ); diff --git a/plugins/woocommerce/src/Internal/Features/FeaturesController.php b/plugins/woocommerce/src/Internal/Features/FeaturesController.php index 97e64e514a7..c17d9e1962b 100644 --- a/plugins/woocommerce/src/Internal/Features/FeaturesController.php +++ b/plugins/woocommerce/src/Internal/Features/FeaturesController.php @@ -1053,7 +1053,7 @@ class FeaturesController { * * @return string */ - private function get_features_page_url(): string { + public function get_features_page_url(): string { return admin_url( 'admin.php?page=wc-settings&tab=advanced§ion=features' ); } diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php index 377e9a90e1a..7b39d220c8c 100644 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php @@ -580,6 +580,129 @@ class DataSynchronizerTests extends HposTestCase { // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment -- This is a test. $sync_setting = apply_filters( 'woocommerce_feature_setting', array(), $this->sut::ORDERS_DATA_SYNC_ENABLED_OPTION ); $this->assertEquals( $sync_setting['value'], 'no' ); - $this->assertTrue( str_contains( $sync_setting['desc_tip'], '1 order pending to be synchronized' ) ); + $this->assertTrue( str_contains( $sync_setting['desc_tip'], 'Sync 1 pending order' ) ); + } + + /** + * Delete an order directly from the wc_orders table so that the usual hooks and filters don't run. + * + * @param int $order_id The ID of the order to delete. + * + * @return void + */ + private function direct_delete_cot_order( $order_id ) { + global $wpdb; + + $wpdb->delete( + OrdersTableDataStore::get_orders_table_name(), + array( 'id' => $order_id ), + array( '%d' ) + ); + } + + /** + * @testDox When data sync is enabled, there should be a background sync process scheduled, and running it should + * enqueue the DataSynchronizer batch processor when there are pending orders. + */ + public function test_bg_sync_while_sync_enabled() { + $reflection = new ReflectionClass( get_class( $this->sut ) ); + $process_method = $reflection->getMethod( 'process_updated_option' ); + $process_method->setAccessible( true ); + + $this->toggle_cot_authoritative( false ); + + $this->assertFalse( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + $this->assertFalse( as_has_scheduled_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ) ); + + $this->enable_cot_sync(); + $process_method->invoke( $this->sut, $this->sut::ORDERS_DATA_SYNC_ENABLED_OPTION, false, 'yes' ); + $this->assertTrue( as_has_scheduled_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ) ); + $this->assertTrue( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + + wc_get_container()->get( BatchProcessingController::class )->remove_processor( DataSynchronizer::class ); + $this->assertFalse( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + + // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment -- This is a test. + do_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ); + $this->assertFalse( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + + $cot_order = OrderHelper::create_complex_data_store_order(); + $this->direct_delete_cot_order( $cot_order->get_id() ); + $this->assertEquals( 1, $this->sut->get_total_pending_count() ); + + // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment -- This is a test. + do_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ); + $this->assertTrue( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + + $this->disable_cot_sync(); + $process_method->invoke( $this->sut, $this->sut::ORDERS_DATA_SYNC_ENABLED_OPTION, 'yes', 'no' ); + $this->assertFalse( as_has_scheduled_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ) ); + } + + /** + * @testDox When data sync is disabled, but background sync is enabled, there should be a background sync process + * scheduled, and running it should enqueue the DataSynchronizer batch processor when there are pending orders. + */ + public function test_bg_sync_while_sync_disabled_interval_mode() { + $reflection = new ReflectionClass( get_class( $this->sut ) ); + $process_method = $reflection->getMethod( 'process_updated_option' ); + $process_method->setAccessible( true ); + + $this->toggle_cot_authoritative( false ); + $this->disable_cot_sync(); + $process_method->invoke( $this->sut, $this->sut::ORDERS_DATA_SYNC_ENABLED_OPTION, false, 'no' ); + + $this->assertFalse( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + $this->assertFalse( as_has_scheduled_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ) ); + + update_option( $this->sut::BACKGROUND_SYNC_MODE_OPTION, $this->sut::BACKGROUND_SYNC_MODE_INTERVAL ); + $this->assertTrue( as_has_scheduled_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ) ); + + // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment -- This is a test. + do_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ); + $this->assertFalse( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + + $this->enable_cot_sync(); + $cot_order = OrderHelper::create_complex_data_store_order(); + $this->disable_cot_sync(); + $this->direct_delete_cot_order( $cot_order->get_id() ); + $this->assertEquals( 1, $this->sut->get_total_pending_count() ); + + // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment -- This is a test. + do_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ); + $this->assertTrue( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + + update_option( $this->sut::BACKGROUND_SYNC_MODE_OPTION, $this->sut::BACKGROUND_SYNC_MODE_OFF ); + $this->assertFalse( as_has_scheduled_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ) ); + } + + /** + * @testDox When data sync is disabled, but background sync is enabled and set to continuous mode, there should not + * be a background sync process scheduled, but the DataSynchronizer batch processor should be enqueued anyway. + */ + public function test_bg_sync_while_sync_disabled_continuous_mode() { + $reflection = new ReflectionClass( get_class( $this->sut ) ); + $process_method = $reflection->getMethod( 'process_updated_option' ); + $process_method->setAccessible( true ); + $handler_method = $reflection->getMethod( 'handle_continuous_background_sync' ); + $handler_method->setAccessible( true ); + + $this->toggle_cot_authoritative( false ); + $this->disable_cot_sync(); + $process_method->invoke( $this->sut, $this->sut::ORDERS_DATA_SYNC_ENABLED_OPTION, false, 'no' ); + + $this->assertFalse( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + $this->assertFalse( as_has_scheduled_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ) ); + + update_option( $this->sut::BACKGROUND_SYNC_MODE_OPTION, $this->sut::BACKGROUND_SYNC_MODE_CONTINUOUS ); + $handler_method->invoke( $this->sut ); + $this->assertTrue( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + $this->assertFalse( as_has_scheduled_action( $this->sut::BACKGROUND_SYNC_EVENT_HOOK ) ); + + // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment -- This is a test. + do_action( wc_get_container()->get( BatchProcessingController::class )::PROCESS_SINGLE_BATCH_ACTION_NAME, get_class( $this->sut ) ); + $this->assertFalse( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); + $handler_method->invoke( $this->sut ); + $this->assertTrue( wc_get_container()->get( BatchProcessingController::class )->is_enqueued( DataSynchronizer::class ) ); } } From 858fdecc52b53d7f715f8ceff4a1bbc527c732ef Mon Sep 17 00:00:00 2001 From: RJ <27843274+rjchow@users.noreply.github.com> Date: Wed, 27 Sep 2023 16:27:04 +0800 Subject: [PATCH 62/81] fix: cys site assembler color palette persistence bug (#40396) Fix the bug where sometimes switching from user defined color palettes to a pre-defined color palette won't set some colors. --- .../sidebar/global-styles/variation-container.jsx | 13 ++++++++++++- .../fix-cys-assembler-color-palette-persistence | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce/changelog/fix-cys-assembler-color-palette-persistence diff --git a/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/variation-container.jsx b/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/variation-container.jsx index 50a751b84d1..2dd8088f7df 100644 --- a/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/variation-container.jsx +++ b/plugins/woocommerce-admin/client/customize-store/assembler-hub/sidebar/global-styles/variation-container.jsx @@ -29,12 +29,23 @@ export const VariationContainer = ( { variation, children } ) => { const selectVariation = () => { // Remove the hasCreatedOwnColors flag if the user is switching to a color palette + // hasCreatedOwnColors flag is used for visually deselecting preset color palettes if user has created their own if ( variation.settings.color && user.settings.color && - user.settings.color.hasCreatedOwnColors + user.settings.color.palette.hasCreatedOwnColors ) { delete user.settings.color.palette.hasCreatedOwnColors; + // some color palettes don't define all the possible color options, e.g headings and captions + // if the user selects a pre-defined color palette with some own colors defined for these, + // we need to delete these user customizations as the below merge will persist them since + // the incoming variation won't have these properties defined + delete user.styles.color; + for ( const elementKey in user.styles.elements ) { + if ( user.styles.elements[ elementKey ].color ) { + delete user.styles.elements[ elementKey ].color; + } + } } setUserConfig( () => { diff --git a/plugins/woocommerce/changelog/fix-cys-assembler-color-palette-persistence b/plugins/woocommerce/changelog/fix-cys-assembler-color-palette-persistence new file mode 100644 index 00000000000..7ab3a9302dd --- /dev/null +++ b/plugins/woocommerce/changelog/fix-cys-assembler-color-palette-persistence @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +CYS: Fix the bug where sometimes switching from user defined color palettes to a pre-defined color palette won't set some colors. From 6728e73505cc77ba67ece88f6c7645a159111c74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maikel=20David=20P=C3=A9rez=20G=C3=B3mez?= Date: Wed, 27 Sep 2023 10:00:10 -0400 Subject: [PATCH 63/81] Fix the visibility icon (#40419) * Remove help icon on top of the hidden icon * Remove help icon on top of the non filterable icon * Add changelog file --- .../js/product-editor/changelog/fix-40174 | 4 + .../attribute-list-item.tsx | 8 +- .../components/variations-table/styles.scss | 1 - .../variations-table/variations-table.tsx | 6 +- .../js/product-editor/src/icons/help-icon.tsx | 97 ------------------- .../product-editor/src/icons/hidden-icon.tsx | 3 + .../src/icons/hidden-with-help-icon.scss | 14 --- .../src/icons/hidden-with-help-icon.tsx | 27 ------ 8 files changed, 13 insertions(+), 147 deletions(-) create mode 100644 packages/js/product-editor/changelog/fix-40174 delete mode 100644 packages/js/product-editor/src/icons/help-icon.tsx delete mode 100644 packages/js/product-editor/src/icons/hidden-with-help-icon.scss delete mode 100644 packages/js/product-editor/src/icons/hidden-with-help-icon.tsx diff --git a/packages/js/product-editor/changelog/fix-40174 b/packages/js/product-editor/changelog/fix-40174 new file mode 100644 index 00000000000..0d8c5bfbc90 --- /dev/null +++ b/packages/js/product-editor/changelog/fix-40174 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix visibility and filterable icons diff --git a/packages/js/product-editor/src/components/attribute-list-item/attribute-list-item.tsx b/packages/js/product-editor/src/components/attribute-list-item/attribute-list-item.tsx index 8f82b09b147..f76e47625a8 100644 --- a/packages/js/product-editor/src/components/attribute-list-item/attribute-list-item.tsx +++ b/packages/js/product-editor/src/components/attribute-list-item/attribute-list-item.tsx @@ -12,9 +12,8 @@ import { createElement } from '@wordpress/element'; /** * Internal dependencies */ -import HelpIcon from '../../icons/help-icon'; import NotFilterableIcon from './not-filterable-icon'; -import HiddenWithHelpIcon from '../../icons/hidden-with-help-icon'; +import HiddenIcon from '../../icons/hidden-icon'; type AttributeListItemProps = { attribute: ProductAttribute; @@ -78,7 +77,6 @@ export const AttributeListItem: React.FC< AttributeListItemProps > = ( { >
-
) } @@ -89,8 +87,8 @@ export const AttributeListItem: React.FC< AttributeListItemProps > = ( { position="top center" text={ NOT_VISIBLE_TEXT } > -
- +
+
) } diff --git a/packages/js/product-editor/src/components/variations-table/styles.scss b/packages/js/product-editor/src/components/variations-table/styles.scss index 61c9c0ef026..2962b6fc318 100644 --- a/packages/js/product-editor/src/components/variations-table/styles.scss +++ b/packages/js/product-editor/src/components/variations-table/styles.scss @@ -1,5 +1,4 @@ @import "./variations-actions-menu/styles.scss"; -@import "../../icons/hidden-with-help-icon.scss"; $table-row-height: calc($grid-unit * 9); diff --git a/packages/js/product-editor/src/components/variations-table/variations-table.tsx b/packages/js/product-editor/src/components/variations-table/variations-table.tsx index fdd36ccadac..633bccc07ce 100644 --- a/packages/js/product-editor/src/components/variations-table/variations-table.tsx +++ b/packages/js/product-editor/src/components/variations-table/variations-table.tsx @@ -52,7 +52,7 @@ import { import { VariationActionsMenu } from './variation-actions-menu'; import { useSelection } from '../../hooks/use-selection'; import { VariationsActionsMenu } from './variations-actions-menu'; -import HiddenWithHelpIcon from '../../icons/hidden-with-help-icon'; +import HiddenIcon from '../../icons/hidden-icon'; const NOT_VISIBLE_TEXT = __( 'Not visible to customers', 'woocommerce' ); @@ -475,8 +475,8 @@ export const VariationsTable = forwardRef< position="top center" text={ NOT_VISIBLE_TEXT } > -
- +
+
) } diff --git a/packages/js/product-editor/src/icons/help-icon.tsx b/packages/js/product-editor/src/icons/help-icon.tsx deleted file mode 100644 index 9af749198b4..00000000000 --- a/packages/js/product-editor/src/icons/help-icon.tsx +++ /dev/null @@ -1,97 +0,0 @@ -/** - * External dependencies - */ -import { createElement } from '@wordpress/element'; - -export default function HelpIcon( { - width = 10, - height = 15, - ...props -}: React.SVGProps< SVGSVGElement > ) { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ); -} diff --git a/packages/js/product-editor/src/icons/hidden-icon.tsx b/packages/js/product-editor/src/icons/hidden-icon.tsx index 92f5ee4e35d..b3211ced7cf 100644 --- a/packages/js/product-editor/src/icons/hidden-icon.tsx +++ b/packages/js/product-editor/src/icons/hidden-icon.tsx @@ -2,10 +2,12 @@ * External dependencies */ import { createElement } from '@wordpress/element'; +import classNames from 'classnames'; export default function HiddenIcon( { width = 24, height = 24, + className, ...props }: React.SVGProps< SVGSVGElement > ) { return ( @@ -17,6 +19,7 @@ export default function HiddenIcon( { fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" + className={ classNames( className, 'woocommerce-hidden-icon' ) } > ) { - return ( -
- - -
- ); -} From 2c0a060cd21f63c221410cc7c990856dc46093af Mon Sep 17 00:00:00 2001 From: Jonathan Lane Date: Wed, 27 Sep 2023 07:34:33 -0700 Subject: [PATCH 64/81] Update Playwright to 1.38 (#40418) * Update Playwright from 1.37.1 to 1.38.0 * Add changelog --------- Co-authored-by: Jon Lane --- .../changelog/e2e-update-playwright-1_38 | 4 + plugins/woocommerce/package.json | 2 +- pnpm-lock.yaml | 1415 ++++++++--------- 3 files changed, 697 insertions(+), 724 deletions(-) create mode 100644 plugins/woocommerce/changelog/e2e-update-playwright-1_38 diff --git a/plugins/woocommerce/changelog/e2e-update-playwright-1_38 b/plugins/woocommerce/changelog/e2e-update-playwright-1_38 new file mode 100644 index 00000000000..3d2dc9d0a68 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-update-playwright-1_38 @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Update Playwright to 1.38 diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index ca49898cbe7..20bf5fae1a0 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -58,6 +58,7 @@ "@babel/core": "7.12.9", "@babel/preset-env": "7.12.7", "@babel/register": "7.12.1", + "@playwright/test": "^1.38.1", "@typescript-eslint/eslint-plugin": "^5.54.0", "@typescript-eslint/experimental-utils": "^5.54.0", "@typescript-eslint/parser": "^5.54.0", @@ -116,7 +117,6 @@ "ie 9" ], "dependencies": { - "@playwright/test": "^1.37.1", "@wordpress/browserslist-config": "wp-6.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4060d0f393..34aee6ef42b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,7 +117,7 @@ importers: version: 1.1.2(webpack@5.76.3) webpack: specifier: ^5.76.2 - version: 5.76.3(webpack-cli@4.9.2) + version: 5.76.3(webpack-cli@3.3.12) packages/js/admin-e2e-tests: dependencies: @@ -2578,9 +2578,6 @@ importers: plugins/woocommerce: dependencies: - '@playwright/test': - specifier: ^1.37.1 - version: 1.37.1 '@wordpress/browserslist-config': specifier: wp-6.0 version: 4.1.3 @@ -2597,6 +2594,9 @@ importers: '@babel/register': specifier: 7.12.1 version: 7.12.1(@babel/core@7.12.9) + '@playwright/test': + specifier: ^1.38.1 + version: 1.38.1 '@typescript-eslint/eslint-plugin': specifier: ^5.54.0 version: 5.54.0(@typescript-eslint/parser@5.54.0)(eslint@8.32.0)(typescript@5.1.6) @@ -3941,7 +3941,7 @@ packages: /@ariakit/react-core@0.2.17(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-y8pHUR2lMcYHUontd33lpnenOBIT8E72IhbMQq/aROQHAevNxLr0JtSkQ+G439N9DfCpKxDaErikss6zqCEGGQ==} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: '@ariakit/core': 0.2.9 @@ -3954,7 +3954,7 @@ packages: /@ariakit/react@0.2.17(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-fJG0JBoACasyIVb+K9rW1Vyo7gI5Iseu1sP3WvIMnt5VdWjC/63NLpBHdnwQLhSx4z83pBPY6zKfPmEJa9fYug==} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: '@ariakit/react-core': 0.2.17(react-dom@17.0.2)(react@17.0.2) @@ -4015,7 +4015,7 @@ packages: resolution: {integrity: sha512-tUuWSb5iIzZpHpqCSeXw89+lX6Gpkz/Puh+FWrMyWe4ohgK/WrrAnMqEsA5O/UpEzHNtkuqVmo8haCJKL27mwg==} peerDependencies: '@wordpress/data': ^4 - react: ^17.0.2 + react: ^16.8 dependencies: '@automattic/format-currency': 1.0.0-alpha.0 '@wordpress/api-fetch': 3.23.1(react-native@0.70.0) @@ -4137,8 +4137,8 @@ packages: /@automattic/interpolate-components@1.2.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-YNQtJsrs9KQ3lkBdtLyDheVRijoBA3y/PuHdgJ0eB4AX9JyjkDX7jd79Inh79+01CGNLbMQGrEJby2zvbJr17A==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '>=16.14.23' + react: '>=16.2.0' peerDependenciesMeta: '@types/react': optional: true @@ -4176,7 +4176,7 @@ packages: '@wordpress/primitives': 3.38.0 '@wordpress/react-i18n': 3.8.0 classnames: 2.3.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) react-popper: 2.2.5(@popperjs/core@2.11.4)(react@17.0.2) @@ -4215,7 +4215,7 @@ packages: '@wordpress/primitives': 3.38.0 '@wordpress/react-i18n': 3.8.0 classnames: 2.3.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) react-popper: 2.2.5(@popperjs/core@2.11.4)(react@17.0.2) @@ -4238,7 +4238,7 @@ packages: /@automattic/viewport-react@1.0.0(react@17.0.2): resolution: {integrity: sha512-+6+l4jj14GXeoc5Jpic5E5eVvNL88Ezz8cMLmKAw0fpPDsz4gJv7o0hgShu0hjGjKTtBeUkBGfFWMCdRjZaVcA==} peerDependencies: - react: ^17.0.2 + react: ^16.0.0 dependencies: '@automattic/viewport': 1.1.0 '@wordpress/compose': 3.25.3(react@17.0.2) @@ -4341,6 +4341,7 @@ packages: /@babel/compat-data@7.16.4: resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} engines: {node: '>=6.9.0'} + dev: true /@babel/compat-data@7.17.7: resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} @@ -4364,7 +4365,7 @@ packages: '@babel/traverse': 7.17.3 '@babel/types': 7.17.0 convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.0 lodash: 4.17.21 @@ -4389,7 +4390,7 @@ packages: '@babel/traverse': 7.19.3 '@babel/types': 7.19.3 convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.0 semver: 6.3.0 @@ -4411,7 +4412,7 @@ packages: '@babel/traverse': 7.21.3 '@babel/types': 7.22.15 convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -4443,7 +4444,7 @@ packages: eslint: 8.32.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 - semver: 6.3.0 + semver: 6.3.1 dev: false /@babel/eslint-parser@7.17.0(@babel/core@7.21.3)(eslint@7.32.0): @@ -4457,7 +4458,7 @@ packages: eslint: 7.32.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 - semver: 6.3.0 + semver: 6.3.1 dev: true /@babel/eslint-parser@7.17.0(@babel/core@7.21.3)(eslint@8.32.0): @@ -4471,7 +4472,7 @@ packages: eslint: 8.32.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 - semver: 6.3.0 + semver: 6.3.1 dev: true /@babel/generator@7.17.7: @@ -4543,6 +4544,7 @@ packages: '@babel/helper-validator-option': 7.18.6 browserslist: 4.19.3 semver: 6.3.0 + dev: true /@babel/helper-compilation-targets@7.17.7(@babel/core@7.12.9): resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} @@ -4607,6 +4609,7 @@ packages: browserslist: 4.21.4 lru-cache: 5.1.1 semver: 6.3.0 + dev: true /@babel/helper-compilation-targets@7.20.7(@babel/core@7.17.8): resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} @@ -4616,11 +4619,10 @@ packages: dependencies: '@babel/compat-data': 7.21.0 '@babel/core': 7.17.8 - '@babel/helper-validator-option': 7.21.0 + '@babel/helper-validator-option': 7.22.15 browserslist: 4.21.4 lru-cache: 5.1.1 - semver: 6.3.0 - dev: true + semver: 6.3.1 /@babel/helper-compilation-targets@7.20.7(@babel/core@7.21.3): resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} @@ -4630,10 +4632,10 @@ packages: dependencies: '@babel/compat-data': 7.21.0 '@babel/core': 7.21.3 - '@babel/helper-validator-option': 7.21.0 + '@babel/helper-validator-option': 7.22.15 browserslist: 4.21.4 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 /@babel/helper-create-class-features-plugin@7.17.6(@babel/core@7.12.9): resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} @@ -4704,6 +4706,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-create-class-features-plugin@7.19.0(@babel/core@7.17.8): resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} @@ -4721,7 +4724,6 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-create-class-features-plugin@7.19.0(@babel/core@7.21.3): resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} @@ -4740,19 +4742,19 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.12.9): + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.17.8): resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.15 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.12.9) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.17.8) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -4783,6 +4785,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.1 + dev: true /@babel/helper-create-regexp-features-plugin@7.19.0(@babel/core@7.17.8): resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} @@ -4793,7 +4796,6 @@ packages: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.1 - dev: true /@babel/helper-create-regexp-features-plugin@7.19.0(@babel/core@7.21.3): resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} @@ -4813,12 +4815,12 @@ packages: '@babel/core': 7.21.3 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/traverse': 7.21.3 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.1 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -4831,12 +4833,13 @@ packages: '@babel/core': 7.12.9 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.17.8): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} @@ -4846,13 +4849,12 @@ packages: '@babel/core': 7.17.8 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.21.5 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.3): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} @@ -4862,7 +4864,7 @@ packages: '@babel/core': 7.21.3 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) '@babel/helper-plugin-utils': 7.21.5 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 @@ -4927,6 +4929,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 + dev: true /@babel/helper-module-imports@7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} @@ -4998,13 +5001,13 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.22.15(@babel/core@7.12.9): + /@babel/helper-module-transforms@7.22.15(@babel/core@7.17.8): resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.17.8 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -5043,6 +5046,7 @@ packages: /@babel/helper-plugin-utils@7.14.5: resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-plugin-utils@7.18.9: resolution: {integrity: sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==} @@ -5069,6 +5073,7 @@ packages: '@babel/types': 7.22.4 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-remap-async-to-generator@7.16.8: resolution: {integrity: sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==} @@ -5094,6 +5099,7 @@ packages: '@babel/types': 7.22.4 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -5108,7 +5114,6 @@ packages: '@babel/types': 7.22.4 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -5135,6 +5140,7 @@ packages: '@babel/types': 7.22.4 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-replace-supers@7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} @@ -5149,13 +5155,13 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-replace-supers@7.22.9(@babel/core@7.12.9): + /@babel/helper-replace-supers@7.22.9(@babel/core@7.17.8): resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.17.8 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.15 '@babel/helper-optimise-call-expression': 7.22.5 @@ -5236,6 +5242,7 @@ packages: /@babel/helper-validator-option@7.14.5: resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-option@7.16.7: resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} @@ -5253,7 +5260,6 @@ packages: /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-wrap-function@7.19.0: resolution: {integrity: sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==} @@ -5472,6 +5478,7 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.12.9) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-async-generator-functions@7.16.8(@babel/core@7.12.9): resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} @@ -5528,6 +5535,7 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.12.9) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.17.8): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} @@ -5542,7 +5550,6 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.17.8) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.3): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} @@ -5569,6 +5576,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-class-properties@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} @@ -5619,6 +5627,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -5631,7 +5640,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -5751,6 +5759,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-dynamic-import@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} @@ -5817,15 +5826,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.3) - /@babel/plugin-proposal-export-default-from@7.16.7(@babel/core@7.12.9): + /@babel/plugin-proposal-export-default-from@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-export-default-from': 7.16.7(@babel/core@7.12.9) + '@babel/plugin-syntax-export-default-from': 7.16.7(@babel/core@7.17.8) /@babel/plugin-proposal-export-default-from@7.16.7(@babel/core@7.21.3): resolution: {integrity: sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==} @@ -5846,6 +5855,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-export-namespace-from@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} @@ -5921,6 +5931,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-json-strings@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} @@ -5996,6 +6007,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-logical-assignment-operators@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} @@ -6071,6 +6083,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-nullish-coalescing-operator@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} @@ -6113,6 +6126,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} @@ -6123,7 +6137,6 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.17.8) - dev: true /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} @@ -6144,6 +6157,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-numeric-separator@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} @@ -6234,6 +6248,7 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) '@babel/plugin-transform-parameters': 7.16.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-object-rest-spread@7.17.3(@babel/core@7.12.9): resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} @@ -6289,6 +6304,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.17.8): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} @@ -6302,7 +6318,6 @@ packages: '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.17.8) '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.17.8) - dev: true /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.3): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} @@ -6326,6 +6341,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-optional-catch-binding@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} @@ -6369,6 +6385,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} @@ -6379,7 +6396,6 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.17.8) - dev: true /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} @@ -6401,6 +6417,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-optional-chaining@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} @@ -6447,6 +6464,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.9) + dev: true /@babel/plugin-proposal-optional-chaining@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} @@ -6458,7 +6476,6 @@ packages: '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.17.8) - dev: true /@babel/plugin-proposal-optional-chaining@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} @@ -6482,6 +6499,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-private-methods@7.16.11(@babel/core@7.12.9): resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} @@ -6658,6 +6676,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-proposal-unicode-property-regex@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} @@ -6701,6 +6720,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} @@ -6738,7 +6758,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.3): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -6754,7 +6773,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: false /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.17.8): @@ -6763,7 +6782,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.3): @@ -6772,7 +6791,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.12.9): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -6789,7 +6808,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.3): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -6835,7 +6853,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.12.9): @@ -6845,6 +6863,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -6853,7 +6872,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -6863,14 +6881,14 @@ packages: '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-syntax-export-default-from@7.16.7(@babel/core@7.12.9): + /@babel/plugin-syntax-export-default-from@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.17.8 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-export-default-from@7.16.7(@babel/core@7.21.3): resolution: {integrity: sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==} @@ -6879,7 +6897,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.12.9): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -6888,6 +6906,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -6906,15 +6925,6 @@ packages: '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-syntax-flow@7.16.7(@babel/core@7.12.9): - resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-syntax-flow@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} engines: {node: '>=6.9.0'} @@ -6922,8 +6932,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 - dev: true + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-flow@7.16.7(@babel/core@7.21.3): resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} @@ -6932,7 +6941,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.12.9): resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} @@ -6969,7 +6978,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: false /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.17.8): @@ -6978,7 +6987,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.3): @@ -6987,7 +6996,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.12.9): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -7053,15 +7062,6 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.12.9): - resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.17.8): resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} @@ -7070,7 +7070,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.3): resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} @@ -7081,15 +7080,6 @@ packages: '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.12.9): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.17.8): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} @@ -7148,7 +7138,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -7198,7 +7187,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -7223,7 +7211,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -7248,7 +7235,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -7343,13 +7329,13 @@ packages: '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.12.9): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.17.8): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.21.3): @@ -7369,6 +7355,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-arrow-functions@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} @@ -7408,6 +7395,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} @@ -7417,7 +7405,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} @@ -7440,6 +7427,7 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.12.9) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-async-to-generator@7.16.8(@babel/core@7.12.9): resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} @@ -7495,6 +7483,7 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.12.9) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-async-to-generator@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} @@ -7508,7 +7497,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.17.8) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-async-to-generator@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} @@ -7531,6 +7519,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-block-scoped-functions@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} @@ -7570,6 +7559,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -7579,7 +7569,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -7598,6 +7587,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-block-scoping@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} @@ -7637,6 +7627,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.17.8): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} @@ -7646,7 +7637,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.3): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} @@ -7673,6 +7663,7 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-classes@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} @@ -7749,6 +7740,7 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-classes@7.21.0(@babel/core@7.17.8): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} @@ -7768,7 +7760,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.3): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} @@ -7797,6 +7788,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-computed-properties@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} @@ -7836,6 +7828,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} @@ -7845,7 +7838,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} @@ -7864,6 +7856,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-destructuring@7.17.7(@babel/core@7.12.9): resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} @@ -7903,6 +7896,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.17.8): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} @@ -7912,7 +7906,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.3): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} @@ -7932,6 +7925,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-dotall-regex@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} @@ -7975,6 +7969,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} @@ -8005,6 +8000,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-duplicate-keys@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} @@ -8074,6 +8070,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-exponentiation-operator@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} @@ -8117,6 +8114,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} @@ -8127,7 +8125,6 @@ packages: '@babel/core': 7.17.8 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} @@ -8139,16 +8136,6 @@ packages: '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-transform-flow-strip-types@7.16.7(@babel/core@7.12.9): - resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.12.9) - /@babel/plugin-transform-flow-strip-types@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} engines: {node: '>=6.9.0'} @@ -8158,7 +8145,6 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.17.8) - dev: true /@babel/plugin-transform-flow-strip-types@7.16.7(@babel/core@7.21.3): resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} @@ -8178,6 +8164,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-for-of@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} @@ -8217,6 +8204,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.17.8): resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} @@ -8226,7 +8214,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.21.3): resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} @@ -8246,6 +8233,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-function-name@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} @@ -8293,6 +8281,7 @@ packages: '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.9) '@babel/helper-function-name': 7.21.0 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -8304,7 +8293,6 @@ packages: '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.17.8) '@babel/helper-function-name': 7.21.0 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -8325,6 +8313,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-literals@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} @@ -8364,6 +8353,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-literals@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} @@ -8373,7 +8363,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} @@ -8392,6 +8381,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-member-expression-literals@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} @@ -8431,6 +8421,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} @@ -8440,7 +8431,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} @@ -8463,6 +8453,7 @@ packages: babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-modules-amd@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} @@ -8557,6 +8548,7 @@ packages: babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-modules-commonjs@7.17.7(@babel/core@7.12.9): resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} @@ -8643,14 +8635,14 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.12.9): + /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.17.8): resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) + '@babel/core': 7.17.8 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 @@ -8679,6 +8671,7 @@ packages: babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-modules-systemjs@7.17.8(@babel/core@7.12.9): resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} @@ -8783,6 +8776,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-modules-umd@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} @@ -8869,6 +8863,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) + dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.16.8(@babel/core@7.12.9): resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} @@ -8909,6 +8904,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.19.1(@babel/core@7.17.8): resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} @@ -8918,8 +8914,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.21.5 - dev: true + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-named-capturing-groups-regex@7.19.1(@babel/core@7.21.3): resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} @@ -8929,7 +8924,7 @@ packages: dependencies: '@babel/core': 7.21.3 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-new-target@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==} @@ -8939,6 +8934,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-new-target@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} @@ -9010,6 +9006,7 @@ packages: '@babel/helper-replace-supers': 7.19.1 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-object-super@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} @@ -9061,6 +9058,7 @@ packages: '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} @@ -9073,7 +9071,6 @@ packages: '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} @@ -9095,6 +9092,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-parameters@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} @@ -9134,6 +9132,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.17.8): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} @@ -9143,7 +9142,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.3): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} @@ -9162,6 +9160,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-property-literals@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} @@ -9201,6 +9200,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -9210,7 +9210,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -9231,15 +9230,6 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.12.9): - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} @@ -9248,7 +9238,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} @@ -9279,13 +9268,13 @@ packages: '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.21.3) dev: true - /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.12.9): + /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.21.3): @@ -9297,13 +9286,13 @@ packages: '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-react-jsx-source@7.18.6(@babel/core@7.12.9): + /@babel/plugin-transform-react-jsx-source@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-react-jsx-source@7.18.6(@babel/core@7.21.3): @@ -9370,19 +9359,6 @@ packages: '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.3) '@babel/types': 7.22.4 - /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.12.9): - resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.12.9) - '@babel/types': 7.22.4 - /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.17.8): resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} engines: {node: '>=6.9.0'} @@ -9395,7 +9371,6 @@ packages: '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.17.8) '@babel/types': 7.22.4 - dev: true /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.21.3): resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} @@ -9406,9 +9381,9 @@ packages: '@babel/core': 7.21.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.3) - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} @@ -9440,6 +9415,7 @@ packages: dependencies: '@babel/core': 7.12.9 regenerator-transform: 0.14.5 + dev: true /@babel/plugin-transform-regenerator@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} @@ -9511,6 +9487,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-reserved-words@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} @@ -9605,18 +9582,18 @@ packages: - supports-color dev: true - /@babel/plugin-transform-runtime@7.19.1(@babel/core@7.12.9): + /@babel/plugin-transform-runtime@7.19.1(@babel/core@7.17.8): resolution: {integrity: sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.17.8 '@babel/helper-module-imports': 7.21.4 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.12.9) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.12.9) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.12.9) + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.17.8) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.17.8) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.17.8) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9645,6 +9622,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-shorthand-properties@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} @@ -9684,6 +9662,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -9693,7 +9672,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -9713,6 +9691,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + dev: true /@babel/plugin-transform-spread@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} @@ -9756,6 +9735,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + dev: true /@babel/plugin-transform-spread@7.19.0(@babel/core@7.17.8): resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} @@ -9766,7 +9746,6 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - dev: true /@babel/plugin-transform-spread@7.19.0(@babel/core@7.21.3): resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} @@ -9786,6 +9765,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-sticky-regex@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} @@ -9825,6 +9805,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -9834,7 +9815,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -9853,6 +9833,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-template-literals@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} @@ -9892,6 +9873,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -9901,7 +9883,6 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -9920,6 +9901,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-typeof-symbol@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} @@ -10020,17 +10002,17 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.12.9): + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.17.8): resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.12.9) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.12.9) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.17.8) /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.21.3): resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} @@ -10052,6 +10034,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-unicode-escapes@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} @@ -10121,6 +10104,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-unicode-regex@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} @@ -10164,6 +10148,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -10173,8 +10158,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.21.5 - dev: true + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -10184,7 +10168,7 @@ packages: dependencies: '@babel/core': 7.21.3 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/polyfill@7.12.1: resolution: {integrity: sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==} @@ -10268,6 +10252,7 @@ packages: semver: 5.7.1 transitivePeerDependencies: - supports-color + dev: true /@babel/preset-env@7.16.11(@babel/core@7.12.9): resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} @@ -10815,6 +10800,7 @@ packages: '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.12.9) '@babel/types': 7.22.4 esutils: 2.0.3 + dev: true /@babel/preset-modules@0.1.5(@babel/core@7.17.8): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} @@ -10863,8 +10849,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.21.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.3) '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.21.3) '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.21.3) @@ -10905,8 +10891,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.21.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 '@babel/plugin-transform-typescript': 7.19.3(@babel/core@7.21.3) transitivePeerDependencies: - supports-color @@ -11041,7 +11027,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.3 '@babel/types': 7.21.3 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -11058,7 +11044,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.3 '@babel/types': 7.22.4 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -11075,7 +11061,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.22.15 '@babel/types': 7.22.15 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -11086,6 +11072,7 @@ packages: dependencies: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + dev: true /@babel/types@7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} @@ -11291,7 +11278,7 @@ packages: /@emotion/core@10.3.1(react@17.0.2): resolution: {integrity: sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==} peerDependencies: - react: ^17.0.2 + react: '>=16.3.0' dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 10.0.29 @@ -11373,7 +11360,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0 '@types/react': '*' - react: ^17.0.2 + react: '>=16.8.0' peerDependenciesMeta: '@babel/core': optional: true @@ -11397,7 +11384,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0 '@types/react': '*' - react: ^17.0.2 + react: '>=16.8.0' peerDependenciesMeta: '@babel/core': optional: true @@ -11459,7 +11446,7 @@ packages: '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' - react: ^17.0.2 + react: '>=16.8.0' peerDependenciesMeta: '@babel/core': optional: true @@ -11482,7 +11469,7 @@ packages: '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' - react: ^17.0.2 + react: '>=16.8.0' peerDependenciesMeta: '@babel/core': optional: true @@ -11513,7 +11500,7 @@ packages: /@emotion/use-insertion-effect-with-fallbacks@1.0.0(react@17.0.2): resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} peerDependencies: - react: ^17.0.2 + react: '>=16.8.0' dependencies: react: 17.0.2 @@ -11556,7 +11543,7 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) espree: 7.3.1 globals: 13.19.0 ignore: 4.0.6 @@ -11573,7 +11560,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) espree: 9.4.1 globals: 13.19.0 ignore: 5.2.0 @@ -11634,7 +11621,7 @@ packages: /@floating-ui/react-dom@0.6.3(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-hC+pS5D6AgS2wWjbmSQ6UR6Kpy+drvWGJIri6e1EDGADTPsCaa4KzCgmCczHrQeInx9tqs81EyDmbKJYY2swKg==} peerDependencies: - react: ^17.0.2 + react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: '@floating-ui/dom': 0.4.5 @@ -11648,7 +11635,7 @@ packages: /@floating-ui/react-dom@0.7.2(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==} peerDependencies: - react: ^17.0.2 + react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: '@floating-ui/dom': 0.5.4 @@ -11662,7 +11649,7 @@ packages: /@floating-ui/react-dom@1.0.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-uiOalFKPG937UCLm42RxjESTWUVpbbatvlphQAU6bsv+ence6IoVG8JOUZcy8eW81NkU+Idiwvx10WFLmR4MIg==} peerDependencies: - react: ^17.0.2 + react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: '@floating-ui/dom': 1.0.2 @@ -11672,7 +11659,7 @@ packages: /@floating-ui/react-dom@2.0.1(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==} peerDependencies: - react: ^17.0.2 + react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: '@floating-ui/dom': 1.5.1 @@ -11732,7 +11719,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11742,7 +11729,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -12956,7 +12943,7 @@ packages: /@kwsites/file-exists@1.1.1: resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -12995,7 +12982,7 @@ packages: /@mdx-js/react@1.6.22(react@17.0.2): resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} peerDependencies: - react: ^17.0.2 + react: ^16.13.1 || ^17.0.0 dependencies: react: 17.0.2 dev: true @@ -13315,7 +13302,7 @@ packages: '@oclif/color': 1.0.1 '@oclif/core': 1.16.1 chalk: 4.1.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) fs-extra: 9.1.0 http-call: 5.3.0 load-json-file: 5.3.0 @@ -13333,7 +13320,7 @@ packages: dependencies: '@oclif/core': 1.16.1 chalk: 4.1.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) fs-extra: 9.1.0 http-call: 5.3.0 lodash: 4.17.21 @@ -13786,16 +13773,13 @@ packages: dev: false optional: true - /@playwright/test@1.37.1: - resolution: {integrity: sha512-bq9zTli3vWJo8S3LwB91U0qDNQDpEXnw7knhxLM0nwDvexQAwx9tO8iKDZSqqneVq+URd/WIoz+BALMqUTgdSg==} + /@playwright/test@1.38.1: + resolution: {integrity: sha512-NqRp8XMwj3AK+zKLbZShl0r/9wKgzqI/527bkptKXomtuo+dOjU9NdMASQ8DNC9z9zLOMbG53T4eihYr3XR+BQ==} engines: {node: '>=16'} hasBin: true dependencies: - '@types/node': 16.18.21 - playwright-core: 1.37.1 - optionalDependencies: - fsevents: 2.3.2 - dev: false + playwright: 1.38.1 + dev: true /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.10.0)(webpack-dev-server@4.12.0)(webpack@5.76.3): resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} @@ -13873,7 +13857,7 @@ packages: react-refresh: 0.11.0 schema-utils: 3.1.1 source-map: 0.7.3 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.14.0)(webpack-dev-server@4.12.0)(webpack@5.70.0): @@ -13957,7 +13941,7 @@ packages: /@radix-ui/react-arrow@1.0.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-fqYwhhI9IarZ0ll2cUSfKuXHlJK0qE4AfnRrPBbRwEH/4mGQn04/QFGomLi8TXWIdv9WJk//KgGm+aDxVIr1wA==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -13969,9 +13953,9 @@ packages: /@radix-ui/react-arrow@1.0.3(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -13989,7 +13973,7 @@ packages: /@radix-ui/react-collection@1.0.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-s8WdQQ6wNXpaxdZ308KSr8fEWGrg4un8i4r/w7fhiS4ElRNjk5rRcl0/C6TANG2LvLOGIxtzo/jAg6Qf73TEBw==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14004,9 +13988,9 @@ packages: /@radix-ui/react-collection@1.0.3(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14027,7 +14011,7 @@ packages: /@radix-ui/react-compose-refs@1.0.0(react@17.0.2): resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 react: 17.0.2 @@ -14036,8 +14020,8 @@ packages: /@radix-ui/react-compose-refs@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14050,7 +14034,7 @@ packages: /@radix-ui/react-context@1.0.0(react@17.0.2): resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 react: 17.0.2 @@ -14059,8 +14043,8 @@ packages: /@radix-ui/react-context@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14073,7 +14057,7 @@ packages: /@radix-ui/react-dialog@1.0.0(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14100,7 +14084,7 @@ packages: /@radix-ui/react-direction@1.0.0(react@17.0.2): resolution: {integrity: sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 react: 17.0.2 @@ -14109,8 +14093,8 @@ packages: /@radix-ui/react-direction@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14123,7 +14107,7 @@ packages: /@radix-ui/react-dismissable-layer@1.0.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14139,7 +14123,7 @@ packages: /@radix-ui/react-dismissable-layer@1.0.3(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-nXZOvFjOuHS1ovumntGV7NNoLaEp9JEvTht3MBjP44NSW5hUKj/8OnfN3+8WmB+CEhN44XaGhpHoSsUIEl5P7Q==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14155,9 +14139,9 @@ packages: /@radix-ui/react-dismissable-layer@1.0.4(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14179,7 +14163,7 @@ packages: /@radix-ui/react-dropdown-menu@2.0.4(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-y6AT9+MydyXcByivdK1+QpjWoKaC7MLjkS/cH1Q3keEyMvDkiY85m8o2Bi6+Z1PPUlCsMULopxagQOSfN0wahg==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14199,7 +14183,7 @@ packages: /@radix-ui/react-focus-guards@1.0.0(react@17.0.2): resolution: {integrity: sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 react: 17.0.2 @@ -14208,8 +14192,8 @@ packages: /@radix-ui/react-focus-guards@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14222,7 +14206,7 @@ packages: /@radix-ui/react-focus-scope@1.0.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14236,7 +14220,7 @@ packages: /@radix-ui/react-focus-scope@1.0.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-spwXlNTfeIprt+kaEWE/qYuYT3ZAqJiAGjN/JgdvgVDTu8yc+HuX+WOWXrKliKnLnwck0F6JDkqIERncnih+4A==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14250,9 +14234,9 @@ packages: /@radix-ui/react-focus-scope@1.0.3(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14272,7 +14256,7 @@ packages: /@radix-ui/react-id@1.0.0(react@17.0.2): resolution: {integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 '@radix-ui/react-use-layout-effect': 1.0.0(react@17.0.2) @@ -14282,8 +14266,8 @@ packages: /@radix-ui/react-id@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14297,7 +14281,7 @@ packages: /@radix-ui/react-menu@2.0.4(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-mzKR47tZ1t193trEqlQoJvzY4u9vYfVH16ryBrVrCAGZzkgyWnMQYEZdUkM7y8ak9mrkKtJiqB47TlEnubeOFQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14328,7 +14312,7 @@ packages: /@radix-ui/react-popper@1.1.1(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-keYDcdMPNMjSC8zTsZ8wezUMiWM9Yj14wtF3s0PTIs9srnEPC9Kt2Gny1T3T81mmSeyDjZxsD9N5WCwNNb712w==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14351,9 +14335,9 @@ packages: /@radix-ui/react-popper@1.1.2(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14380,7 +14364,7 @@ packages: /@radix-ui/react-portal@1.0.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14392,7 +14376,7 @@ packages: /@radix-ui/react-portal@1.0.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-swu32idoCW7KA2VEiUZGBSu9nB6qwGdV6k6HYhUoOo3M1FFpD+VgLzUqtt3mwL1ssz7r2x8MggpLSQach2Xy/Q==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14404,9 +14388,9 @@ packages: /@radix-ui/react-portal@1.0.3(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14424,7 +14408,7 @@ packages: /@radix-ui/react-presence@1.0.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14437,7 +14421,7 @@ packages: /@radix-ui/react-primitive@1.0.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14449,7 +14433,7 @@ packages: /@radix-ui/react-primitive@1.0.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-zY6G5Qq4R8diFPNwtyoLRZBxzu1Z+SXMlfYpChN7Dv8gvmx9X3qhDqiLWvKseKVJMuedFeU/Sa0Sy/Ia+t06Dw==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14461,9 +14445,9 @@ packages: /@radix-ui/react-primitive@1.0.3(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14481,7 +14465,7 @@ packages: /@radix-ui/react-roving-focus@1.0.3(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-stjCkIoMe6h+1fWtXlA6cRfikdBzCLp3SnVk7c48cv/uy3DTGoXhN76YaOYUJuy3aEDvDIKwKR5KSmvrtPvQPQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 @@ -14501,9 +14485,9 @@ packages: /@radix-ui/react-roving-focus@1.0.4(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14529,9 +14513,9 @@ packages: /@radix-ui/react-select@1.2.2(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14569,9 +14553,9 @@ packages: /@radix-ui/react-separator@1.0.3(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14589,7 +14573,7 @@ packages: /@radix-ui/react-slot@1.0.0(react@17.0.2): resolution: {integrity: sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 '@radix-ui/react-compose-refs': 1.0.0(react@17.0.2) @@ -14599,7 +14583,7 @@ packages: /@radix-ui/react-slot@1.0.1(react@17.0.2): resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 '@radix-ui/react-compose-refs': 1.0.0(react@17.0.2) @@ -14609,8 +14593,8 @@ packages: /@radix-ui/react-slot@1.0.2(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14624,9 +14608,9 @@ packages: /@radix-ui/react-toggle-group@1.0.4(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14650,9 +14634,9 @@ packages: /@radix-ui/react-toggle@1.0.3(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14672,9 +14656,9 @@ packages: /@radix-ui/react-toolbar@1.0.4(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14698,7 +14682,7 @@ packages: /@radix-ui/react-use-callback-ref@1.0.0(react@17.0.2): resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 react: 17.0.2 @@ -14707,8 +14691,8 @@ packages: /@radix-ui/react-use-callback-ref@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14721,7 +14705,7 @@ packages: /@radix-ui/react-use-controllable-state@1.0.0(react@17.0.2): resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 '@radix-ui/react-use-callback-ref': 1.0.0(react@17.0.2) @@ -14731,8 +14715,8 @@ packages: /@radix-ui/react-use-controllable-state@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14746,7 +14730,7 @@ packages: /@radix-ui/react-use-escape-keydown@1.0.0(react@17.0.2): resolution: {integrity: sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 '@radix-ui/react-use-callback-ref': 1.0.0(react@17.0.2) @@ -14756,7 +14740,7 @@ packages: /@radix-ui/react-use-escape-keydown@1.0.2(react@17.0.2): resolution: {integrity: sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 '@radix-ui/react-use-callback-ref': 1.0.0(react@17.0.2) @@ -14766,8 +14750,8 @@ packages: /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14781,7 +14765,7 @@ packages: /@radix-ui/react-use-layout-effect@1.0.0(react@17.0.2): resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 react: 17.0.2 @@ -14790,8 +14774,8 @@ packages: /@radix-ui/react-use-layout-effect@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14804,8 +14788,8 @@ packages: /@radix-ui/react-use-previous@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14818,7 +14802,7 @@ packages: /@radix-ui/react-use-rect@1.0.0(react@17.0.2): resolution: {integrity: sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 '@radix-ui/rect': 1.0.0 @@ -14828,8 +14812,8 @@ packages: /@radix-ui/react-use-rect@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14843,7 +14827,7 @@ packages: /@radix-ui/react-use-size@1.0.0(react@17.0.2): resolution: {integrity: sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==} peerDependencies: - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.21.0 '@radix-ui/react-use-layout-effect': 1.0.0(react@17.0.2) @@ -14853,8 +14837,8 @@ packages: /@radix-ui/react-use-size@1.0.1(@types/react@17.0.50)(react@17.0.2): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -14868,9 +14852,9 @@ packages: /@radix-ui/react-visually-hidden@1.0.3(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: - '@types/react': ^17.0.2 + '@types/react': '*' '@types/react-dom': '*' - react: ^17.0.2 + react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': @@ -14982,7 +14966,7 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-plugin-metro@9.1.1(@babel/core@7.12.9): + /@react-native-community/cli-plugin-metro@9.1.1(@babel/core@7.17.8): resolution: {integrity: sha512-8CBwEZrbYIeQw69Exg/oW20pV9C6mbYlDz0pxZJ0AYmC20Q+wFFs6sUh5zm28ZUh1L0LxNGmhle/YvMPqA+fMQ==} dependencies: '@react-native-community/cli-server-api': 9.1.0 @@ -14991,7 +14975,7 @@ packages: metro: 0.72.2 metro-config: 0.72.2 metro-core: 0.72.2 - metro-react-native-babel-transformer: 0.72.1(@babel/core@7.12.9) + metro-react-native-babel-transformer: 0.72.1(@babel/core@7.17.8) metro-resolver: 0.72.2 metro-runtime: 0.72.2 readline: 1.3.0 @@ -15040,7 +15024,7 @@ packages: dependencies: joi: 17.6.0 - /@react-native-community/cli@9.1.1(@babel/core@7.12.9): + /@react-native-community/cli@9.1.1(@babel/core@7.17.8): resolution: {integrity: sha512-LjXcYahjFzM7TlsGzQLH9bCx3yvBsHEj/5Ytdnk0stdDET329JdXWEh6JiSRjVWPVAoDAV5pRAFmEOEGDNIiAw==} engines: {node: '>=14'} hasBin: true @@ -15050,7 +15034,7 @@ packages: '@react-native-community/cli-debugger-ui': 9.0.0 '@react-native-community/cli-doctor': 9.1.1 '@react-native-community/cli-hermes': 9.1.0 - '@react-native-community/cli-plugin-metro': 9.1.1(@babel/core@7.12.9) + '@react-native-community/cli-plugin-metro': 9.1.1(@babel/core@7.17.8) '@react-native-community/cli-server-api': 9.1.0 '@react-native-community/cli-tools': 9.1.0 '@react-native-community/cli-types': 9.1.0 @@ -15081,7 +15065,7 @@ packages: /@react-spring/animated@9.4.4(react@17.0.2): resolution: {integrity: sha512-e9xnuBaUTD+NolKikUmrGWjX8AVCPyj1GcEgjgq9E+0sXKv46UY7cm2EmB6mUDTxWIDVKebARY++xT4nGDraBQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 dependencies: '@react-spring/shared': 9.4.4(react@17.0.2) '@react-spring/types': 9.4.4 @@ -15091,7 +15075,7 @@ packages: /@react-spring/animated@9.5.5(react@17.0.2): resolution: {integrity: sha512-glzViz7syQ3CE6BQOwAyr75cgh0qsihm5lkaf24I0DfU63cMm/3+br299UEYkuaHNmfDfM414uktiPlZCNJbQA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@react-spring/shared': 9.5.5(react@17.0.2) '@react-spring/types': 9.5.5 @@ -15100,7 +15084,7 @@ packages: /@react-spring/core@9.4.4(react@17.0.2): resolution: {integrity: sha512-llgb0ljFyjMB0JhWsaFHOi9XFT8n1jBMVs1IFY2ipIBerWIRWrgUmIpakLPHTa4c4jwqTaDSwX90s2a0iN7dxQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 dependencies: '@react-spring/animated': 9.4.4(react@17.0.2) '@react-spring/rafz': 9.4.4 @@ -15112,7 +15096,7 @@ packages: /@react-spring/core@9.5.5(react@17.0.2): resolution: {integrity: sha512-shaJYb3iX18Au6gkk8ahaF0qx0LpS0Yd+ajb4asBaAQf6WPGuEdJsbsNSgei1/O13JyEATsJl20lkjeslJPMYA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@react-spring/animated': 9.5.5(react@17.0.2) '@react-spring/rafz': 9.5.5 @@ -15130,7 +15114,7 @@ packages: /@react-spring/shared@9.4.4(react@17.0.2): resolution: {integrity: sha512-ySVgScDZlhm/+Iy2smY9i/DDrShArY0j6zjTS/Re1lasKnhq8qigoGiAxe8xMPJNlCaj3uczCqHy3TY9bKRtfQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 dependencies: '@react-spring/rafz': 9.4.4 '@react-spring/types': 9.4.4 @@ -15140,7 +15124,7 @@ packages: /@react-spring/shared@9.5.5(react@17.0.2): resolution: {integrity: sha512-YwW70Pa/YXPOwTutExHZmMQSHcNC90kJOnNR4G4mCDNV99hE98jWkIPDOsgqbYx3amIglcFPiYKMaQuGdr8dyQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@react-spring/rafz': 9.5.5 '@react-spring/types': 9.5.5 @@ -15156,7 +15140,7 @@ packages: /@react-spring/web@9.4.4(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-iJmOLdhcuizriUlu/xqBc5y8KaFts+UI+iC+GxyTwBtzxA9czKiSAZW2ESuhG8stafa3jncwjfTQQp84KN36cw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: '@react-spring/animated': 9.4.4(react@17.0.2) @@ -15170,7 +15154,7 @@ packages: /@react-spring/web@9.5.5(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-+moT8aDX/ho/XAhU+HRY9m0LVV9y9CK6NjSRaI+30Re150pB3iEip6QfnF4qnhSCQ5drpMF0XRXHgOTY/xbtFw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@react-spring/animated': 9.5.5(react@17.0.2) @@ -15322,7 +15306,7 @@ packages: /@storybook/addon-a11y@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-ZjYxGpuN7/euPscmgQys6QJ+ASVxrFHh28HPd8SqH+j1UmTiGnwPFYmUTm8sY8fMwormdy/H/phQ8FX6xNZ31Q==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: react: @@ -15353,7 +15337,7 @@ packages: /@storybook/addon-actions@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-prz8for4B0fSaoJbd4Qbif4K5GeVJg1pmgR93Z9R59vq42qIMLzFkLSB0n2oM+WiLNRPwiw5F+L9GANo/r7dBA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: react: @@ -15396,7 +15380,7 @@ packages: /@storybook/addon-controls@6.5.17-alpha.0(eslint@8.32.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6)(webpack-cli@3.3.12): resolution: {integrity: sha512-HUlXBKjaAN/01+vF9Nr9tszHL06T+CCGHSo50yshCzc4Jt2ezZikyMrRJCWAVRFLx4C/dkY6qk57IiJbFLbBww==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: react: @@ -15431,7 +15415,7 @@ packages: resolution: {integrity: sha512-WpWNIAIW/NG3/OCwCH8GvowGDBvExsZw2gcyonMx1GH4TxdWYye7BwpIEpSEIqGtchzu43bk15kK5ViYOXF9RQ==} peerDependencies: '@storybook/mdx2-csf': ^0.0.3 - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@storybook/mdx2-csf': @@ -15486,7 +15470,7 @@ packages: resolution: {integrity: sha512-WpWNIAIW/NG3/OCwCH8GvowGDBvExsZw2gcyonMx1GH4TxdWYye7BwpIEpSEIqGtchzu43bk15kK5ViYOXF9RQ==} peerDependencies: '@storybook/mdx2-csf': ^0.0.3 - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@storybook/mdx2-csf': @@ -15546,7 +15530,7 @@ packages: '@storybook/components': ^6.4.0 '@storybook/core-events': ^6.4.0 '@storybook/theming': ^6.4.0 - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 peerDependenciesMeta: react: @@ -15582,7 +15566,7 @@ packages: '@storybook/components': ^7.0.0 '@storybook/core-events': ^7.0.0 '@storybook/theming': ^7.0.0 - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: react: @@ -15616,7 +15600,7 @@ packages: /@storybook/addon-links@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-PHJughP/Tur0QpRmHdmvYSSvUosBGiDdN2i1Xa5zxRLIrlO2vmiagwj0NMb1dfR74SpJbtMZbQM3xVhlDo3SlA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: react: @@ -15643,7 +15627,7 @@ packages: /@storybook/addon-storysource@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-F82EUe5mM1tuB4wSEZ+3EJRlRji8Zip2vmd//4yPIlil1QZ7bXMnen9ECHEAEMHRfEC464Fyt6vgzNqXN99v3A==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: react: @@ -15671,7 +15655,7 @@ packages: /@storybook/addon-viewport@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-oadVlhI0rKI2g4IBVHXvQs0GDn71HLOmrxgrAQ1STQ63uzUaPjoozIko+xv09mYWWZMVsVRyek3+QqUGb036mg==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: react: @@ -15697,7 +15681,7 @@ packages: /@storybook/addons@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-iv2EF2XBzZwTp5xo1kBQeW1mi+dvLLDYIVBay4m9FDWQGAPj4rzPrAavuGrkc+XMvXkbeWpJ1kadPoC/W6YtHw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/api': 6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2) @@ -15718,7 +15702,7 @@ packages: /@storybook/addons@7.3.1(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-NebVJI/E2Lw7XP0deazSpN9B5HUtgVgIo2wbdyzJsOzKYAHO7IY1gkgvRyJ84Xn9iVoszEOPIw/P/t0WUqX6dg==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/manager-api': 7.3.1(react-dom@16.14.0)(react@17.0.2) @@ -15731,7 +15715,7 @@ packages: /@storybook/api@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-sj5XQXyTTxKDSqNVBlOO1h2+v8NO4EB7/7kBLOD8jpU4r4UUCLrf6G9b54j7R9/dIyi2XvrKVlp95q3yRE3zmg==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/channels': 6.5.17-alpha.0 @@ -15758,7 +15742,7 @@ packages: /@storybook/api@7.3.1(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-QYXX9NWV+Ud1nWVX3Tfjkmxb1Vi1bRxmSXlfIo3HYqhPm4rOwDlpN6nso21Kz3QyON4Hm9XqgQA5qUIZU19bVg==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: react: @@ -15775,7 +15759,7 @@ packages: /@storybook/builder-webpack4@6.5.17-alpha.0(acorn@7.4.1)(eslint@8.32.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6)(webpack-cli@3.3.12): resolution: {integrity: sha512-WMZ2obdoAo0TIxQIknR6NzQhCsthom9mfy/eExUqPSksVF/ifgCNeyhOaZt3hYOv+DAFTyK4uZYVk7kyG90rMw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' peerDependenciesMeta: @@ -15845,7 +15829,7 @@ packages: /@storybook/builder-webpack5@6.5.17-alpha.0(acorn@8.8.1)(eslint@8.32.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-j5DxqOSd7MAzi1vTTMEt7WEmAXvGGH4RGliprOCyjL0Yn4+9g0rydPG+dHut0gVoo5bF7aktyODquv6seAJGYQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' peerDependenciesMeta: @@ -15889,7 +15873,7 @@ packages: ts-dedent: 2.2.0 typescript: 5.1.6 util-deprecate: 1.0.2 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) webpack-dev-middleware: 4.3.0(webpack@5.76.3) webpack-hot-middleware: 2.25.1 webpack-virtual-modules: 0.4.3 @@ -15949,7 +15933,7 @@ packages: /@storybook/client-api@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-YLnKb3ieDkt1Qq0GiPoYyH4+Laa0DhnvsRBqDRhqS0y3orAt4xLpbucCIJzZFxs0jBXva0MNh1j6NpGDn6a0gA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/addons': 6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2) @@ -15992,7 +15976,7 @@ packages: /@storybook/components@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-RTeRq0bPdphq3XO3zTCyLKX/AI4IJ+xEt79k3eGnY7m56gAlwEcNAq6oUw1UuXZYQos78/G+tjS+MxaDMB/y4w==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/client-logger': 6.5.17-alpha.0 @@ -16010,7 +15994,7 @@ packages: /@storybook/components@7.3.1(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-8dk3WutobHvjxweVzA9Vqrp564vWOTQaV38JSi84ME8wzOdl20Xne9LoeMnqPHXFhnVZdm/Gkosfv4tqkDy4aw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@radix-ui/react-select': 1.2.2(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2) @@ -16034,7 +16018,7 @@ packages: /@storybook/core-client@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6)(webpack@4.46.0): resolution: {integrity: sha512-j4UqRv16EwavjFUbFnB1CTdkJf70/yzAZNs78OZuTeMHAbTD8AuKpVZ/MBniymll11AIYV0ue7Hr1cwxYuTWDA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' webpack: '*' @@ -16071,7 +16055,7 @@ packages: /@storybook/core-client@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6)(webpack@5.76.3): resolution: {integrity: sha512-j4UqRv16EwavjFUbFnB1CTdkJf70/yzAZNs78OZuTeMHAbTD8AuKpVZ/MBniymll11AIYV0ue7Hr1cwxYuTWDA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' webpack: '*' @@ -16102,13 +16086,13 @@ packages: typescript: 5.1.6 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /@storybook/core-common@6.5.17-alpha.0(eslint@8.32.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6)(webpack-cli@3.3.12): resolution: {integrity: sha512-fXhM3kwvs8VVg1SsxE6uhfsnA5lZRX6scFS5m+O9I3Q4fDhe6/hf58sBKydxz+82rm4D1Z1NDAryeg1tEEaN2Q==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' peerDependenciesMeta: @@ -16191,7 +16175,7 @@ packages: peerDependencies: '@storybook/builder-webpack5': '*' '@storybook/manager-webpack5': '*' - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' peerDependenciesMeta: @@ -16271,7 +16255,7 @@ packages: peerDependencies: '@storybook/builder-webpack5': '*' '@storybook/manager-webpack5': '*' - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' peerDependenciesMeta: @@ -16349,7 +16333,7 @@ packages: peerDependencies: '@storybook/builder-webpack5': '*' '@storybook/manager-webpack5': '*' - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' webpack: '*' @@ -16368,7 +16352,7 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) typescript: 5.1.6 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) transitivePeerDependencies: - '@storybook/mdx2-csf' - acorn @@ -16388,7 +16372,7 @@ packages: peerDependencies: '@storybook/builder-webpack5': '*' '@storybook/manager-webpack5': '*' - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' webpack: '*' @@ -16482,7 +16466,7 @@ packages: resolution: {integrity: sha512-co5gDCYPojRAc5lRMnWxbjrR1V37/rTmAo9Vok4a1hDpHZIwkGTWesdzvYivSQXYFxZTpxdM1b5K3W87brnahw==} engines: {node: '>=14.0.0'} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 17.0.2 @@ -16492,7 +16476,7 @@ packages: /@storybook/manager-api@7.3.1(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-jFH0EfWasdwHW8X5DUzTbH5mpdCZBHU7lIEUj6lVMBcBxbTniqBiG7mkwbW9VLocqEbBZimLCb/2RtTpK1Ue3Q==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/channels': 7.3.1 @@ -16517,7 +16501,7 @@ packages: /@storybook/manager-webpack4@6.5.17-alpha.0(acorn@7.4.1)(eslint@8.32.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6)(webpack-cli@3.3.12): resolution: {integrity: sha512-1sOZEFe073hVuZnNmvYj1pSUL2anLYSm7PuPewxBzVtvORk0vy+Mk0ZO/ToqV1KWYGZAHiFrfniQZXsamAfuMg==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' peerDependenciesMeta: @@ -16576,7 +16560,7 @@ packages: /@storybook/manager-webpack5@6.5.17-alpha.0(acorn@8.8.1)(eslint@8.32.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-Z/Ct16aYWUusg+744MkxWs4eQveIivSMqDfROvfiGEsVnC/QuzLIcLPW1evozCoBAparwAoIUwbkeRkMDx8bJQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 typescript: '*' peerDependenciesMeta: @@ -16615,7 +16599,7 @@ packages: ts-dedent: 2.2.0 typescript: 5.1.6 util-deprecate: 1.0.2 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) webpack-dev-middleware: 4.3.0(webpack@5.76.3) webpack-virtual-modules: 0.4.3 transitivePeerDependencies: @@ -16707,7 +16691,7 @@ packages: /@storybook/preview-web@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-aPGBojLY683+JxZmYNATT2eQ7eCxLDU61AN640MrsCN8Vsmi1fEvlh1lAcXK24rdDeQtC+ROjiSa/fl62wjT7A==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/addons': 6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2) @@ -16736,7 +16720,7 @@ packages: typescript: '>= 4.x' webpack: '>= 4' dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.0.4 @@ -16744,7 +16728,7 @@ packages: react-docgen-typescript: 2.2.2(typescript@5.1.6) tslib: 2.5.0 typescript: 5.1.6 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) transitivePeerDependencies: - supports-color dev: true @@ -16759,7 +16743,7 @@ packages: '@storybook/builder-webpack5': '*' '@storybook/manager-webpack4': '*' '@storybook/manager-webpack5': '*' - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 require-from-string: ^2.0.2 typescript: '*' @@ -16849,7 +16833,7 @@ packages: '@storybook/builder-webpack5': '*' '@storybook/manager-webpack4': '*' '@storybook/manager-webpack5': '*' - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 require-from-string: ^2.0.2 typescript: '*' @@ -16908,7 +16892,7 @@ packages: ts-dedent: 2.2.0 typescript: 5.1.6 util-deprecate: 1.0.2 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) transitivePeerDependencies: - '@storybook/mdx2-csf' - '@swc/core' @@ -16934,7 +16918,7 @@ packages: /@storybook/router@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-ogByZddCvA7VrDbD+0OA9cx5Rf6tAihffI/hIu1YjhysdBYzXz/C7cZDo1XduzasFb7EEDbHFC0pquDAdJz+Qw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/client-logger': 6.5.17-alpha.0 @@ -16949,7 +16933,7 @@ packages: /@storybook/router@7.3.1(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-KY+Mo0oF2xcRUDCXPJjAB5xy7d8Hi2dh8VqLahGa14ZHwhsZ/RxqE2bypwLXXkRpEiyOpfMbSsG73+1ml3fIUg==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/client-logger': 7.3.1 @@ -16971,7 +16955,7 @@ packages: /@storybook/source-loader@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-/fTcfFeDY/AkToybJkcGZijGXvyzU9wSOCHWq2ViAPn5s9MDU9k0Se2oJDFawB9pw9ROe1LaUsSCLPrLLP2Efw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/addons': 6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2) @@ -16991,7 +16975,7 @@ packages: /@storybook/store@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-1rwSvU+8vjsdWMYzCz01WQ2ZA7S1qakRil9ACLN9qCC89rvfW2vee/pbUHQQvF1wjeYmx/hQTIXXk70K81X8Dw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/addons': 6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2) @@ -17043,7 +17027,7 @@ packages: /@storybook/theming@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-+hC5hhbG3xW0O/wYVIAVkVFoFThC7t/AEDAKn/3kf3gPAJ657jJVNnm4rCaYVtZc5soLGF78yNrLFmwU4UsvAg==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/client-logger': 6.5.17-alpha.0 @@ -17057,7 +17041,7 @@ packages: /@storybook/theming@7.3.1(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-1CF6bT8o8pZcd/ptl1q4CiTGY4oLV19tE8Wnhd/TO934fdMp4fUx1FF4pFL6an98lxVeZT0JQ4uvkuaTvHJFRQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@17.0.2) @@ -17080,7 +17064,7 @@ packages: /@storybook/ui@6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-L188HSal+Jq6MNZuy3HUN/QlEE75B7okNBYj/ZR3/s6LIs2zceOZuxp2lk92CEh0dggoJ4HTRqPmKqMHNsXA8g==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/addons': 6.5.17-alpha.0(react-dom@17.0.2)(react@17.0.2) @@ -17583,7 +17567,7 @@ packages: resolution: {integrity: sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: '>=16.9.0' react-dom: '>=16.9.0' react-test-renderer: '>=16.9.0' peerDependenciesMeta: @@ -17605,8 +17589,8 @@ packages: resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': ^16.9.0 || ^17.0.0 + react: ^16.9.0 || ^17.0.0 react-dom: ^16.9.0 || ^17.0.0 react-test-renderer: ^16.9.0 || ^17.0.0 peerDependenciesMeta: @@ -17628,7 +17612,7 @@ packages: resolution: {integrity: sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: '*' react-dom: '*' dependencies: '@babel/runtime': 7.21.0 @@ -17642,7 +17626,7 @@ packages: resolution: {integrity: sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: '*' react-dom: '*' dependencies: '@babel/runtime': 7.21.0 @@ -18471,7 +18455,7 @@ packages: '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.1.6) '@typescript-eslint/parser': 4.33.0(eslint@8.32.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 4.33.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 7.32.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 @@ -18498,7 +18482,7 @@ packages: '@typescript-eslint/scope-manager': 5.54.0 '@typescript-eslint/type-utils': 5.54.0(eslint@8.32.0)(typescript@5.1.6) '@typescript-eslint/utils': 5.54.0(eslint@8.32.0)(typescript@5.1.6) - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.32.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 @@ -18586,7 +18570,7 @@ packages: '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.1.6) - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.32.0 typescript: 5.1.6 transitivePeerDependencies: @@ -18606,7 +18590,7 @@ packages: '@typescript-eslint/scope-manager': 5.54.0 '@typescript-eslint/types': 5.54.0 '@typescript-eslint/typescript-estree': 5.54.0(typescript@5.1.6) - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.32.0 typescript: 5.1.6 transitivePeerDependencies: @@ -18639,7 +18623,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.54.0(typescript@5.1.6) '@typescript-eslint/utils': 5.54.0(eslint@8.32.0)(typescript@5.1.6) - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.32.0 tsutils: 3.21.0(typescript@5.1.6) typescript: 5.1.6 @@ -18664,7 +18648,7 @@ packages: typescript: optional: true dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint-visitor-keys: 1.3.0 glob: 7.2.3 is-glob: 4.0.3 @@ -18687,7 +18671,7 @@ packages: dependencies: '@typescript-eslint/types': 4.33.0 '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.3 @@ -18708,7 +18692,7 @@ packages: dependencies: '@typescript-eslint/types': 5.54.0 '@typescript-eslint/visitor-keys': 5.54.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 @@ -18761,7 +18745,7 @@ packages: /@use-gesture/react@10.2.10(react@17.0.2): resolution: {integrity: sha512-znChnKVAMMGXD9J7fCKN686BJNBlUJaRtCu92IQXVWdcxg4MqS0SgsBslGnTWXTlsHVkg5zcGjKYf7qYkOf0Rg==} peerDependencies: - react: ^17.0.2 + react: '>= 16.8.0' dependencies: '@use-gesture/core': 10.2.10 react: 17.0.2 @@ -18770,7 +18754,7 @@ packages: /@use-gesture/react@10.2.27(react@17.0.2): resolution: {integrity: sha512-7E5vnWCxeslWlxwZ8uKIcnUZVMTRMZ8cvSnLLKF1NkyNb3PnNiAzoXM4G1vTKJKRhgOTeI6wK1YsEpwo9ABV5w==} peerDependencies: - react: ^17.0.2 + react: '>= 16.8.0' dependencies: '@use-gesture/core': 10.2.27 react: 17.0.2 @@ -19048,7 +19032,7 @@ packages: resolution: {integrity: sha512-gSfhg8CiL0Vwc2UgUblGVZIy7M0KyXaZsd8+QwzV8TSVRLkGyzdLtYEcs9wRWyQTsdmOd+oRGqbVgUX7AVJxug==} peerDependencies: enzyme: ^3.0.0 - react: ^17.0.2 + react: ^17.0.0-0 react-dom: ^17.0.0-0 dependencies: '@wojtekmaj/enzyme-adapter-utils': 0.1.2(react@17.0.2) @@ -19064,7 +19048,7 @@ packages: /@wojtekmaj/enzyme-adapter-utils@0.1.2(react@17.0.2): resolution: {integrity: sha512-MM/DqDqvxNVlWLqSVQiUbRN9MuDLJfefmPbJ8ZKdmdf5ID8G+i42XhFpoQh5bAZUCdwzRae3+WSZl2lXcFOrhw==} peerDependencies: - react: ^17.0.2 + react: ^17.0.0-0 dependencies: function.prototype.name: 1.1.5 has: 1.0.3 @@ -19365,7 +19349,7 @@ packages: resolution: {integrity: sha512-9Bxq9hY3WEqodn/K/WSE+PoIwv6jKkKBP0pxXFJTWV1yc8/Np9QHV/7wG7qjztxxgu00FrYF7u8OZyvjPrSNYw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -19423,7 +19407,7 @@ packages: resolution: {integrity: sha512-9Bxq9hY3WEqodn/K/WSE+PoIwv6jKkKBP0pxXFJTWV1yc8/Np9QHV/7wG7qjztxxgu00FrYF7u8OZyvjPrSNYw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -19481,7 +19465,7 @@ packages: resolution: {integrity: sha512-WQSWBAYM6iLN2+rAfZmQm4WMLPCe9woBcPybs0tKgOeXGZZBRgZ6FS01jzVmtWhttWXYZ3uH1PGPaKLJJc/Qyg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -19547,7 +19531,7 @@ packages: resolution: {integrity: sha512-Low88BcV7pUSULNytPbO8KWrrMnQA7FnbYW1UOj+GJt+zsYqIleYZccjI5DoFTsXAAKn8RYPytX0i6F6jDM6XQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -19600,7 +19584,7 @@ packages: resolution: {integrity: sha512-zIPqEysaLFJMnVKU/yCoCEBT3Co9xsa4Ow91T/LI94ll3LeWG/pyiX4PSSQNTx74AqbcNO2p79LVON4FLdu+mQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -19653,7 +19637,7 @@ packages: resolution: {integrity: sha512-zIPqEysaLFJMnVKU/yCoCEBT3Co9xsa4Ow91T/LI94ll3LeWG/pyiX4PSSQNTx74AqbcNO2p79LVON4FLdu+mQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -19707,7 +19691,7 @@ packages: resolution: {integrity: sha512-iuFqo2Ms08z0s1t1MM4mI7Gt+oBmj7KW6hRPEdQst+8jaG6hpQX6TgOzBt2Nw+0P0w8QRdyJjoQsB1cipGcNgQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -19761,7 +19745,7 @@ packages: resolution: {integrity: sha512-KfB4gVnqUGZfksFXukeFNXZ1WnkMpLQaVEbBCg09PtJQVA8ZkquzDySFpouA3Q0cTeS830NOc2Mri+MO/zlooQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -19839,7 +19823,7 @@ packages: resolution: {integrity: sha512-6YHyDQNa6UrAzF3oKFOyu/1F32u7h5q/gpsE1439KDGVLsrc8rSxx3rE6G6TXbJ5YC8MqDrOItMwbw14TGKPAQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/autop': 3.40.0 @@ -19872,7 +19856,7 @@ packages: resolution: {integrity: sha512-TVUk0WGVe4/Qzm4/i1KCHOBvbB581AJnYuCAi35nhgu9V//vqbKh9JRg2d49ZduFl0SakVmN6/xSTPPEYjmuYQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/autop': 3.40.0 @@ -19908,7 +19892,7 @@ packages: resolution: {integrity: sha512-vAEC0UqmzWe+X5p+xADMgpEVT8JnyHDyW6p49XXF7PGHJDAOplVZk/LGcjwwTV3V/jHuqMcTytQwj2XYqMpqCw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/autop': 3.28.0 @@ -19957,7 +19941,7 @@ packages: resolution: {integrity: sha512-M1sfM9yhEAjUZPJcgvFqoRDafxyrIOnTb3mRA+NeFMEKexrmCJ/h/MrzPSugYYRMSzbZVe1FsabWZp+Zz8HsNA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -19987,7 +19971,7 @@ packages: resolution: {integrity: sha512-6g8l9Eedo8Wh6D41q8BFZB94KOoubHm1Egp2BVQeHKqClZr/f7CCasDiHse1zakYqnc1rX8FNawI82mM2Lragw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/components': 25.6.0(@babel/core@7.17.8)(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2) @@ -20015,7 +19999,7 @@ packages: resolution: {integrity: sha512-Ac1+aIMM7NDgN3G7i5kcaETSvZfeqB4U6PubApPmM6FdBF5VfkYUZeqNcC7cuJdveyokRrqHg11/l+DcJGA7/g==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20069,7 +20053,7 @@ packages: resolution: {integrity: sha512-Ac1+aIMM7NDgN3G7i5kcaETSvZfeqB4U6PubApPmM6FdBF5VfkYUZeqNcC7cuJdveyokRrqHg11/l+DcJGA7/g==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20123,7 +20107,7 @@ packages: resolution: {integrity: sha512-O6hnJm9tfxkPnKknnJInpMy6qUS29CfRYtX5p5HdQMR2QFaOYvmwy7of3s5zBh7mubx3NeSzMy+ytZEWJ9ETJw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20177,7 +20161,7 @@ packages: resolution: {integrity: sha512-36d8fSk/nWfNv2nEZrC2gLx1rN9rGWFt425yXoH6JiakDvdXacN/04xcxZGBRkS+JDz6v22uyPMEol9TzwXOLg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20231,7 +20215,7 @@ packages: resolution: {integrity: sha512-36d8fSk/nWfNv2nEZrC2gLx1rN9rGWFt425yXoH6JiakDvdXacN/04xcxZGBRkS+JDz6v22uyPMEol9TzwXOLg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20285,7 +20269,7 @@ packages: resolution: {integrity: sha512-36d8fSk/nWfNv2nEZrC2gLx1rN9rGWFt425yXoH6JiakDvdXacN/04xcxZGBRkS+JDz6v22uyPMEol9TzwXOLg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20339,7 +20323,7 @@ packages: resolution: {integrity: sha512-RBPjtGLSoiV5YKhrBYh+/X8LbzbA99BJaB4Q+P0e1rVOwGzeBF3M7YEjmg1PrrzWaItqJZTvDoyZo+ql7c0KfA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20393,7 +20377,7 @@ packages: resolution: {integrity: sha512-RBPjtGLSoiV5YKhrBYh+/X8LbzbA99BJaB4Q+P0e1rVOwGzeBF3M7YEjmg1PrrzWaItqJZTvDoyZo+ql7c0KfA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20448,7 +20432,7 @@ packages: resolution: {integrity: sha512-pYz+EY+Tv/O2JuDBXpaFH/zv9Evty/e6NOGjOzddSeaShZ/mCq2DpUSWPuTFBEAjtv6h9HnpkakbNnEeio5yNA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20509,7 +20493,7 @@ packages: resolution: {integrity: sha512-pYz+EY+Tv/O2JuDBXpaFH/zv9Evty/e6NOGjOzddSeaShZ/mCq2DpUSWPuTFBEAjtv6h9HnpkakbNnEeio5yNA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20570,7 +20554,7 @@ packages: resolution: {integrity: sha512-VLzGS76MrgS6g5GMjk5q3+glSg1IYSzZAa/c5gZKy16c1a8rFWkc/IMhjw6w8Oyp3vvhB748J0itxsqCmTj5hw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@ariakit/react': 0.2.17(react-dom@17.0.2)(react@17.0.2) @@ -20657,7 +20641,7 @@ packages: resolution: {integrity: sha512-ydtXLWdOC2roZmn4PLFGvd09uCbqp//e5rHi8KOYU6C+KsUYyrOBzb4oEMUusptZVDNwRe0txPBieB5bmFNxFg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@types/mousetrap': 1.6.9 @@ -20677,7 +20661,7 @@ packages: resolution: {integrity: sha512-kGv3bI7H1UUAjYowIPvIKs/08gfM1+UIpwR43VFpuqmjFbtcLQXUSgg32Owc7Ig063NjhMDz7oWcFx+BKZ5+EQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@types/lodash': 4.14.184 @@ -20699,7 +20683,7 @@ packages: resolution: {integrity: sha512-G2IhRJma2lm+vNKduWofMy4jHliJGN83fTkyCQmtvREKz6uVcxcuNCgwGNSnh9JtuVSPlz9YpBQHmH6WsulMBA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@types/mousetrap': 1.6.9 @@ -20719,7 +20703,7 @@ packages: resolution: {integrity: sha512-kMfyANcDUmA2+4EfEZuDVNFOWKEOJe7oEaZtC6tFRR1wYAlPYOzaQJxbtQMBzqhvHlQMORaxDQNhaoJ8+ac8MQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/commands': 0.9.0(@babel/core@7.17.8)(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2) @@ -20750,7 +20734,7 @@ packages: resolution: {integrity: sha512-vhMbz/Q3xEMWTSFMs0D6n93qFSOhUZr/EgtRhLGRHdjskfgegFTlx13HrhDZ+U3xzkv1b8mH1klk4aZX+f0B8Q==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.3.1 @@ -20774,7 +20758,7 @@ packages: resolution: {integrity: sha512-xuqJQkdTwZn1GwHBEjIAWh5aO+wHf4zqYmPRQvoNqSULxYPfpCC0q0hOM9jJgTOCCkfWF2yWiduAOPMMGG+Vng==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.37.0 @@ -20800,7 +20784,7 @@ packages: resolution: {integrity: sha512-Jb7w6SOM9DyoknIOSnOs33Gp85/vbftDrtj9XUTFrQfmML8Ps4RnbX9us/XHvsAD79VgAGaBZrC5tSgZAkCYzQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -20864,7 +20848,7 @@ packages: resolution: {integrity: sha512-QbRLuEfwLyy/GVDHl7mzf/W6/hKMzCruggeR197JDOP7U3+HZXnbaZo7wb9YcdLKIyRNNwi4aNrFrgBgJAB72g==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.37.0 @@ -20877,7 +20861,7 @@ packages: resolution: {integrity: sha512-Tj0VPcnEOvr05wuXV7ds9Uz7BAJzKraItiqBu8M/JVftPkm6mS/g/5EWFj6Zvy1SmRb4K/qik8RuGXbV2FD0Ug==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.3.1 @@ -20911,7 +20895,7 @@ packages: resolution: {integrity: sha512-EReq6QQ3ASWPcB60q18GLfDBhQQrf2Ru9Vvkid/tk7tn4ttqy/axn09/ck/GQ1uwi9BoSRyydPOnQCsluPAgNA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 5.17.0(react@17.0.2) @@ -20934,7 +20918,7 @@ packages: resolution: {integrity: sha512-QvXE8LoLqSTgkZub4A7EcfcPqAQQAXw1my9DRcxuCUYjYyxWdVM3I6JcQ+A5osy76Poh8b0Al6Kd7hUxg4SEoQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 5.4.1(react@17.0.2) @@ -20955,7 +20939,7 @@ packages: resolution: {integrity: sha512-tEnkYzobo1X889XZFbStcFnd9miqvaRhwdonfbhG1KgCPveTPU8Wb4cGav4obFwIJabvGPhlj9eNs5M4eBtbaQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 5.17.0(react@17.0.2) @@ -20977,7 +20961,7 @@ packages: resolution: {integrity: sha512-1CWz0/v8Qprnj95SFNQoYxu0WW6tfnW1VE2D47MnUWxGNZytuXT1pKeL2iV8PV+XoTLhA6UmoE6+LlzvLeZ3jg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 6.17.0(react@17.0.2) @@ -21000,7 +20984,7 @@ packages: resolution: {integrity: sha512-jvg1ei+h9K94ckTaDHoHFtlsrkOMlRCaC/fjt2fWfTkQafrpFEEgFYIZEhT8nTQ3DD6Yuvyz4MmypSLnQ81M7A==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 6.17.0(react@17.0.2) @@ -21214,7 +21198,7 @@ packages: resolution: {integrity: sha512-EJh9yv7HpQCCEIxSvHyzWAksXx75bRr3ftIhyAT+y7XjyIONJ9uD7UH2vOFXfFRxU4RwZTxL/VTdo0W2BB2Nig==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -21287,7 +21271,7 @@ packages: resolution: {integrity: sha512-FEgNLDRAtOjGrXXNUXWucf3zMfM1rWCgc/eQrJFwj0atWGJmqQERvmF4H4jeUO6gqetOHmnko38fLVAnE7QWYw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -21338,7 +21322,7 @@ packages: resolution: {integrity: sha512-dDDy+wejeEWRL8mL/kaSWohb8mplXn3kVD/LdRpybY14G3UM7MQdAOFWXmq9MGwaTqBBqywtBG0lZlbJGsJadQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -21827,7 +21811,7 @@ packages: resolution: {integrity: sha512-Sige1gYGJOvD7UvKIUA4VCezFOxr157NCSQXn8/x2krjKybJzemI07ZJcTApawEYW0gutZbBizoUzaR8YLiiVA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -21856,7 +21840,7 @@ packages: resolution: {integrity: sha512-l+s5vgAuDZmrQreW39o3+B18WN6etl56jMuCHM9A1vum9QxbxOgYbFWI7u71osv1vG224gv+c1+W+vKpeGCkZg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -22045,7 +22029,7 @@ packages: peerDependencies: '@babel/core': '>=7' jest: '>=27' - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/core': 7.17.8 @@ -22065,7 +22049,7 @@ packages: resolution: {integrity: sha512-rdajs6bBsrYCwM6eTs5TC6kv3LmVv3PO7FAaIDnUiRwyqUQ2ddUp3cg6cOw7ZK7VXRRBVu1WQNTyVV4+ibTu3w==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/data': 7.3.0(react@17.0.2) @@ -22078,7 +22062,7 @@ packages: resolution: {integrity: sha512-nzggUnSucc1kTtr+ZwSPNwyn5Bf5QFUPjjAwCeXa1ThfZxlOoYCODIkj6CdUAlPuaPwg92v8rl4JC71H6sswhw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/data': 6.6.1(react@17.0.2) @@ -22093,7 +22077,7 @@ packages: resolution: {integrity: sha512-460xcjMzuBen6y8yOiWdpFpQ3PFjd+sE3L4cWa7uOALXOBAr5u37t3e7mBQFECKwX9k+6kWVlz1ThgobI3pERQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/data': 9.10.0(react@17.0.2) @@ -22172,7 +22156,7 @@ packages: resolution: {integrity: sha512-S+hOO+4NJJzaqcqm+XPa6uuvt/pkYjRz20HK3xt8Srb+HjO87D3X5feYGQMxEx5ueJl72+5/uOZwmXKJR4pzog==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.6.1 @@ -22185,7 +22169,7 @@ packages: resolution: {integrity: sha512-VGPAbt6BC4+E17XbmgZRM3KVVbhQIIu2pBapCOk6pvsvbCy5ewvcl9dy/Wlf6YRrFSmT4nrVPayldea5OVIC6Q==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.40.0 @@ -22215,7 +22199,7 @@ packages: resolution: {integrity: sha512-6y+UkYpMH+s+E+AO9k5HdlKL/0yaSF6kxdc/OirN1TFh0BzxoZZH0Qb7c6rShddk9W5m/5OJKwa1n4K3ER294A==} engines: {node: '>=16.0.0', npm: '>=8 <9'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@wordpress/block-editor': 12.8.0(@babel/core@7.17.8)(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2) @@ -22249,7 +22233,7 @@ packages: resolution: {integrity: sha512-/rUkBpHRc/5hXu4qNKjF0PfKqslMz3ZME2VhX1kfF6BVZmnMwkDNLjvS4vRpeQ9hG8FKqWQBZvmsqs2LKbFd9A==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 5.4.1(react@17.0.2) @@ -22265,7 +22249,7 @@ packages: resolution: {integrity: sha512-CgkRjPNvmuQkLZ5IDpZzFESqEheBL7cpaYHyFRIhIGfe6RgsJ58i5AOKUbvZ2lssqyangjYpJ2RfpNn+SVblHA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -22341,7 +22325,7 @@ packages: resolution: {integrity: sha512-/AyotisluO81NI1weWBDSsU2Nfc+BzGB/Hrzp6u7cQiWH/HZjouAdjG7RvKMlicCu5R/v6FTCQcjmimRfaYhEA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -22363,7 +22347,7 @@ packages: resolution: {integrity: sha512-57G0HrEy0Ym2zkT8/pI3ihXZot2tUnwQOFdO2GlhCaxxKgmVYkyQ44VneMcN2JbtFfjHzGueG09QeFt3rFyywQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -22492,7 +22476,7 @@ packages: resolution: {integrity: sha512-7ZfhtpWGvtT7xWqY/mCwC93zFHTVPQf8SZRjy2jAhcl7RNY6KZpW82rMRKNROEKJ4cYbTOMMf7WL2ulYi6cNFw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@wordpress/block-editor': 10.2.0(@babel/core@7.17.8)(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2) @@ -22521,7 +22505,7 @@ packages: resolution: {integrity: sha512-7ZfhtpWGvtT7xWqY/mCwC93zFHTVPQf8SZRjy2jAhcl7RNY6KZpW82rMRKNROEKJ4cYbTOMMf7WL2ulYi6cNFw==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@wordpress/block-editor': 10.2.0(@babel/core@7.21.3)(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2) @@ -22550,7 +22534,7 @@ packages: resolution: {integrity: sha512-Wpoc5kEhgTc2crGIGq2TRxl/8skc4R6yDaq3SczdYCMwLN2CmBnIb1fBZNzDFwmV/HLP39DesaWsbACTgsZhrA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -22584,7 +22568,7 @@ packages: resolution: {integrity: sha512-Ql1o5PzShr7PQtdpwu9CAIpAhU7DCRHaXW3uViwJcA5koi4bMOr+8CNJIslp0LcQy8/UzLTPNfQYKswipFkq1Q==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.40.0 @@ -22603,7 +22587,7 @@ packages: resolution: {integrity: sha512-UCjrV8D4JhTOcqWCo5ngEOXDYMCLjCdVAvYkXbE9TkfiZj+tQ6LS5NCuBV6d+5Dtk4dpw48m3Q95myMVCnjx7A==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.6.1 @@ -22623,7 +22607,7 @@ packages: resolution: {integrity: sha512-jFduYBaKVc4AeTHjH/PU+hfOdxgBXBdvjvSICIyBObtcANL3chzikNJjPzJP4Z6O22Q9LwHoTktCtr3oyYE8RQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.40.0 @@ -22643,7 +22627,7 @@ packages: resolution: {integrity: sha512-dOMbN8v6g9z8q6yDaAGS/7ZldVFVk0HvF/AvcMw2VFZ9QLOsP6VYRwuXgq8dAD2n8Rh42j1IfaMDTNznKScQpA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/element': 5.17.0 @@ -22808,7 +22792,7 @@ packages: engines: {node: '>=14', npm: '>=6.14.4'} hasBin: true peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/core': 7.21.3 @@ -22903,7 +22887,7 @@ packages: resolution: {integrity: sha512-yJBM1hLl6n9w9X17deSsUc2Fbt/eBKDw2pzwbiPalKUGjP5RSKflzVb1uOwSr+KDUPo4vHj1hwkqO+RHssHHRg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -22933,7 +22917,7 @@ packages: resolution: {integrity: sha512-yJBM1hLl6n9w9X17deSsUc2Fbt/eBKDw2pzwbiPalKUGjP5RSKflzVb1uOwSr+KDUPo4vHj1hwkqO+RHssHHRg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 react-dom: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -22963,7 +22947,7 @@ packages: resolution: {integrity: sha512-XbWacQHXteacql0d8d2/qYqHqD3HwBPKSg/TP/0RZghcAQZcwlk+xOD+httkfIR5Iux1dBcSVSl/zyhp6yxqFA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -23138,7 +23122,7 @@ packages: resolution: {integrity: sha512-5FZCqXjsZjONoyCfjalRgdme//j4XJYHRXYh7ynoJW/qULq3YqZhyLtjFsEM4V+uuuURFSYnGnOD7V+K9wooPA==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 5.17.0(react@17.0.2) @@ -23151,7 +23135,7 @@ packages: resolution: {integrity: sha512-khCqUED/fXT3RlbWiCcE4gilcB0iZ5Y6d+VjwkJcoAtPLJn6HBiOS9qypNj8NmMYhkIGP1SMSnnp4u2jiHsqcg==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 5.4.1(react@17.0.2) @@ -23164,7 +23148,7 @@ packages: resolution: {integrity: sha512-R2gpbdHyguzVMc/G9xXIusZmXKus246s0uxCIFX8nWJuvGd7tCkknnf3EthTaW7Pw4CbVsXrFuUUkfYE8ikNJQ==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^17.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 5.4.1(react@17.0.2) @@ -23177,7 +23161,7 @@ packages: resolution: {integrity: sha512-w0C18oYRrFRGdk33Dp5KSOmU1NoJ0SABxOCtzRn8rPJ2ZssThAR/jGhoGd/As+/qHLtiXBQoW5UOzZAYPIWq6A==} engines: {node: '>=12'} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 '@wordpress/compose': 6.17.0(react@17.0.2) @@ -23201,7 +23185,7 @@ packages: /@wordpress/widgets@3.17.0(@babel/core@7.17.8)(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-mT9QDbkP+xbR1rYaCg4qSdTzVM4wWNtLqwk5c478SpFyv8kaHisM6733A0Dylsz2RlMmJOwHvuBtVONSQSTd4w==} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -23272,7 +23256,7 @@ packages: resolution: {integrity: sha512-L/mqYRxyBWVdIdSaXBHacfvS8NKn3sTKbPb31aRADbE9spsJ1p+tXil0GVQHPlzrmjGeozquLrxuYGiXsFNU7g==} peerDependencies: '@xstate/fsm': ^2.0.0 - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 xstate: ^4.36.0 peerDependenciesMeta: '@xstate/fsm': @@ -23441,7 +23425,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -23449,7 +23433,7 @@ packages: resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) depd: 1.1.2 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -23488,7 +23472,7 @@ packages: /airbnb-prop-types@2.16.0(react@17.0.2): resolution: {integrity: sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==} peerDependencies: - react: ^17.0.2 + react: ^0.14 || ^15.0.0 || ^16.0.0-alpha dependencies: array.prototype.find: 2.1.2 function.prototype.name: 1.1.5 @@ -24199,10 +24183,10 @@ packages: peerDependencies: eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.15 - '@babel/traverse': 7.21.3 - '@babel/types': 7.22.15 + '@babel/code-frame': 7.16.7 + '@babel/parser': 7.17.8 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 eslint: 7.32.0 eslint-visitor-keys: 1.3.0 resolve: 1.20.0 @@ -24453,7 +24437,7 @@ packages: loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /babel-loader@8.3.0(@babel/core@7.17.8)(webpack@4.46.0): @@ -24613,7 +24597,7 @@ packages: engines: {node: '>= 8.3'} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 '@types/babel__traverse': 7.14.2 dev: true @@ -24622,7 +24606,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 '@types/babel__core': 7.1.16 '@types/babel__traverse': 7.14.2 @@ -24639,8 +24623,8 @@ packages: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.22.4 + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 '@types/babel__core': 7.1.16 '@types/babel__traverse': 7.14.2 @@ -24714,6 +24698,7 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.17.8): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} @@ -24726,7 +24711,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.3): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} @@ -24822,6 +24806,7 @@ packages: core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.17.8): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} @@ -24833,7 +24818,6 @@ packages: core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.3): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} @@ -24888,6 +24872,7 @@ packages: '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.12.9) transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.17.8): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} @@ -24898,7 +24883,6 @@ packages: '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.17.8) transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.3): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} @@ -25045,38 +25029,38 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.3) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.3) - /babel-preset-fbjs@3.4.0(@babel/core@7.12.9): + /babel-preset-fbjs@3.4.0(@babel/core@7.17.8): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.12.9 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.12.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.12.9) - '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.12.9) - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.12.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.12.9) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.12.9) - '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.12.9) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.12.9) - '@babel/plugin-transform-flow-strip-types': 7.16.7(@babel/core@7.12.9) - '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.12.9) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.12.9) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.12.9) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.12.9) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.12.9) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.12.9) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.12.9) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.12.9) + '@babel/core': 7.17.8 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.17.8) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.17.8) + '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.17.8) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.17.8) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.17.8) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.17.8) + '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.17.8) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.17.8) + '@babel/plugin-transform-flow-strip-types': 7.16.7(@babel/core@7.17.8) + '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.17.8) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.17.8) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.17.8) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.17.8) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.17.8) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.17.8) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.17.8) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.17.8) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color @@ -26023,7 +26007,7 @@ packages: resolution: {integrity: sha512-FwZ/wxjqe+5RgzF2SRsPSWsVB9+McAVRWW0tRkmbh7fBjrf3HFZZbcr8vr61p1K+NBaAPv57DRjxgIyfbHmd7g==} engines: {node: '>=7.6.0'} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) puppeteer-core: 1.12.2 transitivePeerDependencies: - bufferutil @@ -26566,7 +26550,7 @@ packages: /cmdk@0.2.0(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-JQpKvEOb86SnvMZbYaFKYhvzFntWBeSZdyii0rZPhKJj9uwJBxu4DaVYDrRN7r3mPop56oPhRw+JYWTKs66TYw==} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@radix-ui/react-dialog': 1.0.0(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2) @@ -27061,7 +27045,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.0.0 serialize-javascript: 6.0.0 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /copy-webpack-plugin@9.1.0(webpack@5.70.0): @@ -27099,6 +27083,7 @@ packages: dependencies: browserslist: 4.19.3 semver: 7.0.0 + dev: true /core-js-compat@3.21.1: resolution: {integrity: sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==} @@ -27439,7 +27424,7 @@ packages: postcss-value-parser: 4.2.0 schema-utils: 3.1.1 semver: 7.5.3 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /css-loader@6.7.1(webpack@5.70.0): @@ -27473,7 +27458,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.21) postcss-value-parser: 4.2.0 semver: 7.3.8 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /css-select-base-adapter@0.1.1: @@ -27967,6 +27952,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 9.2.2 + dev: true /debuglog@1.0.1: resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} @@ -28541,7 +28527,7 @@ packages: /downshift@6.1.12(react@17.0.2): resolution: {integrity: sha512-7XB/iaSJVS4T8wGFT3WRXmSF1UlBHAA40DshZtkrIscIN+VC+Lh363skLxFTvJwtNgHxAMDGEHT4xsyQFWL+UA==} peerDependencies: - react: ^17.0.2 + react: '>=16.12.0' dependencies: '@babel/runtime': 7.21.0 compute-scroll-into-view: 1.0.17 @@ -28553,7 +28539,7 @@ packages: /downshift@6.1.7(react@17.0.2): resolution: {integrity: sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==} peerDependencies: - react: ^17.0.2 + react: '>=16.12.0' dependencies: '@babel/runtime': 7.21.0 compute-scroll-into-view: 1.0.17 @@ -28784,7 +28770,7 @@ packages: resolution: {integrity: sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==} peerDependencies: enzyme: ^3.0.0 - react: ^17.0.2 + react: ^16.0.0-0 react-dom: ^16.0.0-0 dependencies: enzyme: 3.11.0 @@ -28804,7 +28790,7 @@ packages: /enzyme-adapter-utils@1.14.0(react@17.0.2): resolution: {integrity: sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==} peerDependencies: - react: ^17.0.2 + react: 0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0 dependencies: airbnb-prop-types: 2.16.0(react@17.0.2) function.prototype.name: 1.1.5 @@ -29076,7 +29062,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.32.0 eslint-plugin-import: 2.25.4(@typescript-eslint/parser@5.54.0)(eslint-import-resolver-typescript@2.5.0)(eslint-import-resolver-webpack@0.13.2)(eslint@8.32.0) glob: 7.2.3 @@ -29347,7 +29333,7 @@ packages: eslint: ^5.0.0 || ^6.0.0 dependencies: comment-parser: 0.7.6 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.32.0 jsdoctypeparser: 6.1.0 lodash: 4.17.21 @@ -29366,7 +29352,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 dependencies: comment-parser: 0.7.6 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 7.32.0 jsdoctypeparser: 9.0.0 lodash: 4.17.21 @@ -29385,7 +29371,7 @@ packages: dependencies: '@es-joy/jsdoccomment': 0.10.8 comment-parser: 1.2.4 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 7.32.0 esquery: 1.4.0 jsdoc-type-pratt-parser: 1.2.0 @@ -29405,7 +29391,7 @@ packages: dependencies: '@es-joy/jsdoccomment': 0.36.1 comment-parser: 1.3.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint: 8.32.0 esquery: 1.4.0 @@ -29571,7 +29557,7 @@ packages: object.values: 1.1.5 prop-types: 15.8.1 resolve: 2.0.0-next.3 - semver: 6.3.1 + semver: 6.3.0 string.prototype.matchall: 4.0.6 dev: true @@ -29707,7 +29693,7 @@ packages: ajv: 6.12.6 chalk: 2.4.2 cross-spawn: 6.0.5 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 eslint-scope: 4.0.3 eslint-utils: 1.4.3 @@ -29752,7 +29738,7 @@ packages: ajv: 6.12.6 chalk: 2.4.2 cross-spawn: 6.0.5 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 eslint-scope: 5.1.1 eslint-utils: 1.4.3 @@ -29800,7 +29786,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 enquirer: 2.3.6 escape-string-regexp: 4.0.0 @@ -29850,7 +29836,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 @@ -30296,7 +30282,7 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -30645,7 +30631,7 @@ packages: dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -30966,7 +30952,7 @@ packages: semver: 7.5.3 tapable: 1.1.3 typescript: 5.1.6 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.1.6)(webpack@5.70.0): @@ -31055,7 +31041,7 @@ packages: /framer-motion@10.16.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-K6TXr5mZtitC/dxQCBdg7xzdN0d5IAIrlaqCPKtIQVdzVPGC0qBuJKXggHX1vjnP5gPOFwB1KbCCTWcnFc3kWg==} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 react-dom: ^18.0.0 peerDependenciesMeta: react: @@ -31073,7 +31059,7 @@ packages: /framer-motion@6.2.8(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-4PtBWFJ6NqR350zYVt9AsFDtISTqsdqna79FvSYPfYDXuuqFmiKtZdkTnYPslnsOMedTW0pEvaQ7eqjD+sA+HA==} peerDependencies: - react: ^17.0.2 + react: '>=16.8 || ^17.0.0 || ^18.0.0' react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' dependencies: framesync: 6.0.1 @@ -31090,7 +31076,7 @@ packages: /framer-motion@6.2.8(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-4PtBWFJ6NqR350zYVt9AsFDtISTqsdqna79FvSYPfYDXuuqFmiKtZdkTnYPslnsOMedTW0pEvaQ7eqjD+sA+HA==} peerDependencies: - react: ^17.0.2 + react: '>=16.8 || ^17.0.0 || ^18.0.0' react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' dependencies: framesync: 6.0.1 @@ -31849,7 +31835,7 @@ packages: /gridicons@3.4.0(react@17.0.2): resolution: {integrity: sha512-GikyCOcfhwHSN8tfsZvcWwWSaRLebVZCvDzfFg0X50E+dIAnG2phfFUTNa06dXA09kqRYCdnu8sPO8pSYO3UVA==} peerDependencies: - react: ^17.0.2 + react: 15 - 17 dependencies: prop-types: 15.8.1 react: 17.0.2 @@ -32518,7 +32504,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) transitivePeerDependencies: - acorn dev: true @@ -32550,7 +32536,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: content-type: 1.0.4 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) is-retry-allowed: 1.2.0 is-stream: 2.0.1 parse-json: 4.0.0 @@ -32589,7 +32575,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -32599,7 +32585,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true @@ -32670,7 +32656,7 @@ packages: engines: {node: '>= 6.0.0'} dependencies: agent-base: 5.1.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -32679,7 +32665,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true @@ -32689,7 +32675,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -32723,7 +32709,7 @@ packages: dependencies: '@tannin/sprintf': 1.2.0 '@wordpress/compose': 3.25.3(react@17.0.2) - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) events: 3.3.0 hash.js: 1.1.7 interpolate-components: 1.1.1 @@ -32739,12 +32725,12 @@ packages: /i18n-calypso@5.0.0(react@17.0.2): resolution: {integrity: sha512-YgqLgshNiBOiifWxr4s33ODWQ4JIaHoBPWtgFyqcRy0+WGMX2CmTDbXaeZHkHxuIjzsGP+YrVTPNp7lfbiot4g==} peerDependencies: - react: ^17.0.2 + react: ^16.8 dependencies: '@babel/runtime': 7.21.0 '@tannin/sprintf': 1.2.0 '@wordpress/compose': 3.25.3(react@17.0.2) - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) events: 3.3.0 hash.js: 1.1.7 interpolate-components: 1.1.1 @@ -32766,7 +32752,7 @@ packages: '@babel/runtime': 7.21.0 '@tannin/sprintf': 1.2.0 '@wordpress/compose': 5.4.1(react@17.0.2) - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) events: 3.3.0 hash.js: 1.1.7 lodash: 4.17.21 @@ -33789,7 +33775,7 @@ packages: '@babel/parser': 7.21.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -33835,7 +33821,7 @@ packages: resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} engines: {node: '>=6'} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 2.0.5 make-dir: 2.1.0 rimraf: 2.7.1 @@ -33848,7 +33834,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -35194,7 +35180,7 @@ packages: resolution: {integrity: sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==} engines: {node: '>= 8.3'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.13 '@jest/types': 25.5.0 '@types/stack-utils': 1.0.1 chalk: 3.0.0 @@ -36021,7 +36007,7 @@ packages: resolution: {integrity: sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==} engines: {node: '>= 8.3'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 '@jest/types': 25.5.0 '@types/prettier': 1.19.1 chalk: 3.0.0 @@ -36035,7 +36021,7 @@ packages: make-dir: 3.1.0 natural-compare: 1.4.0 pretty-format: 25.5.0 - semver: 6.3.0 + semver: 6.3.1 dev: true /jest-snapshot@26.6.2: @@ -36595,35 +36581,6 @@ packages: /jsc-android@250230.2.1: resolution: {integrity: sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==} - /jscodeshift@0.13.1(@babel/preset-env@7.12.7): - resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - dependencies: - '@babel/core': 7.21.3 - '@babel/parser': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.16.7(@babel/core@7.21.3) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7(@babel/core@7.21.3) - '@babel/plugin-proposal-optional-chaining': 7.16.7(@babel/core@7.21.3) - '@babel/plugin-transform-modules-commonjs': 7.17.7(@babel/core@7.21.3) - '@babel/preset-env': 7.12.7(@babel/core@7.12.9) - '@babel/preset-flow': 7.16.7(@babel/core@7.21.3) - '@babel/preset-typescript': 7.16.7(@babel/core@7.21.3) - '@babel/register': 7.18.9(@babel/core@7.21.3) - babel-core: 7.0.0-bridge.0(@babel/core@7.21.3) - chalk: 4.1.2 - flow-parser: 0.121.0 - graceful-fs: 4.2.9 - micromatch: 3.1.10(supports-color@6.1.0) - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.20.5 - temp: 0.8.4 - write-file-atomic: 2.4.1 - transitivePeerDependencies: - - supports-color - /jscodeshift@0.13.1(@babel/preset-env@7.20.2): resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} hasBin: true @@ -36652,7 +36609,6 @@ packages: write-file-atomic: 2.4.1 transitivePeerDependencies: - supports-color - dev: true /jsdoc-type-pratt-parser@1.1.1: resolution: {integrity: sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==} @@ -38246,48 +38202,48 @@ packages: dependencies: uglify-es: 3.3.9 - /metro-react-native-babel-preset@0.72.1(@babel/core@7.12.9): + /metro-react-native-babel-preset@0.72.1(@babel/core@7.17.8): resolution: {integrity: sha512-DlvMw2tFrCqD9OXBoN11fPM09kHC22FZpnkTmG4Pr4kecV+aDmEGxwakjUcjELrX1JCXz2MLPvqeJkbiP1f5CA==} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.12.9 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.12.9) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-proposal-export-default-from': 7.16.7(@babel/core@7.12.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.12.9) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.12.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.12.9) - '@babel/plugin-syntax-export-default-from': 7.16.7(@babel/core@7.12.9) - '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.12.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.9) - '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-async-to-generator': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.12.9) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.12.9) - '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.12.9) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.12.9) - '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-flow-strip-types': 7.16.7(@babel/core@7.12.9) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.12.9) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.12.9) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.12.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1(@babel/core@7.12.9) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.12.9) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.12.9) - '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-react-jsx-source': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-runtime': 7.19.1(@babel/core@7.12.9) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.12.9) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.12.9) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.12.9) - '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.12.9) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.12.9) + '@babel/core': 7.17.8 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.17.8) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-proposal-export-default-from': 7.16.7(@babel/core@7.17.8) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.17.8) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.17.8) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-syntax-export-default-from': 7.16.7(@babel/core@7.17.8) + '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.17.8) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-async-to-generator': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.17.8) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.17.8) + '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.17.8) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.17.8) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-flow-strip-types': 7.16.7(@babel/core@7.17.8) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.17.8) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.17.8) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.17.8) + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1(@babel/core@7.17.8) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.17.8) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.17.8) + '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-react-jsx-source': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-runtime': 7.19.1(@babel/core@7.17.8) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.17.8) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.17.8) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.17.8) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.17.8) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.17.8) '@babel/template': 7.22.15 react-refresh: 0.4.3 transitivePeerDependencies: @@ -38340,16 +38296,16 @@ packages: transitivePeerDependencies: - supports-color - /metro-react-native-babel-transformer@0.72.1(@babel/core@7.12.9): + /metro-react-native-babel-transformer@0.72.1(@babel/core@7.17.8): resolution: {integrity: sha512-hMnN0MOgVloAk94YuXN7sLeDaZ51Y6xIcJXxIU1s/KaygAGXk6o7VAdwf2MY/IV1SIct5lkW4Gn71u/9/EvfXA==} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.12.9 - babel-preset-fbjs: 3.4.0(@babel/core@7.12.9) + '@babel/core': 7.17.8 + babel-preset-fbjs: 3.4.0(@babel/core@7.17.8) hermes-parser: 0.8.0 metro-babel-transformer: 0.72.1 - metro-react-native-babel-preset: 0.72.1(@babel/core@7.12.9) + metro-react-native-babel-preset: 0.72.1(@babel/core@7.17.8) metro-source-map: 0.72.1 nullthrows: 1.1.1 transitivePeerDependencies: @@ -38528,7 +38484,7 @@ packages: /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -39056,7 +39012,7 @@ packages: dependencies: carlo: 0.9.46 chokidar: 3.5.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) isbinaryfile: 3.0.3 mime: 2.5.2 opn: 5.5.0 @@ -39410,7 +39366,7 @@ packages: ajv-errors: 1.0.1(ajv@6.12.6) chalk: 4.1.2 cosmiconfig: 7.0.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 ignore: 5.2.0 is-plain-obj: 3.0.0 @@ -39691,7 +39647,7 @@ packages: '@oclif/plugin-warn-if-update-available': 2.0.4 aws-sdk: 2.1215.0 concurrently: 7.0.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) find-yarn-workspace-root: 2.0.0 fs-extra: 8.1.0 github-slugger: 1.4.0 @@ -40021,7 +39977,7 @@ packages: resolution: {integrity: sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg==} engines: {node: '>=12.10.0'} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) p-queue: 6.6.2 transitivePeerDependencies: - supports-color @@ -40390,7 +40346,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 crc32: 0.2.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) seed-random: 2.2.0 transitivePeerDependencies: - supports-color @@ -40467,11 +40423,21 @@ packages: find-up: 5.0.0 dev: true - /playwright-core@1.37.1: - resolution: {integrity: sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA==} + /playwright-core@1.38.1: + resolution: {integrity: sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg==} engines: {node: '>=16'} hasBin: true - dev: false + dev: true + + /playwright@1.38.1: + resolution: {integrity: sha512-oRMSJmZrOu1FP5iu3UrCx8JEFRIMxLDM0c/3o4bpzU5Tz97BypefWf7TuTNPWeCe279TPal5RtPPZ+9lW/Qkow==} + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright-core: 1.38.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true /plur@4.0.0: resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} @@ -40713,7 +40679,7 @@ packages: loader-utils: 2.0.4 postcss: 7.0.39 schema-utils: 3.1.1 - semver: 7.5.0 + semver: 7.5.3 webpack: 4.46.0(webpack-cli@3.3.12) dev: true @@ -40729,7 +40695,7 @@ packages: loader-utils: 2.0.4 postcss: 8.4.12 schema-utils: 3.1.1 - semver: 7.5.0 + semver: 7.5.3 webpack: 5.70.0(webpack-cli@3.3.12) dev: true @@ -40745,7 +40711,7 @@ packages: loader-utils: 2.0.4 postcss: 8.4.12 schema-utils: 3.1.1 - semver: 7.5.0 + semver: 7.5.3 webpack: 5.76.3(webpack-cli@3.3.12) dev: true @@ -40761,7 +40727,7 @@ packages: loader-utils: 2.0.4 postcss: 8.4.21 schema-utils: 3.1.1 - semver: 7.5.0 + semver: 7.5.3 webpack: 5.70.0(webpack-cli@3.3.12) /postcss-loader@4.3.0(postcss@8.4.21)(webpack@5.76.3): @@ -40777,7 +40743,7 @@ packages: postcss: 8.4.21 schema-utils: 3.1.1 semver: 7.5.0 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /postcss-loader@6.2.1(postcss@8.4.21)(webpack@5.76.3): @@ -41772,7 +41738,7 @@ packages: engines: {node: '>=6.4.0'} requiresBuild: true dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) extract-zip: 1.7.0 https-proxy-agent: 2.2.4 mime: 2.6.0 @@ -41813,7 +41779,7 @@ packages: engines: {node: '>=10.18.1'} dependencies: cross-fetch: 3.1.5 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) devtools-protocol: 0.0.981744 extract-zip: 2.0.1 https-proxy-agent: 5.0.1 @@ -41842,7 +41808,7 @@ packages: dependencies: chromium-bidi: 0.4.4(devtools-protocol@0.0.1094867) cross-fetch: 3.1.5 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) devtools-protocol: 0.0.1094867 extract-zip: 2.0.1 https-proxy-agent: 5.0.1 @@ -41863,7 +41829,7 @@ packages: engines: {node: '>=10.18.1'} dependencies: '@types/mime-types': 2.1.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) extract-zip: 2.0.1 https-proxy-agent: 4.0.0 mime: 2.6.0 @@ -41887,7 +41853,7 @@ packages: requiresBuild: true dependencies: '@types/mime-types': 2.1.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) extract-zip: 1.7.0 https-proxy-agent: 4.0.0 mime: 2.6.0 @@ -41913,7 +41879,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: chalk: 2.4.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) execa: 0.10.0 fs-extra: 6.0.1 get-stream: 5.2.0 @@ -42087,7 +42053,7 @@ packages: /re-resizable@6.9.5(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-Q4+K8gOPbUBmbJCa0qfoVXBGnCwkAJrZ9KUca4GDn5FmxyV2HtLrBz7u43uUOb0y7xKbwcfuftweiOCIDEiCQA==} peerDependencies: - react: ^17.0.2 + react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 dependencies: fast-memoize: 2.5.2 @@ -42097,7 +42063,7 @@ packages: /re-resizable@6.9.5(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-Q4+K8gOPbUBmbJCa0qfoVXBGnCwkAJrZ9KUca4GDn5FmxyV2HtLrBz7u43uUOb0y7xKbwcfuftweiOCIDEiCQA==} peerDependencies: - react: ^17.0.2 + react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 dependencies: fast-memoize: 2.5.2 @@ -42121,7 +42087,7 @@ packages: /react-autosize-textarea@7.1.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==} peerDependencies: - react: ^17.0.2 + react: ^0.14.0 || ^15.0.0 || ^16.0.0 react-dom: ^0.14.0 || ^15.0.0 || ^16.0.0 dependencies: autosize: 4.0.4 @@ -42133,7 +42099,7 @@ packages: /react-colorful@5.5.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==} peerDependencies: - react: ^17.0.2 + react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: react: 17.0.2 @@ -42142,7 +42108,7 @@ packages: /react-colorful@5.6.1(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} peerDependencies: - react: ^17.0.2 + react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: react: 17.0.2 @@ -42151,7 +42117,7 @@ packages: /react-colorful@5.6.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} peerDependencies: - react: ^17.0.2 + react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: react: 17.0.2 @@ -42161,7 +42127,7 @@ packages: resolution: {integrity: sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==} peerDependencies: moment: ^2.18.1 - react: ^17.0.2 + react: ^0.14 || ^15.5.4 || ^16.1.1 react-dom: ^0.14 || ^15.5.4 || ^16.1.1 dependencies: airbnb-prop-types: 2.16.0(react@17.0.2) @@ -42188,7 +42154,7 @@ packages: resolution: {integrity: sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==} peerDependencies: moment: ^2.18.1 - react: ^17.0.2 + react: ^0.14 || ^15.5.4 || ^16.1.1 react-dom: ^0.14 || ^15.5.4 || ^16.1.1 dependencies: airbnb-prop-types: 2.16.0(react@17.0.2) @@ -42216,7 +42182,7 @@ packages: peerDependencies: '@babel/runtime': ^7.0.0 moment: ^2.18.1 - react: ^17.0.2 + react: ^0.14 || ^15.5.4 || ^16.1.1 react-dom: ^0.14 || ^15.5.4 || ^16.1.1 react-with-direction: ^1.3.1 dependencies: @@ -42246,7 +42212,7 @@ packages: peerDependencies: '@babel/runtime': ^7.0.0 moment: ^2.18.1 - react: ^17.0.2 + react: ^0.14 || ^15.5.4 || ^16.1.1 react-dom: ^0.14 || ^15.5.4 || ^16.1.1 react-with-direction: ^1.3.1 dependencies: @@ -42257,7 +42223,7 @@ packages: is-touch-device: 1.0.1 lodash: 4.17.21 moment: 2.29.4 - object.assign: 4.1.2 + object.assign: 4.1.4 object.values: 1.1.5 prop-types: 15.8.1 raf: 3.4.1 @@ -42310,7 +42276,7 @@ packages: /react-dom@16.14.0(react@17.0.2): resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} peerDependencies: - react: ^17.0.2 + react: ^16.14.0 dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 @@ -42321,7 +42287,7 @@ packages: /react-dom@17.0.2(react@17.0.2): resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} peerDependencies: - react: ^17.0.2 + react: 17.0.2 dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 @@ -42331,7 +42297,7 @@ packages: /react-dom@18.2.0(react@17.0.2): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: - react: ^17.0.2 + react: ^18.2.0 dependencies: loose-envify: 1.4.0 react: 17.0.2 @@ -42340,7 +42306,7 @@ packages: /react-easy-crop@3.5.3(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-ApTbh+lzKAvKqYW81ihd5J6ZTNN3vPDwi6ncFuUrHPI4bko2DlYOESkRm+0NYoW0H8YLaD7bxox+Z3EvIzAbUA==} peerDependencies: - react: ^17.0.2 + react: '>=16.4.0' react-dom: '>=16.4.0' dependencies: normalize-wheel: 1.0.1 @@ -42351,7 +42317,7 @@ packages: /react-easy-crop@4.5.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-MVzCWmKXTwZTK0iYqlF/gPLdLqvUGrLGX7SQ4g+DO3b/lCiVAwxZKLeZ1wjDfG+r/yEWUoL7At5a0kkDJeU+rQ==} peerDependencies: - react: ^17.0.2 + react: '>=16.4.0' react-dom: '>=16.4.0' dependencies: normalize-wheel: 1.0.1 @@ -42363,7 +42329,7 @@ packages: /react-element-to-jsx-string@14.3.4(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==} peerDependencies: - react: ^17.0.2 + react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 dependencies: '@base2/pretty-print-object': 1.0.1 @@ -42377,7 +42343,7 @@ packages: resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} engines: {node: '>=10', npm: '>=6'} peerDependencies: - react: ^17.0.2 + react: '>=16.13.1' dependencies: '@babel/runtime': 7.21.0 react: 17.0.2 @@ -42390,7 +42356,7 @@ packages: /react-input-autosize@3.0.0(react@17.0.2): resolution: {integrity: sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==} peerDependencies: - react: ^17.0.2 + react: ^16.3.0 || ^17.0.0 dependencies: prop-types: 15.8.1 react: 17.0.2 @@ -42399,7 +42365,7 @@ packages: /react-inspector@5.1.1(react@17.0.2): resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} peerDependencies: - react: ^17.0.2 + react: ^16.8.4 || ^17.0.0 dependencies: '@babel/runtime': 7.21.0 is-dom: 1.1.0 @@ -42423,7 +42389,7 @@ packages: resolution: {integrity: sha512-duB9bxOaYg7Zt6TMFldIFxQRtSP+Dg3F1ZX3FXxSUn+3tZZ/9JCgeAQKDg7rhZSAqopq8TFRw3yIbnx77gyFTw==} engines: {node: '>=8'} peerDependencies: - react: ^17.0.2 + react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 dependencies: exenv: 1.2.2 @@ -42450,12 +42416,12 @@ packages: moment: 2.29.4 dev: false - /react-native-codegen@0.70.4(@babel/preset-env@7.12.7): + /react-native-codegen@0.70.4(@babel/preset-env@7.20.2): resolution: {integrity: sha512-bPyd5jm840omfx24VRyMP+KPzAefpRDwE18w5ywMWHCWZBSqLn1qI9WgBPnavlIrjTEuzxznWQNcaA26lw8AMQ==} dependencies: '@babel/parser': 7.22.15 flow-parser: 0.121.0 - jscodeshift: 0.13.1(@babel/preset-env@7.12.7) + jscodeshift: 0.13.1(@babel/preset-env@7.20.2) nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' @@ -42469,18 +42435,18 @@ packages: peerDependencies: react-native: '*' dependencies: - react-native: 0.70.0(@babel/core@7.12.9)(@babel/preset-env@7.12.7)(react@17.0.2) + react-native: 0.70.0(@babel/core@7.17.8)(@babel/preset-env@7.20.2)(react@17.0.2) whatwg-url-without-unicode: 8.0.0-3 - /react-native@0.70.0(@babel/core@7.12.9)(@babel/preset-env@7.12.7)(react@17.0.2): + /react-native@0.70.0(@babel/core@7.17.8)(@babel/preset-env@7.20.2)(react@17.0.2): resolution: {integrity: sha512-QjXLbrK9f+/B2eCzn6kAvglLV/8nwPuFGaFv7ggPpAzFRyx5bVN1dwQLHL3MrP7iXR/M7Jc6Nnid7tmRSic6vA==} engines: {node: '>=14'} hasBin: true peerDependencies: - react: ^17.0.2 + react: 18.1.0 dependencies: '@jest/create-cache-key-function': 27.5.1 - '@react-native-community/cli': 9.1.1(@babel/core@7.12.9) + '@react-native-community/cli': 9.1.1(@babel/core@7.17.8) '@react-native-community/cli-platform-android': 9.1.0 '@react-native-community/cli-platform-ios': 9.1.0 '@react-native/assets': 1.0.0 @@ -42493,7 +42459,7 @@ packages: invariant: 2.2.4 jsc-android: 250230.2.1 memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.72.1(@babel/core@7.12.9) + metro-react-native-babel-transformer: 0.72.1(@babel/core@7.17.8) metro-runtime: 0.72.1 metro-source-map: 0.72.1 mkdirp: 0.5.5 @@ -42502,7 +42468,7 @@ packages: promise: 8.2.0 react: 17.0.2 react-devtools-core: 4.24.0 - react-native-codegen: 0.70.4(@babel/preset-env@7.12.7) + react-native-codegen: 0.70.4(@babel/preset-env@7.20.2) react-native-gradle-plugin: 0.70.2 react-refresh: 0.4.3 react-shallow-renderer: 16.15.0(react@17.0.2) @@ -42523,7 +42489,7 @@ packages: /react-outside-click-handler@1.3.0(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==} peerDependencies: - react: ^17.0.2 + react: ^0.14 || >=15 react-dom: ^0.14 || >=15 dependencies: airbnb-prop-types: 2.16.0(react@17.0.2) @@ -42538,7 +42504,7 @@ packages: /react-outside-click-handler@1.3.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==} peerDependencies: - react: ^17.0.2 + react: ^0.14 || >=15 react-dom: ^0.14 || >=15 dependencies: airbnb-prop-types: 2.16.0(react@17.0.2) @@ -42554,7 +42520,7 @@ packages: resolution: {integrity: sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==} peerDependencies: '@popperjs/core': ^2.0.0 - react: ^17.0.2 + react: ^16.8.0 || ^17 dependencies: '@popperjs/core': 2.11.4 react: 17.0.2 @@ -42565,7 +42531,7 @@ packages: /react-portal@4.2.1(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==} peerDependencies: - react: ^17.0.2 + react: ^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0 react-dom: ^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0 dependencies: prop-types: 15.8.1 @@ -42576,7 +42542,7 @@ packages: /react-portal@4.2.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==} peerDependencies: - react: ^17.0.2 + react: ^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0 react-dom: ^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0 dependencies: prop-types: 15.8.1 @@ -42587,7 +42553,7 @@ packages: /react-query@3.39.3(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: '*' react-native: '*' peerDependenciesMeta: @@ -42626,8 +42592,8 @@ packages: resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -42641,8 +42607,8 @@ packages: resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -42660,8 +42626,8 @@ packages: resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -42677,14 +42643,14 @@ packages: /react-resize-aware@3.1.1(react@17.0.2): resolution: {integrity: sha512-M8IyVLBN8D6tEUss+bxQlWte3ZYtNEGhg7rBxtCVG8yEBjUlZwUo5EFLq6tnvTZXcgAbCLjsQn+NCoTJKumRYg==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || 17.x dependencies: react: 17.0.2 /react-router-dom@6.3.0(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} peerDependencies: - react: ^17.0.2 + react: '>=16.8' react-dom: '>=16.8' dependencies: history: 5.3.0 @@ -42696,7 +42662,7 @@ packages: /react-router-dom@6.3.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} peerDependencies: - react: ^17.0.2 + react: '>=16.8' react-dom: '>=16.8' dependencies: history: 5.3.0 @@ -42708,7 +42674,7 @@ packages: /react-router@6.3.0(react@17.0.2): resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} peerDependencies: - react: ^17.0.2 + react: '>=16.8' dependencies: history: 5.3.0 react: 17.0.2 @@ -42717,7 +42683,7 @@ packages: /react-select@3.2.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-B/q3TnCZXEKItO0fFN/I0tWOX3WJvi/X2wtdffmwSQVRwg5BpValScTO1vdic9AxlUgmeSzib2hAZAwIUQUZGQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -42735,7 +42701,7 @@ packages: /react-select@5.7.4(@babel/core@7.17.8)(@types/react@17.0.50)(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-NhuE56X+p9QDFh4BgeygHFIvJJszO1i1KSkg/JPcIJrbovyRtI+GuOEa4XzFCEpZRAEoEI8u/cAHK+jG/PgUzQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@babel/runtime': 7.21.0 @@ -42757,7 +42723,7 @@ packages: /react-shallow-renderer@16.14.1(react@17.0.2): resolution: {integrity: sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==} peerDependencies: - react: ^17.0.2 + react: ^16.0.0 || ^17.0.0 dependencies: object-assign: 4.1.1 react: 17.0.2 @@ -42766,7 +42732,7 @@ packages: /react-shallow-renderer@16.15.0(react@17.0.2): resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: - react: ^17.0.2 + react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 react: 17.0.2 @@ -42785,8 +42751,8 @@ packages: resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -42800,7 +42766,7 @@ packages: /react-syntax-highlighter@15.5.0(react@17.0.2): resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} peerDependencies: - react: ^17.0.2 + react: '>= 0.14.0' dependencies: '@babel/runtime': 7.21.0 highlight.js: 10.7.3 @@ -42813,7 +42779,7 @@ packages: /react-test-renderer@16.14.0(react@17.0.2): resolution: {integrity: sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==} peerDependencies: - react: ^17.0.2 + react: ^16.14.0 dependencies: object-assign: 4.1.1 prop-types: 15.8.1 @@ -42825,7 +42791,7 @@ packages: /react-test-renderer@17.0.2(react@17.0.2): resolution: {integrity: sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==} peerDependencies: - react: ^17.0.2 + react: 17.0.2 dependencies: object-assign: 4.1.1 react: 17.0.2 @@ -42836,7 +42802,7 @@ packages: /react-transition-group@4.4.2(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==} peerDependencies: - react: ^17.0.2 + react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: '@babel/runtime': 7.21.0 @@ -42850,7 +42816,7 @@ packages: /react-transition-group@4.4.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==} peerDependencies: - react: ^17.0.2 + react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: '@babel/runtime': 7.21.0 @@ -42863,7 +42829,7 @@ packages: /react-visibility-sensor@5.1.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-cTUHqIK+zDYpeK19rzW6zF9YfT4486TIgizZW53wEZ+/GPBbK7cNS0EHyJVyHYacwFEvvHLEKfgJndbemWhB/w==} peerDependencies: - react: ^17.0.2 + react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: prop-types: 15.8.1 @@ -42874,7 +42840,7 @@ packages: /react-with-direction@1.4.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==} peerDependencies: - react: ^17.0.2 + react: ^0.14 || ^15 || ^16 react-dom: ^0.14 || ^15 || ^16 dependencies: airbnb-prop-types: 2.16.0(react@17.0.2) @@ -42926,7 +42892,7 @@ packages: /react-with-styles@3.2.3(react-with-direction@1.4.0)(react@17.0.2): resolution: {integrity: sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==} peerDependencies: - react: ^17.0.2 + react: '>=0.14' react-with-direction: ^1.1.0 dependencies: hoist-non-react-statics: 3.3.2 @@ -42940,7 +42906,7 @@ packages: resolution: {integrity: sha512-tZCTY27KriRNhwHIbg1NkSdTTOSfXDg6Z7s+Q37mtz0Ym7Sc7IOr3PzVt4qJhJMW6Nkvfi3g34FuhtiGAJCBQA==} peerDependencies: '@babel/runtime': ^7.0.0 - react: ^17.0.2 + react: '>=0.14' react-with-direction: ^1.3.1 dependencies: '@babel/runtime': 7.17.7 @@ -42956,7 +42922,7 @@ packages: resolution: {integrity: sha512-tZCTY27KriRNhwHIbg1NkSdTTOSfXDg6Z7s+Q37mtz0Ym7Sc7IOr3PzVt4qJhJMW6Nkvfi3g34FuhtiGAJCBQA==} peerDependencies: '@babel/runtime': ^7.0.0 - react: ^17.0.2 + react: '>=0.14' react-with-direction: ^1.3.1 dependencies: '@babel/runtime': 7.21.0 @@ -43120,7 +43086,7 @@ packages: /reakit-system@0.15.2(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-TvRthEz0DmD0rcJkGamMYx+bATwnGNWJpe/lc8UV2Js8nnPvkaxrHk5fX9cVASFrWbaIyegZHCWUBfxr30bmmA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: react: 17.0.2 @@ -43131,7 +43097,7 @@ packages: /reakit-system@0.15.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-TvRthEz0DmD0rcJkGamMYx+bATwnGNWJpe/lc8UV2Js8nnPvkaxrHk5fX9cVASFrWbaIyegZHCWUBfxr30bmmA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: react: 17.0.2 @@ -43141,7 +43107,7 @@ packages: /reakit-utils@0.15.2(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-i/RYkq+W6hvfFmXw5QW7zvfJJT/K8a4qZ0hjA79T61JAFPGt23DsfxwyBbyK91GZrJ9HMrXFVXWMovsKBc1qEQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: react: 17.0.2 @@ -43151,7 +43117,7 @@ packages: /reakit-utils@0.15.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-i/RYkq+W6hvfFmXw5QW7zvfJJT/K8a4qZ0hjA79T61JAFPGt23DsfxwyBbyK91GZrJ9HMrXFVXWMovsKBc1qEQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: react: 17.0.2 @@ -43160,7 +43126,7 @@ packages: /reakit-warning@0.6.2(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-z/3fvuc46DJyD3nJAUOto6inz2EbSQTjvI/KBQDqxwB0y02HDyeP8IWOJxvkuAUGkWpeSx+H3QWQFSNiPcHtmw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 dependencies: react: 17.0.2 reakit-utils: 0.15.2(react-dom@16.14.0)(react@17.0.2) @@ -43171,7 +43137,7 @@ packages: /reakit-warning@0.6.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-z/3fvuc46DJyD3nJAUOto6inz2EbSQTjvI/KBQDqxwB0y02HDyeP8IWOJxvkuAUGkWpeSx+H3QWQFSNiPcHtmw==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 dependencies: react: 17.0.2 reakit-utils: 0.15.2(react-dom@17.0.2)(react@17.0.2) @@ -43181,7 +43147,7 @@ packages: /reakit@1.3.11(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-mYxw2z0fsJNOQKAEn5FJCPTU3rcrY33YZ/HzoWqZX0G7FwySp1wkCYW79WhuYMNIUFQ8s3Baob1RtsEywmZSig==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: '@popperjs/core': 2.11.4 @@ -43196,7 +43162,7 @@ packages: /reakit@1.3.11(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-mYxw2z0fsJNOQKAEn5FJCPTU3rcrY33YZ/HzoWqZX0G7FwySp1wkCYW79WhuYMNIUFQ8s3Baob1RtsEywmZSig==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: '@popperjs/core': 2.11.4 @@ -43310,6 +43276,7 @@ packages: resolution: {integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==} dependencies: '@babel/runtime': 7.21.0 + dev: true /regenerator-transform@0.15.0: resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} @@ -44049,7 +44016,7 @@ packages: sass: 1.60.0 schema-utils: 3.1.1 semver: 7.5.0 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /sass-loader@12.6.0(sass@1.60.0)(webpack@5.76.3): @@ -44263,6 +44230,7 @@ packages: /semver@7.0.0: resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} hasBin: true + dev: true /semver@7.3.5: resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} @@ -44515,7 +44483,7 @@ packages: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -44526,7 +44494,7 @@ packages: resolution: {integrity: sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw==} dependencies: buffer: 6.0.3 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) err-code: 3.0.1 get-browser-rtc: 1.1.0 queue-microtask: 1.2.3 @@ -44700,7 +44668,7 @@ packages: engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) socks: 2.7.0 transitivePeerDependencies: - supports-color @@ -44711,7 +44679,7 @@ packages: engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) socks: 2.7.0 transitivePeerDependencies: - supports-color @@ -44871,7 +44839,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -44884,7 +44852,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -45315,7 +45283,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.1.1 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /style-search@0.1.0: @@ -45506,7 +45474,7 @@ packages: balanced-match: 2.0.0 chalk: 4.1.2 cosmiconfig: 7.0.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) execall: 2.0.0 fast-glob: 3.2.7 fastest-levenshtein: 1.0.12 @@ -45565,7 +45533,7 @@ packages: balanced-match: 1.0.2 chalk: 4.1.2 cosmiconfig: 7.0.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) execall: 2.0.0 fast-glob: 3.2.11 fastest-levenshtein: 1.0.12 @@ -45622,7 +45590,7 @@ packages: colord: 2.9.2 cosmiconfig: 7.0.1 css-functions-list: 3.0.1 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) execall: 2.0.0 fast-glob: 3.2.11 fastest-levenshtein: 1.0.12 @@ -45685,7 +45653,7 @@ packages: dependencies: component-emitter: 1.3.0 cookiejar: 2.1.3 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 2.0.1 @@ -45752,6 +45720,7 @@ packages: /supports-color@9.2.2: resolution: {integrity: sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==} engines: {node: '>=12'} + dev: true /supports-hyperlinks@2.2.0: resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} @@ -46149,7 +46118,7 @@ packages: serialize-javascript: 6.0.0 source-map: 0.6.1 terser: 5.10.0(acorn@8.8.1) - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) transitivePeerDependencies: - acorn dev: true @@ -47358,7 +47327,7 @@ packages: loader-utils: 1.4.0 mime: 2.6.0 schema-utils: 1.0.0 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /url-loader@3.0.0(webpack@4.46.0): @@ -47441,8 +47410,8 @@ packages: resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -47454,7 +47423,7 @@ packages: /use-debounce@3.4.3(react@17.0.2): resolution: {integrity: sha512-nxy+opOxDccWfhMl36J5BSCTpvcj89iaQk2OZWLAtBJQj7ISCtx1gh+rFbdjGfMl6vtCZf6gke/kYvrkVfHMoA==} peerDependencies: - react: ^17.0.2 + react: '>=16.8.0' dependencies: react: 17.0.2 dev: false @@ -47463,7 +47432,7 @@ packages: resolution: {integrity: sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==} peerDependencies: '@types/react': '*' - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -47476,7 +47445,7 @@ packages: resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -47487,7 +47456,7 @@ packages: /use-lilius@2.0.3(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-+Q7nspdv+QGnyHGVMd6yAdLrqv5EGB4n3ix4GJH0JEE27weKCLCLmZSuAr5Nw+yPBCZn/iZ+KjL5+UykLCWXrw==} peerDependencies: - react: ^17.0.2 + react: '*' react-dom: '*' dependencies: date-fns: 2.29.3 @@ -47497,14 +47466,14 @@ packages: /use-memo-one@1.1.2(react@17.0.2): resolution: {integrity: sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 dependencies: react: 17.0.2 /use-resize-observer@9.1.0(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} peerDependencies: - react: ^17.0.2 + react: 16.8.0 - 18 react-dom: 16.8.0 - 18 dependencies: '@juggle/resize-observer': 3.4.0 @@ -47516,8 +47485,8 @@ packages: resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^17.0.2 - react: ^17.0.2 + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -47530,14 +47499,14 @@ packages: /use-subscription@1.6.0(react@17.0.2): resolution: {integrity: sha512-0Y/cTLlZfw547tJhJMoRA16OUbVqRm6DmvGpiGbmLST6BIA5KU5cKlvlz8DVMrACnWpyEjCkgmhLatthP4jUbA==} peerDependencies: - react: ^17.0.2 + react: ^18.0.0 dependencies: react: 17.0.2 /use-sync-external-store@1.2.0(react@17.0.2): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: - react: ^17.0.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 17.0.2 @@ -47700,7 +47669,7 @@ packages: '@babel/types': '>=7.13' aslemammad-vite-plugin-macro: '>=1.0.0-alpha.1' babel-plugin-macros: '>=3.0' - react: ^17.0.2 + react: '>=16.8' vite: '>=2.8.6' peerDependenciesMeta: '@babel/helper-module-imports': @@ -47729,7 +47698,7 @@ packages: '@babel/types': '>=7.13' aslemammad-vite-plugin-macro: '>=1.0.0-alpha.1' babel-plugin-macros: '>=3.0' - react: ^17.0.2 + react: '>=16.8' vite: '>=2.8.6' peerDependenciesMeta: '@babel/helper-module-imports': @@ -47907,7 +47876,7 @@ packages: dependencies: chalk: 2.4.2 commander: 3.0.2 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -48198,7 +48167,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 3.1.1 - webpack: 5.76.3(webpack-cli@4.9.2) + webpack: 5.76.3(webpack-cli@3.3.12) dev: true /webpack-dev-middleware@5.3.3(webpack@5.70.0): @@ -48908,7 +48877,7 @@ packages: resolution: {integrity: sha512-NMp0YsBM40CuI5vWtHpjWOuf96rPfbpGkamlJpVwYvgenIh1ynRzqVnGfsnjofgz13T2qcKkdwJY0Y2X7z+W+w==} dependencies: '@babel/runtime': 7.21.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) progress-event: 1.0.0 uuid: 7.0.3 wp-error: 1.3.0 @@ -49391,7 +49360,7 @@ packages: cli-table: 0.3.11 commander: 7.1.0 dateformat: 4.6.3 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) diff: 5.1.0 error: 10.4.0 escape-string-regexp: 4.0.0 @@ -49435,7 +49404,7 @@ packages: dependencies: chalk: 4.1.2 dargs: 7.0.0 - debug: 4.3.4(supports-color@9.2.2) + debug: 4.3.4(supports-color@8.1.1) execa: 5.1.1 github-username: 6.0.0 lodash: 4.17.21 From 5b06aace5424707c9a0f578c0968a60a60442b0a Mon Sep 17 00:00:00 2001 From: Jonathan Lane Date: Wed, 27 Sep 2023 07:35:06 -0700 Subject: [PATCH 65/81] Allow e2e tests to use dotfiles for configuration (#40361) * Allow e2e tests to use dotfiles for configuration * Fix lint errors * Fix lint errors * Linter strikes again * Again --------- Co-authored-by: Jon Lane --- .../changelog/e2e-enable-dotfiles-e2e-runs | 4 ++ plugins/woocommerce/tests/e2e-pw/README.md | 37 ++++++++++++++----- .../tests/e2e-pw/playwright.config.js | 2 + 3 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 plugins/woocommerce/changelog/e2e-enable-dotfiles-e2e-runs diff --git a/plugins/woocommerce/changelog/e2e-enable-dotfiles-e2e-runs b/plugins/woocommerce/changelog/e2e-enable-dotfiles-e2e-runs new file mode 100644 index 00000000000..303bdddad97 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-enable-dotfiles-e2e-runs @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Allow e2e tests to use dotfiles for configuration (including documentation update) diff --git a/plugins/woocommerce/tests/e2e-pw/README.md b/plugins/woocommerce/tests/e2e-pw/README.md index a42c8fbcd68..d80d8db6992 100644 --- a/plugins/woocommerce/tests/e2e-pw/README.md +++ b/plugins/woocommerce/tests/e2e-pw/README.md @@ -54,6 +54,7 @@ Other ways of running tests (make sure you are in the `plugins/woocommerce` fold - `pnpm test:e2e-pw --debug` (runs tests in debug mode) - `pnpm test:e2e-pw ./tests/e2e-pw/tests/activate-and-setup/basic-setup.spec.js` (runs a single test) - `pnpm test:e2e-pw --ui` (open tests in [Playwright UI mode](https://playwright.dev/docs/test-ui-mode)). You may need to increase the [test timeout](https://playwright.dev/docs/api/class-testconfig#test-config-timeout) by setting the `DEFAULT_TIMEOUT_OVERRIDE` environment variable like so: + ```bash # Increase test timeout to 3 minutes export DEFAULT_TIMEOUT_OVERRIDE=180000 @@ -66,15 +67,29 @@ To see all options, make sure you are in the `plugins/woocommerce` folder and ru The default values are: -- Latest stable WordPress version -- PHP 7.4 -- Latest stable WordPress version -- MariaDB -- URL: `http://localhost:8086/` -- Admin credentials: `admin/password` +- Latest stable WordPress version +- PHP 7.4 +- Latest stable WordPress version +- MariaDB +- URL: `http://localhost:8086/` +- Admin credentials: `admin/password` For more information how to configure the test environment for `wp-env`, please checkout the [documentation](https://github.com/WordPress/gutenberg/tree/trunk/packages/env) documentation. +#### Alternate environments + +If you'd like to run the test suite against an alternate environment (external host for example), you can create a `.env` file in `tests/e2e-pw/` containing the following values: + +```bash +BASE_URL='https://www.example.com' +ADMIN_USER='admin.username' +ADMIN_PASSWORD='admin.password' +CUSTOMER_USER='customer.username' +CUSTOMER_PASSWORD='customer.password' +DEFAULT_TIMEOUT_OVERRIDE=100000 + +``` + ### Test Variables The test environment uses the following test variables: @@ -97,11 +112,11 @@ The test environment uses the following test variables: If you need to modify the port for your local test environment (eg. port is already in use) or use, edit [playwright.config.js](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/tests/e2e/playwright.config.js). Depending on what environment tool you are using, you will need to also edit the respective `.json` file. -**Modiify the port wp-env** +#### Modify the port wp-env Edit [.wp-env.json](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/.wp-env.json) and [playwright.config.js](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/tests/e2e/playwright.config.js). -**Modify port for e2e-environment** +#### Modify port for e2e-environment Edit [tests/e2e/config/default.json](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/tests/e2e/config/default.json).\*\*\*\* @@ -116,6 +131,8 @@ After you run a test, it's best to restart the environment to start from a fresh ## Guide for writing e2e tests +### Tools for writing tests + ### Creating test structure It is a good practice to start working on the test by identifying what needs to be tested on the higher and lower levels. For example, if you are writing a test to verify that merchant can create a virtual product, the overview of the test will be as follows: @@ -198,14 +215,14 @@ A browser window should open the Allure report. If you're on [WSL](https://learn.microsoft.com/en-us/windows/wsl/about) however, you might get this message right after running the `allure open` command: -``` +```bash Starting web server... 2022-12-09 18:52:01.323:INFO::main: Logging initialized @286ms to org.eclipse.jetty.util.log.StdErrLog Can not open browser because this capability is not supported on your platform. You can use the link below to open the report manually. Server started at . Press to exit ``` -In this case, take note of the port number (38917 in the example above) and then use it to navigate to `http://localhost`. Taking the example above, you should be able to view the Allure report on http://localhost:38917. +In this case, take note of the port number (38917 in the example above) and then use it to navigate to localhost. Taking the example above, you should be able to view the Allure report on localhost:38917 in your browser. To know more about the allure-playwright integration, see their [GitHub documentation](https://github.com/allure-framework/allure-js/tree/master/packages/allure-playwright). diff --git a/plugins/woocommerce/tests/e2e-pw/playwright.config.js b/plugins/woocommerce/tests/e2e-pw/playwright.config.js index ba8bcf300a5..db5b6090c30 100644 --- a/plugins/woocommerce/tests/e2e-pw/playwright.config.js +++ b/plugins/woocommerce/tests/e2e-pw/playwright.config.js @@ -1,4 +1,6 @@ const { devices } = require( '@playwright/test' ); +require( 'dotenv' ).config( { path: __dirname + '/.env' } ); + const { ALLURE_RESULTS_DIR, BASE_URL, From e6df583c658425ada5ae1379a335aaa78c6eed95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maikel=20David=20P=C3=A9rez=20G=C3=B3mez?= Date: Wed, 27 Sep 2023 11:19:49 -0400 Subject: [PATCH 66/81] Add a visibility toggle to the Quick actions list (#40464) * Create toggle-visibility-menu-item component * Add toggle-visibility-menu-item to variation-actions-menu * Add toggle-visibility-menu-item to variations-actions-menu * Add changelog file --- .../js/product-editor/changelog/add-40215 | 4 ++ .../toggle-visibility-menu-item/index.ts | 1 + .../toggle-visibility-menu-item.tsx | 62 +++++++++++++++++++ .../variation-actions-menu.tsx | 6 ++ .../variations-actions-menu.tsx | 6 ++ 5 files changed, 79 insertions(+) create mode 100644 packages/js/product-editor/changelog/add-40215 create mode 100644 packages/js/product-editor/src/components/variations-table/toggle-visibility-menu-item/index.ts create mode 100644 packages/js/product-editor/src/components/variations-table/toggle-visibility-menu-item/toggle-visibility-menu-item.tsx diff --git a/packages/js/product-editor/changelog/add-40215 b/packages/js/product-editor/changelog/add-40215 new file mode 100644 index 00000000000..213a67ec0f0 --- /dev/null +++ b/packages/js/product-editor/changelog/add-40215 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add a visibility toggle to the Quick actions list diff --git a/packages/js/product-editor/src/components/variations-table/toggle-visibility-menu-item/index.ts b/packages/js/product-editor/src/components/variations-table/toggle-visibility-menu-item/index.ts new file mode 100644 index 00000000000..198000ac60d --- /dev/null +++ b/packages/js/product-editor/src/components/variations-table/toggle-visibility-menu-item/index.ts @@ -0,0 +1 @@ +export * from './toggle-visibility-menu-item'; diff --git a/packages/js/product-editor/src/components/variations-table/toggle-visibility-menu-item/toggle-visibility-menu-item.tsx b/packages/js/product-editor/src/components/variations-table/toggle-visibility-menu-item/toggle-visibility-menu-item.tsx new file mode 100644 index 00000000000..b000ac2daeb --- /dev/null +++ b/packages/js/product-editor/src/components/variations-table/toggle-visibility-menu-item/toggle-visibility-menu-item.tsx @@ -0,0 +1,62 @@ +/** + * External dependencies + */ +import { MenuItem } from '@wordpress/components'; +import { createElement } from '@wordpress/element'; +import { __ } from '@wordpress/i18n'; +import { recordEvent } from '@woocommerce/tracks'; + +/** + * Internal dependencies + */ +import { TRACKS_SOURCE } from '../../../constants'; +import { VariationActionsMenuItemProps } from '../types'; + +export function ToggleVisibilityMenuItem( { + selection, + onChange, + onClose, +}: VariationActionsMenuItemProps ) { + function toggleStatus( currentStatus: string ) { + return currentStatus === 'private' ? 'publish' : 'private'; + } + + function handleMenuItemClick() { + const ids = Array.isArray( selection ) + ? selection.map( ( { id } ) => id ) + : selection.id; + + recordEvent( 'product_variations_menu_toggle_visibility_select', { + source: TRACKS_SOURCE, + action: 'status_set', + variation_id: ids, + } ); + + if ( Array.isArray( selection ) ) { + onChange( + selection.map( ( { id, status } ) => ( { + id, + status: toggleStatus( status ), + } ) ) + ); + } else { + onChange( { + status: toggleStatus( selection.status ), + } ); + } + + recordEvent( 'product_variations_toggle_visibility_update', { + source: TRACKS_SOURCE, + action: 'status_set', + variation_id: ids, + } ); + + onClose(); + } + + return ( + + { __( 'Toggle visibility', 'woocommerce' ) } + + ); +} diff --git a/packages/js/product-editor/src/components/variations-table/variation-actions-menu/variation-actions-menu.tsx b/packages/js/product-editor/src/components/variations-table/variation-actions-menu/variation-actions-menu.tsx index fff3ed00a8e..a49e36d41e6 100644 --- a/packages/js/product-editor/src/components/variations-table/variation-actions-menu/variation-actions-menu.tsx +++ b/packages/js/product-editor/src/components/variations-table/variation-actions-menu/variation-actions-menu.tsx @@ -15,6 +15,7 @@ import { TRACKS_SOURCE } from '../../../constants'; import { ShippingMenuItem } from '../shipping-menu-item'; import { InventoryMenuItem } from '../inventory-menu-item'; import { PricingMenuItem } from '../pricing-menu-item'; +import { ToggleVisibilityMenuItem } from '../toggle-visibility-menu-item'; export function VariationActionsMenu( { selection, @@ -56,6 +57,11 @@ export function VariationActionsMenu( { > { __( 'Preview', 'woocommerce' ) } + + Date: Wed, 27 Sep 2023 13:03:13 -0300 Subject: [PATCH 67/81] Add E2E test to check if all blocks render correctly in product editor (#40358) * Add E2E test to check if all blocks render correctly in product editor * Add changelog * Fix matcher for warning --- .../add-product-editor-block-render-e2e-test | 4 +++ ...create-simple-product-block-editor.spec.js | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-product-editor-block-render-e2e-test diff --git a/plugins/woocommerce/changelog/add-product-editor-block-render-e2e-test b/plugins/woocommerce/changelog/add-product-editor-block-render-e2e-test new file mode 100644 index 00000000000..31e144483cc --- /dev/null +++ b/plugins/woocommerce/changelog/add-product-editor-block-render-e2e-test @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add new E2E test for the product editor to check if all blocks render correctly. diff --git a/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/create-simple-product-block-editor.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/create-simple-product-block-editor.spec.js index 6cf141b2e54..b5d58a7328a 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/create-simple-product-block-editor.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/create-simple-product-block-editor.spec.js @@ -23,6 +23,40 @@ const productData = { test.describe.configure( { mode: 'serial' } ); test.describe( 'General tab', () => { + test.describe( 'Simple product form', () => { + test.use( { storageState: process.env.ADMINSTATE } ); + + test.beforeEach( async ( { browser } ) => { + const context = await browser.newContext(); + const page = await context.newPage(); + isNewProductEditorEnabled = await isBlockProductEditorEnabled( + page + ); + if ( ! isNewProductEditorEnabled ) { + await toggleBlockProductEditor( 'enable', page ); + } + } ); + + test.afterEach( async ( { browser } ) => { + const context = await browser.newContext(); + const page = await context.newPage(); + isNewProductEditorEnabled = await isBlockProductEditorEnabled( + page + ); + if ( isNewProductEditorEnabled ) { + await toggleBlockProductEditor( 'disable', page ); + } + } ); + + test( 'renders each block without error', async ( { page } ) => { + await page.goto( NEW_EDITOR_ADD_PRODUCT_URL ); + await clickOnTab( 'General', page ); + await page.getByPlaceholder( 'e.g. 12 oz Coffee Mug' ).isVisible(); + + expect( page.locator( '.block-editor-warning' ) ).toHaveCount( 0 ); + } ); + } ); + test.describe( 'Create product', () => { let productId; test.use( { storageState: process.env.ADMINSTATE } ); From 8edcb06348ea390875f6f2f94a02f04d8cdf7c46 Mon Sep 17 00:00:00 2001 From: Nathan Silveira Date: Wed, 27 Sep 2023 15:07:52 -0300 Subject: [PATCH 68/81] Add block documentation to woocommerce/product-checkbox-field (#40277) * Rename block description * Add documentation for product checkbox field * Add changelog * Improve README * Add description to block's attributes * Replace example * Add markdown table with documentation * Move image to developer.woocommerce.com * Iterate documentation * Address lints --- .../changelog/doc-checkbox-field | 5 ++ .../src/blocks/checkbox/README.md | 67 +++++++++++++++++++ .../src/blocks/checkbox/block.json | 2 +- 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 packages/js/product-editor/changelog/doc-checkbox-field create mode 100644 packages/js/product-editor/src/blocks/checkbox/README.md diff --git a/packages/js/product-editor/changelog/doc-checkbox-field b/packages/js/product-editor/changelog/doc-checkbox-field new file mode 100644 index 00000000000..5511eef2c79 --- /dev/null +++ b/packages/js/product-editor/changelog/doc-checkbox-field @@ -0,0 +1,5 @@ +Significance: patch +Type: enhancement +Comment: Add documentation for woocommerce/product-checkbox-field + + diff --git a/packages/js/product-editor/src/blocks/checkbox/README.md b/packages/js/product-editor/src/blocks/checkbox/README.md new file mode 100644 index 00000000000..ddbad959b38 --- /dev/null +++ b/packages/js/product-editor/src/blocks/checkbox/README.md @@ -0,0 +1,67 @@ +# woocommerce/product-checkbox-field + +A reusable checkbox for the product editor. + +![Product checkbox field screenshot](https://woocommerce.files.wordpress.com/2023/09/checkbox.png) + +_Please note that to persist a custom field in the product it also needs to be added to the WooCommerce REST API._ + +## Attributes + +### title + +- **Type:** `String` +- **Required:** `No` + +Header that appears above the checkbox. + +### label + +- **Type:** `String` +- **Required:** `No` + +Label that appears at the side of the checkbox. + +### property + +- **Type:** `String` +- **Required:** `Yes` + +Property in which the checkbox value is stored. + +### tooltip + +- **Type:** `String` +- **Required:** `No` + +Tooltip text that is shown when hovering the icon at the side of the label. + +## Example + +Here's an example on the code that is used for the 'sold_individually' field in the Inventory section: + +```php +$parent_container->add_block( + [ + 'id' => 'product-limit-purchase', + 'blockName' => 'woocommerce/product-checkbox-field', + 'order' => 20, + 'attributes' => [ + 'title' => __( + 'Restrictions', + 'woocommerce' + ), + 'label' => __( + 'Limit purchases to 1 item per order', + 'woocommerce' + ), + 'property' => 'sold_individually', + 'tooltip' => __( + 'When checked, customers will be able to purchase only 1 item in a single order. This is particularly useful for items that have limited quantity, like art or handmade goods.', + 'woocommerce' + ), + ], + ] +); +``` + diff --git a/packages/js/product-editor/src/blocks/checkbox/block.json b/packages/js/product-editor/src/blocks/checkbox/block.json index c2b2f4e53b5..88d0fafa767 100644 --- a/packages/js/product-editor/src/blocks/checkbox/block.json +++ b/packages/js/product-editor/src/blocks/checkbox/block.json @@ -4,7 +4,7 @@ "name": "woocommerce/product-checkbox-field", "title": "Product checkbox control", "category": "woocommerce", - "description": "The product checkbox.", + "description": "A reusable checkbox for the product editor.", "keywords": [ "products", "checkbox", "input" ], "textdomain": "default", "attributes": { From 1e35d45c99e677cc07b3b668446b5ec1cdf4303d Mon Sep 17 00:00:00 2001 From: Matt Sherman Date: Wed, 27 Sep 2023 16:38:56 -0400 Subject: [PATCH 69/81] Template API: Expose template block id and order to client (#40263) * Update unit tests to handle _templateBlockId and _templateBlockOrder * Refactor get_formatted_template * Initial @woocommerce/block-templates package * Add block-templates to admin webpack * Add block-templates to dependency-extraction-webpack-plugin * Add block-templates to admin assets * Add block-templates dependency * Update name block * Update syncpack * Update regular price block * Update tab block * Update section block * Add @wordpress/deprecated to package * Deprecated initBlock * Update attributes block * Update catalog visibility block * Update checkbox block * Update conditional block * Update collapsible block * Allow additional props to be passed to useWooBlockProps * Update inventory sku block * Update inventory quantity block * Update inventory email block * Update images block * Update description block * Update radio block * Update pricing block * Update password block * Update notice block * Update shipping dimensions block * Update shipping class block * Update schedule sale block * Update sale price block * Update toggle block * Update taxonomy block * Update tag block * Update summary block * Update variations block * Update variations options block * Update variation items blocks * Changelog * Changelog * Changelog * Changelog * Changelog * Add test for registerWooBlockType * Add @testing-library/react-hooks to devDependencies * Add test for useWooBlockProps * Document API * Fix linting issues in README.md * Fix tabs tests by mocking useWooBlockProps * Allow header duplication under different nesting * Remove unused import (fixes lint error) * Update lock file --- .markdownlint.json | 1 + .syncpackrc | 1 + packages/js/block-templates/.eslintrc.js | 12 + packages/js/block-templates/.npmrc | 1 + packages/js/block-templates/README.md | 70 + packages/js/block-templates/babel.config.js | 3 + packages/js/block-templates/changelog.md | 3 + .../changelog/add-expose-block-id-and-order | 4 + packages/js/block-templates/composer.json | 32 + packages/js/block-templates/composer.lock | 483 +++++ packages/js/block-templates/jest.config.json | 4 + packages/js/block-templates/package.json | 76 + .../js/block-templates/src/hooks/index.ts | 1 + .../src/hooks/use-woo-block-props/index.ts | 1 + .../test/use-woo-block-props.test.ts | 37 + .../use-woo-block-props.ts | 24 + packages/js/block-templates/src/index.ts | 2 + packages/js/block-templates/src/style.scss | 0 .../js/block-templates/src/utils/index.ts | 1 + .../src/utils/register-woo-block-type.ts | 51 + .../test/register-woo-block-type.test.ts | 59 + packages/js/block-templates/tsconfig-cjs.json | 16 + packages/js/block-templates/tsconfig.json | 20 + packages/js/block-templates/webpack.config.js | 19 + .../assets/packages.js | 1 + .../changelog/add-expose-block-id-and-order | 4 + .../changelog/add-expose-block-id-and-order | 4 + packages/js/product-editor/package.json | 2 + .../src/blocks/attributes/edit.tsx | 7 +- .../src/blocks/attributes/index.ts | 8 +- .../src/blocks/catalog-visibility/edit.tsx | 4 +- .../src/blocks/catalog-visibility/index.ts | 4 +- .../src/blocks/checkbox/edit.tsx | 5 +- .../src/blocks/checkbox/index.ts | 4 +- .../src/blocks/collapsible/edit.tsx | 5 +- .../src/blocks/collapsible/index.ts | 8 +- .../src/blocks/conditional/edit.tsx | 5 +- .../src/blocks/conditional/index.ts | 8 +- .../src/blocks/description/edit.tsx | 16 +- .../src/blocks/description/index.ts | 4 +- .../product-editor/src/blocks/images/edit.tsx | 7 +- .../product-editor/src/blocks/images/index.ts | 8 +- .../src/blocks/inventory-email/edit.tsx | 5 +- .../src/blocks/inventory-email/index.ts | 5 +- .../src/blocks/inventory-quantity/edit.tsx | 5 +- .../src/blocks/inventory-quantity/index.ts | 5 +- .../src/blocks/inventory-sku/edit.tsx | 7 +- .../src/blocks/inventory-sku/index.ts | 4 +- .../product-editor/src/blocks/name/edit.tsx | 4 +- .../product-editor/src/blocks/name/index.ts | 8 +- .../product-editor/src/blocks/notice/edit.tsx | 4 +- .../product-editor/src/blocks/notice/index.ts | 4 +- .../src/blocks/password/edit.tsx | 4 +- .../src/blocks/password/index.ts | 4 +- .../src/blocks/pricing/edit.tsx | 4 +- .../src/blocks/pricing/index.ts | 4 +- .../product-editor/src/blocks/radio/edit.tsx | 4 +- .../product-editor/src/blocks/radio/index.ts | 4 +- .../src/blocks/regular-price/edit.tsx | 4 +- .../src/blocks/regular-price/index.ts | 4 +- .../src/blocks/sale-price/edit.tsx | 4 +- .../src/blocks/sale-price/index.ts | 4 +- .../src/blocks/schedule-sale/edit.tsx | 5 +- .../src/blocks/schedule-sale/index.ts | 5 +- .../src/blocks/section/edit.tsx | 4 +- .../src/blocks/section/index.ts | 5 +- .../src/blocks/shipping-class/edit.tsx | 8 +- .../src/blocks/shipping-class/index.ts | 5 +- .../src/blocks/shipping-dimensions/edit.tsx | 5 +- .../src/blocks/shipping-dimensions/index.ts | 5 +- .../src/blocks/summary/edit.tsx | 4 +- .../src/blocks/summary/index.ts | 4 +- .../js/product-editor/src/blocks/tab/edit.tsx | 5 +- .../js/product-editor/src/blocks/tab/index.ts | 4 +- .../js/product-editor/src/blocks/tag/edit.tsx | 4 +- .../js/product-editor/src/blocks/tag/index.ts | 8 +- .../src/blocks/taxonomy/edit.tsx | 4 +- .../src/blocks/taxonomy/index.ts | 8 +- .../product-editor/src/blocks/toggle/edit.tsx | 4 +- .../product-editor/src/blocks/toggle/index.ts | 4 +- .../src/blocks/variation-items/edit.tsx | 5 +- .../src/blocks/variation-items/index.ts | 4 +- .../src/blocks/variation-options/edit.tsx | 9 +- .../src/blocks/variation-options/index.ts | 5 +- .../src/blocks/variations/edit.tsx | 4 +- .../src/blocks/variations/index.ts | 5 +- .../src/components/tabs/test/tabs.spec.tsx | 6 +- .../js/product-editor/src/utils/init-block.ts | 16 +- plugins/woocommerce-admin/webpack.config.js | 1 + .../changelog/add-expose-block-id-and-order | 5 + plugins/woocommerce-beta-tester/package.json | 6 +- .../changelog/add-expose-block-id-and-order | 4 + .../Admin/BlockTemplates/AbstractBlock.php | 15 +- .../BlockTemplates/BlockContainerTrait.php | 9 +- .../BlockFormattedTemplateTrait.php | 28 + .../src/Internal/Admin/WCAdminAssets.php | 10 + .../BlockTemplates/BlockTemplateTest.php | 97 +- .../Admin/BlockTemplates/BlockTest.php | 47 +- .../Admin/BlockTemplates/CustomBlockTest.php | 22 +- pnpm-lock.yaml | 1750 +++++++++-------- 100 files changed, 2242 insertions(+), 1013 deletions(-) create mode 100644 packages/js/block-templates/.eslintrc.js create mode 100644 packages/js/block-templates/.npmrc create mode 100644 packages/js/block-templates/README.md create mode 100644 packages/js/block-templates/babel.config.js create mode 100644 packages/js/block-templates/changelog.md create mode 100644 packages/js/block-templates/changelog/add-expose-block-id-and-order create mode 100644 packages/js/block-templates/composer.json create mode 100644 packages/js/block-templates/composer.lock create mode 100644 packages/js/block-templates/jest.config.json create mode 100644 packages/js/block-templates/package.json create mode 100644 packages/js/block-templates/src/hooks/index.ts create mode 100644 packages/js/block-templates/src/hooks/use-woo-block-props/index.ts create mode 100644 packages/js/block-templates/src/hooks/use-woo-block-props/test/use-woo-block-props.test.ts create mode 100644 packages/js/block-templates/src/hooks/use-woo-block-props/use-woo-block-props.ts create mode 100644 packages/js/block-templates/src/index.ts create mode 100644 packages/js/block-templates/src/style.scss create mode 100644 packages/js/block-templates/src/utils/index.ts create mode 100644 packages/js/block-templates/src/utils/register-woo-block-type.ts create mode 100644 packages/js/block-templates/src/utils/test/register-woo-block-type.test.ts create mode 100644 packages/js/block-templates/tsconfig-cjs.json create mode 100644 packages/js/block-templates/tsconfig.json create mode 100644 packages/js/block-templates/webpack.config.js create mode 100644 packages/js/dependency-extraction-webpack-plugin/changelog/add-expose-block-id-and-order create mode 100644 packages/js/product-editor/changelog/add-expose-block-id-and-order create mode 100644 plugins/woocommerce-beta-tester/changelog/add-expose-block-id-and-order create mode 100644 plugins/woocommerce/changelog/add-expose-block-id-and-order create mode 100644 plugins/woocommerce/src/Internal/Admin/BlockTemplates/BlockFormattedTemplateTrait.php diff --git a/.markdownlint.json b/.markdownlint.json index 0d203db7f51..57085409db7 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -3,6 +3,7 @@ "MD003": { "style": "atx" }, "MD007": { "indent": 4 }, "MD013": { "line_length": 9999 }, + "MD024": { "allow_different_nesting": true }, "no-hard-tabs": false, "whitespace": false } diff --git a/.syncpackrc b/.syncpackrc index 53bc93c13f5..c9332c8ff8d 100644 --- a/.syncpackrc +++ b/.syncpackrc @@ -118,6 +118,7 @@ "@wordpress/edit-site" ], "packages": [ + "@woocommerce/block-templates", "@woocommerce/product-editor", "woocommerce/client/admin", "@woocommerce/components" diff --git a/packages/js/block-templates/.eslintrc.js b/packages/js/block-templates/.eslintrc.js new file mode 100644 index 00000000000..e7aa0662678 --- /dev/null +++ b/packages/js/block-templates/.eslintrc.js @@ -0,0 +1,12 @@ +module.exports = { + extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ], + root: true, + overrides: [ + { + files: [ '**/*.js', '**/*.jsx', '**/*.tsx' ], + rules: { + 'react/react-in-jsx-scope': 'off', + }, + }, + ], +}; diff --git a/packages/js/block-templates/.npmrc b/packages/js/block-templates/.npmrc new file mode 100644 index 00000000000..43c97e719a5 --- /dev/null +++ b/packages/js/block-templates/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/js/block-templates/README.md b/packages/js/block-templates/README.md new file mode 100644 index 00000000000..be92a4f59da --- /dev/null +++ b/packages/js/block-templates/README.md @@ -0,0 +1,70 @@ +# @woocommerce/block-templates + +A collection of utility functions for use with WooCommerce admin block templates. + +## API + +### registerWooBlockType + +Registers a WooCommerce block type. + +#### Usage + +```js +import { registerWooBlockType } from '@woocommerce/block-templates'; + +import metadata from './block.json'; +import { Edit } from './edit'; + +registerWooBlockType( { + name: metadata.name, + metadata: metadata, + settings: { + edit: Edit, + } +} ); +``` + +#### Parameters + +- _blockMetadata_ `Object`: Block metadata. + +#### Returns + +- `WPBlockType | undefined`: The block type if it was registered successfully, otherwise `undefined`. + +### useWooBlockProps + +This hook is used to lightly mark an element as a WooCommerce block template block. The block's attributes must be passed to this hook and the return result passed to the outermost element of the block in order for the block to properly function in WooCommerce block template contexts. + +If you define a ref for the element, it is important to pass the ref to this hook, which the hook in turn will pass to the component through the props it returns. Optionally, you can also pass any other props through this hook, and they will be merged and returned. + +#### Usage + +```js +import { useWooBlockProps } from '@woocommerce/block-templates'; + +export function Edit( { attributes } ) { + const { blockProps } = useWooBlockProps( + attributes, + { + className: 'my-block', + } + ); + + return ( +
+ Block content +
+ ); +} +``` + +#### Parameters + +- _attributes_: `Object`: Block attributes. +- _props_: `Object`: Optional. Props to pass to the element. + +#### Returns + +- `Object`: Props to pass to the element to mark as a WooCommerce block. diff --git a/packages/js/block-templates/babel.config.js b/packages/js/block-templates/babel.config.js new file mode 100644 index 00000000000..f73e04467aa --- /dev/null +++ b/packages/js/block-templates/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: '../internal-js-tests/babel.config.js', +}; diff --git a/packages/js/block-templates/changelog.md b/packages/js/block-templates/changelog.md new file mode 100644 index 00000000000..3783eb0da3d --- /dev/null +++ b/packages/js/block-templates/changelog.md @@ -0,0 +1,3 @@ +# Changelog + +This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). diff --git a/packages/js/block-templates/changelog/add-expose-block-id-and-order b/packages/js/block-templates/changelog/add-expose-block-id-and-order new file mode 100644 index 00000000000..c7319d42c20 --- /dev/null +++ b/packages/js/block-templates/changelog/add-expose-block-id-and-order @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Initial version of @woocommerce/block-templates package. Adds registerWooBlockType and useWooBlockProps. diff --git a/packages/js/block-templates/composer.json b/packages/js/block-templates/composer.json new file mode 100644 index 00000000000..4821be4a660 --- /dev/null +++ b/packages/js/block-templates/composer.json @@ -0,0 +1,32 @@ +{ + "name": "woocommerce/block-templates", + "description": "WooCommerce Admin block templates component library", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.3.0" + }, + "config": { + "platform": { + "php": "7.2" + } + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/class-package-formatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "CHANGELOG.md" + } + } +} diff --git a/packages/js/block-templates/composer.lock b/packages/js/block-templates/composer.lock new file mode 100644 index 00000000000..96339a01d0a --- /dev/null +++ b/packages/js/block-templates/composer.lock @@ -0,0 +1,483 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "2d316cec186ab12385e8dda54f6df0f6", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "8f63c829b8d1b0d7b1d5de93510d78523ed18959" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/8f63c829b8d1b0d7b1d5de93510d78523ed18959", + "reference": "8f63c829b8d1b0d7b1d5de93510d78523ed18959", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 || ^5.2 || ^6.0", + "symfony/process": "^3.4 || ^5.2 || ^6.0", + "wikimedia/at-ease": "^1.2 || ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 || ^2.0", + "yoast/phpunit-polyfills": "1.0.4" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-trunk": "3.3.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "support": { + "source": "https://github.com/Automattic/jetpack-changelogger/tree/v3.3.0" + }, + "time": "2022-12-26T13:49:01+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "symfony/console", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81", + "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/console/tree/3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "symfony/debug", + "version": "4.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "1a692492190773c5310bc7877cb590c04c2f05be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", + "reference": "1a692492190773c5310bc7877cb590c04c2f05be", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" + }, + "conflict": { + "symfony/http-kernel": "<3.4" + }, + "require-dev": { + "symfony/http-kernel": "^3.4|^4.0|^5.0" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "abandoned": "symfony/error-handler", + "time": "2022-07-28T16:29:46+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "default-branch": true, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-28T09:04:16+00:00" + }, + { + "name": "symfony/process", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/b8648cf1d5af12a44a51d07ef9bf980921f15fca", + "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "013ac61929797839c80a111a3f1a4710d8248e7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/013ac61929797839c80a111a3f1a4710d8248e7a", + "reference": "013ac61929797839c80a111a3f1a4710d8248e7a", + "shasum": "" + }, + "require": { + "php": ">=5.6.99" + }, + "require-dev": { + "jakub-onderka/php-console-highlighter": "0.3.2", + "jakub-onderka/php-parallel-lint": "1.0.0", + "mediawiki/mediawiki-codesniffer": "22.0.0", + "mediawiki/minus-x": "0.3.1", + "ockcyp/covers-validator": "0.5.1 || 0.6.1", + "phpunit/phpunit": "4.8.36 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "support": { + "source": "https://github.com/wikimedia/at-ease/tree/master" + }, + "time": "2018-10-10T15:39:06+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "platform-overrides": { + "php": "7.2" + }, + "plugin-api-version": "2.6.0" +} diff --git a/packages/js/block-templates/jest.config.json b/packages/js/block-templates/jest.config.json new file mode 100644 index 00000000000..3d8108048f6 --- /dev/null +++ b/packages/js/block-templates/jest.config.json @@ -0,0 +1,4 @@ +{ + "rootDir": "./src", + "preset": "../node_modules/@woocommerce/internal-js-tests/jest-preset.js" +} diff --git a/packages/js/block-templates/package.json b/packages/js/block-templates/package.json new file mode 100644 index 00000000000..b4a32b6943b --- /dev/null +++ b/packages/js/block-templates/package.json @@ -0,0 +1,76 @@ +{ + "name": "@woocommerce/block-templates", + "version": "1.0.0-beta.0", + "description": "Utilities for working with block templates in WooCommerce admin.", + "author": "Automattic", + "license": "GPL-2.0-or-later", + "keywords": [ + "wordpress", + "woocommerce" + ], + "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/block-templates/README.md", + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "bugs": { + "url": "https://github.com/woocommerce/woocommerce/issues" + }, + "main": "build/index.js", + "module": "build-module/index.js", + "types": "build-types", + "react-native": "src/index", + "sideEffects": [ + "build-style/**", + "src/**/*.scss" + ], + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@wordpress/block-editor": "^9.8.0", + "@wordpress/blocks": "^12.3.0" + }, + "devDependencies": { + "@babel/core": "^7.21.3", + "@babel/runtime": "^7.17.2", + "@testing-library/jest-dom": "^5.16.2", + "@testing-library/react-hooks": "^8.0.1", + "@types/jest": "^27.4.1", + "@types/testing-library__jest-dom": "^5.14.3", + "@types/wordpress__block-editor": "^7.0.0", + "@types/wordpress__blocks": "^11.0.7", + "@woocommerce/eslint-plugin": "workspace:*", + "@woocommerce/internal-js-tests": "workspace:*", + "@woocommerce/internal-style-build": "workspace:*", + "@wordpress/browserslist-config": "wp-6.0", + "copy-webpack-plugin": "^9.1.0", + "css-loader": "^3.6.0", + "eslint": "^8.32.0", + "jest": "^27.5.1", + "jest-cli": "^27.5.1", + "postcss": "^8.4.7", + "postcss-loader": "^4.3.0", + "rimraf": "^3.0.2", + "sass-loader": "^10.2.1", + "ts-jest": "^27.1.3", + "typescript": "^5.1.6", + "webpack": "^5.70.0", + "webpack-cli": "^3.3.12" + }, + "scripts": { + "turbo:build": "pnpm run build:js && pnpm run build:css", + "turbo:test": "jest --config ./jest.config.json", + "prepare": "composer install", + "changelog": "composer exec -- changelogger", + "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", + "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name", + "test": "pnpm -w exec turbo run turbo:test --filter=$npm_package_name", + "lint": "eslint --output-file eslint_report.json --format json src", + "build:js": "tsc --project tsconfig.json && tsc --project tsconfig-cjs.json", + "build:css": "webpack", + "start": "concurrently \"tsc --project tsconfig.json --watch\" \"tsc --project tsconfig-cjs.json --watch\" \"webpack --watch\"", + "prepack": "pnpm run clean && pnpm run build", + "lint:fix": "eslint src --fix" + } +} diff --git a/packages/js/block-templates/src/hooks/index.ts b/packages/js/block-templates/src/hooks/index.ts new file mode 100644 index 00000000000..5a9815093b9 --- /dev/null +++ b/packages/js/block-templates/src/hooks/index.ts @@ -0,0 +1 @@ +export * from './use-woo-block-props'; diff --git a/packages/js/block-templates/src/hooks/use-woo-block-props/index.ts b/packages/js/block-templates/src/hooks/use-woo-block-props/index.ts new file mode 100644 index 00000000000..5a9815093b9 --- /dev/null +++ b/packages/js/block-templates/src/hooks/use-woo-block-props/index.ts @@ -0,0 +1 @@ +export * from './use-woo-block-props'; diff --git a/packages/js/block-templates/src/hooks/use-woo-block-props/test/use-woo-block-props.test.ts b/packages/js/block-templates/src/hooks/use-woo-block-props/test/use-woo-block-props.test.ts new file mode 100644 index 00000000000..4293956652c --- /dev/null +++ b/packages/js/block-templates/src/hooks/use-woo-block-props/test/use-woo-block-props.test.ts @@ -0,0 +1,37 @@ +/** + * External dependencies + */ +import { renderHook } from '@testing-library/react-hooks'; +import { useBlockProps } from '@wordpress/block-editor'; + +/** + * Internal dependencies + */ +import { useWooBlockProps } from '../use-woo-block-props'; + +jest.mock( '@wordpress/block-editor', () => ( { + useBlockProps: jest.fn(), +} ) ); + +describe( 'useWooBlockProps', () => { + it( 'should return the block props with the block id and block order attributes', () => { + renderHook( () => + useWooBlockProps( + { + foo: 'bar', + _templateBlockId: 'test/block', + _templateBlockOrder: 30, + }, + { + className: 'test', + } + ) + ); + + expect( useBlockProps ).toHaveBeenCalledWith( { + 'data-template-block-id': 'test/block', + 'data-template-block-order': 30, + className: 'test', + } ); + } ); +} ); diff --git a/packages/js/block-templates/src/hooks/use-woo-block-props/use-woo-block-props.ts b/packages/js/block-templates/src/hooks/use-woo-block-props/use-woo-block-props.ts new file mode 100644 index 00000000000..4114951158a --- /dev/null +++ b/packages/js/block-templates/src/hooks/use-woo-block-props/use-woo-block-props.ts @@ -0,0 +1,24 @@ +/** + * External dependencies + */ +import { useBlockProps } from '@wordpress/block-editor'; + +interface TemplateBlockAttributes { + _templateBlockId?: string; + _templateBlockOrder?: number; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + [ key: string ]: any; +} + +export const useWooBlockProps = ( + attributes: TemplateBlockAttributes, + props: Record< string, unknown > = {} +) => { + const additionalProps = { + 'data-template-block-id': attributes._templateBlockId, + 'data-template-block-order': attributes._templateBlockOrder, + ...props, + }; + + return useBlockProps( additionalProps ); +}; diff --git a/packages/js/block-templates/src/index.ts b/packages/js/block-templates/src/index.ts new file mode 100644 index 00000000000..fd70c425092 --- /dev/null +++ b/packages/js/block-templates/src/index.ts @@ -0,0 +1,2 @@ +export * from './hooks'; +export * from './utils'; diff --git a/packages/js/block-templates/src/style.scss b/packages/js/block-templates/src/style.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/block-templates/src/utils/index.ts b/packages/js/block-templates/src/utils/index.ts new file mode 100644 index 00000000000..b5e6f40e845 --- /dev/null +++ b/packages/js/block-templates/src/utils/index.ts @@ -0,0 +1 @@ +export * from './register-woo-block-type'; diff --git a/packages/js/block-templates/src/utils/register-woo-block-type.ts b/packages/js/block-templates/src/utils/register-woo-block-type.ts new file mode 100644 index 00000000000..211bc5ca901 --- /dev/null +++ b/packages/js/block-templates/src/utils/register-woo-block-type.ts @@ -0,0 +1,51 @@ +/** + * External dependencies + */ +import { + Block, + BlockConfiguration, + registerBlockType, +} from '@wordpress/blocks'; + +interface BlockRepresentation< T extends Record< string, object > > { + name?: string; + metadata: BlockConfiguration< T >; + settings: Partial< BlockConfiguration< T > >; +} + +/** + * Function to register an individual block. + * + * @param block The block to be registered. + * @return The block, if it has been successfully registered; otherwise `undefined`. + */ +export function registerWooBlockType< + // eslint-disable-next-line @typescript-eslint/no-explicit-any + T extends Record< string, any > = Record< string, any > +>( block: BlockRepresentation< T > ): Block< T > | undefined { + if ( ! block ) { + return; + } + const { metadata, settings, name } = block; + + const templateBlockAttributes = { + _templateBlockId: { + type: 'string', + __experimentalRole: 'content', + }, + _templateBlockOrder: { + type: 'integer', + __experimentalRole: 'content', + }, + }; + + const augmentedMetadata = { + ...metadata, + attributes: { + ...metadata.attributes, + ...templateBlockAttributes, + }, + }; + + return registerBlockType< T >( { name, ...augmentedMetadata }, settings ); +} diff --git a/packages/js/block-templates/src/utils/test/register-woo-block-type.test.ts b/packages/js/block-templates/src/utils/test/register-woo-block-type.test.ts new file mode 100644 index 00000000000..7d75d294165 --- /dev/null +++ b/packages/js/block-templates/src/utils/test/register-woo-block-type.test.ts @@ -0,0 +1,59 @@ +/** + * External dependencies + */ +import { registerBlockType } from '@wordpress/blocks'; + +/** + * Internal dependencies + */ +import { registerWooBlockType } from '../register-woo-block-type'; + +jest.mock( '@wordpress/blocks', () => ( { + registerBlockType: jest.fn(), +} ) ); + +describe( 'registerWooBlockType', () => { + it( 'should register a block type with the block id and block order attributes', () => { + const block = { + name: 'test/block', + metadata: { + attributes: { + foo: { + type: 'boolean', + default: false, + }, + }, + }, + settings: { + foo: 'bar', + }, + }; + + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore ts2345 Complaining about the type of the foo attribute; it's fine. + registerWooBlockType( block ); + + expect( registerBlockType ).toHaveBeenCalledWith( + { + name: 'test/block', + attributes: { + foo: { + type: 'boolean', + default: false, + }, + _templateBlockId: { + type: 'string', + __experimentalRole: 'content', + }, + _templateBlockOrder: { + type: 'integer', + __experimentalRole: 'content', + }, + }, + }, + { + foo: 'bar', + } + ); + } ); +} ); diff --git a/packages/js/block-templates/tsconfig-cjs.json b/packages/js/block-templates/tsconfig-cjs.json new file mode 100644 index 00000000000..92bfe004f21 --- /dev/null +++ b/packages/js/block-templates/tsconfig-cjs.json @@ -0,0 +1,16 @@ +{ + "extends": "../tsconfig-cjs", + "include": [ + "**/*.d.ts", + "src/**/*", + "src/**/*.json" + ], + "compilerOptions": { + "outDir": "build", + "resolveJsonModule": true, + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] + } +} diff --git a/packages/js/block-templates/tsconfig.json b/packages/js/block-templates/tsconfig.json new file mode 100644 index 00000000000..86bd897a9f3 --- /dev/null +++ b/packages/js/block-templates/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "rootDir": "src", + "outDir": "build-module", + "declaration": true, + "declarationMap": true, + "declarationDir": "./build-types", + "resolveJsonModule": true, + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] + }, + "include": [ + "**/*.d.ts", + "src/**/*", + "src/**/*.json" + ] +} diff --git a/packages/js/block-templates/webpack.config.js b/packages/js/block-templates/webpack.config.js new file mode 100644 index 00000000000..9b42746f1dd --- /dev/null +++ b/packages/js/block-templates/webpack.config.js @@ -0,0 +1,19 @@ +/** + * Internal dependencies + */ +const { webpackConfig } = require( '@woocommerce/internal-style-build' ); + +module.exports = { + mode: process.env.NODE_ENV || 'development', + entry: { + 'build-style': __dirname + '/src/style.scss', + }, + output: { + path: __dirname, + }, + module: { + parser: webpackConfig.parser, + rules: webpackConfig.rules, + }, + plugins: webpackConfig.plugins, +}; diff --git a/packages/js/dependency-extraction-webpack-plugin/assets/packages.js b/packages/js/dependency-extraction-webpack-plugin/assets/packages.js index d415dc66ba6..0ae09d2c432 100644 --- a/packages/js/dependency-extraction-webpack-plugin/assets/packages.js +++ b/packages/js/dependency-extraction-webpack-plugin/assets/packages.js @@ -1,6 +1,7 @@ module.exports = [ // wc-admin packages '@woocommerce/admin-layout', + '@woocommerce/block-templates', '@woocommerce/components', '@woocommerce/csv-export', '@woocommerce/currency', diff --git a/packages/js/dependency-extraction-webpack-plugin/changelog/add-expose-block-id-and-order b/packages/js/dependency-extraction-webpack-plugin/changelog/add-expose-block-id-and-order new file mode 100644 index 00000000000..aba243fe6b6 --- /dev/null +++ b/packages/js/dependency-extraction-webpack-plugin/changelog/add-expose-block-id-and-order @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Add @woocommerce/block-templates. diff --git a/packages/js/product-editor/changelog/add-expose-block-id-and-order b/packages/js/product-editor/changelog/add-expose-block-id-and-order new file mode 100644 index 00000000000..8e1b5e655c5 --- /dev/null +++ b/packages/js/product-editor/changelog/add-expose-block-id-and-order @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Update blocks to use registerWooBlockType and useWooBlockProps from @woocommerce/block-templates. Deprecates initBlock. diff --git a/packages/js/product-editor/package.json b/packages/js/product-editor/package.json index db087aa8469..68c843549ea 100644 --- a/packages/js/product-editor/package.json +++ b/packages/js/product-editor/package.json @@ -32,6 +32,7 @@ "@types/prop-types": "^15.7.4", "@types/wordpress__blocks": "^11.0.7", "@woocommerce/admin-layout": "workspace:*", + "@woocommerce/block-templates": "workspace:*", "@woocommerce/components": "workspace:*", "@woocommerce/currency": "workspace:*", "@woocommerce/customer-effort-score": "workspace:*", @@ -49,6 +50,7 @@ "@wordpress/core-data": "wp-6.0", "@wordpress/data": "wp-6.0", "@wordpress/date": "wp-6.0", + "@wordpress/deprecated": "wp-6.0", "@wordpress/editor": "wp-6.0", "@wordpress/element": "wp-6.0", "@wordpress/html-entities": "wp-6.0", diff --git a/packages/js/product-editor/src/blocks/attributes/edit.tsx b/packages/js/product-editor/src/blocks/attributes/edit.tsx index d36dfb9c680..044777a0d90 100644 --- a/packages/js/product-editor/src/blocks/attributes/edit.tsx +++ b/packages/js/product-editor/src/blocks/attributes/edit.tsx @@ -1,9 +1,10 @@ /** * External dependencies */ +import { BlockEditProps, BlockAttributes } from '@wordpress/blocks'; import { createElement } from '@wordpress/element'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { ProductAttribute } from '@woocommerce/data'; -import { useBlockProps } from '@wordpress/block-editor'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore No types for this exist yet. // eslint-disable-next-line @woocommerce/dependency-group @@ -14,14 +15,14 @@ import { useEntityProp, useEntityId } from '@wordpress/core-data'; */ import { Attributes as AttributesContainer } from '../../components/attributes/attributes'; -export function Edit() { +export function Edit( { attributes }: BlockEditProps< BlockAttributes > ) { const [ entityAttributes, setEntityAttributes ] = useEntityProp< ProductAttribute[] >( 'postType', 'product', 'attributes' ); const productId = useEntityId( 'postType', 'product' ); - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); return (
diff --git a/packages/js/product-editor/src/blocks/attributes/index.ts b/packages/js/product-editor/src/blocks/attributes/index.ts index 59d35906a12..37f321821db 100644 --- a/packages/js/product-editor/src/blocks/attributes/index.ts +++ b/packages/js/product-editor/src/blocks/attributes/index.ts @@ -1,7 +1,11 @@ +/** + * External dependencies + */ +import { registerWooBlockType } from '@woocommerce/block-templates'; + /** * Internal dependencies */ -import { initBlock } from '../../utils'; import metadata from './block.json'; import { Edit } from './edit'; @@ -15,7 +19,7 @@ export const settings = { }; export const init = () => - initBlock( { + registerWooBlockType( { name, metadata: metadata as never, settings, diff --git a/packages/js/product-editor/src/blocks/catalog-visibility/edit.tsx b/packages/js/product-editor/src/blocks/catalog-visibility/edit.tsx index b1be896d4ee..7ec4e7a30d9 100644 --- a/packages/js/product-editor/src/blocks/catalog-visibility/edit.tsx +++ b/packages/js/product-editor/src/blocks/catalog-visibility/edit.tsx @@ -1,10 +1,10 @@ /** * External dependencies */ -import { useBlockProps } from '@wordpress/block-editor'; import { CheckboxControl } from '@wordpress/components'; import { useEntityProp } from '@wordpress/core-data'; import { createElement } from '@wordpress/element'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { Product } from '@woocommerce/data'; /** @@ -19,7 +19,7 @@ export function Edit( { } ) { const { label, visibility } = attributes; - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const [ catalogVisibility, setCatalogVisibility ] = useEntityProp< Product[ 'catalog_visibility' ] diff --git a/packages/js/product-editor/src/blocks/catalog-visibility/index.ts b/packages/js/product-editor/src/blocks/catalog-visibility/index.ts index efbd7fe8dc2..5b30cbce748 100644 --- a/packages/js/product-editor/src/blocks/catalog-visibility/index.ts +++ b/packages/js/product-editor/src/blocks/catalog-visibility/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { CatalogVisibilityBlockAttributes } from './types'; @@ -24,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/checkbox/edit.tsx b/packages/js/product-editor/src/blocks/checkbox/edit.tsx index d7c1499d838..5efb60dad99 100644 --- a/packages/js/product-editor/src/blocks/checkbox/edit.tsx +++ b/packages/js/product-editor/src/blocks/checkbox/edit.tsx @@ -4,17 +4,18 @@ import { createElement } from '@wordpress/element'; import type { BlockAttributes } from '@wordpress/blocks'; import { CheckboxControl, Tooltip } from '@wordpress/components'; -import { useBlockProps } from '@wordpress/block-editor'; import { useEntityProp } from '@wordpress/core-data'; import { Icon, help } from '@wordpress/icons'; +import { useWooBlockProps } from '@woocommerce/block-templates'; /** * Internal dependencies */ export function Edit( { attributes }: { attributes: BlockAttributes } ) { - const blockProps = useBlockProps( { + const blockProps = useWooBlockProps( { className: 'woocommerce-product-form__checkbox', + ...attributes, } ); const { property, title, label, tooltip } = attributes; const [ value, setValue ] = useEntityProp< boolean >( diff --git a/packages/js/product-editor/src/blocks/checkbox/index.ts b/packages/js/product-editor/src/blocks/checkbox/index.ts index 6b8110f1433..6b7a2f17c22 100644 --- a/packages/js/product-editor/src/blocks/checkbox/index.ts +++ b/packages/js/product-editor/src/blocks/checkbox/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; @@ -19,4 +19,4 @@ export const settings = { edit: Edit, }; -export const init = () => initBlock( { name, metadata, settings } ); +export const init = () => registerWooBlockType( { name, metadata, settings } ); diff --git a/packages/js/product-editor/src/blocks/collapsible/edit.tsx b/packages/js/product-editor/src/blocks/collapsible/edit.tsx index d4d0f743bf1..17dc9b86db5 100644 --- a/packages/js/product-editor/src/blocks/collapsible/edit.tsx +++ b/packages/js/product-editor/src/blocks/collapsible/edit.tsx @@ -1,13 +1,14 @@ /** * External dependencies */ +import { useWooBlockProps } from '@woocommerce/block-templates'; import { CollapsibleContent } from '@woocommerce/components'; import type { BlockAttributes } from '@wordpress/blocks'; import { createElement } from '@wordpress/element'; -import { InnerBlocks, useBlockProps } from '@wordpress/block-editor'; +import { InnerBlocks } from '@wordpress/block-editor'; export function Edit( { attributes }: { attributes: BlockAttributes } ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { toggleText, initialCollapsed, persistRender = true } = attributes; return ( diff --git a/packages/js/product-editor/src/blocks/collapsible/index.ts b/packages/js/product-editor/src/blocks/collapsible/index.ts index 43b3aabdc22..6af10d47939 100644 --- a/packages/js/product-editor/src/blocks/collapsible/index.ts +++ b/packages/js/product-editor/src/blocks/collapsible/index.ts @@ -1,7 +1,11 @@ +/** + * External dependencies + */ +import { registerWooBlockType } from '@woocommerce/block-templates'; + /** * Internal dependencies */ -import { initBlock } from '../../utils'; import metadata from './block.json'; import { Edit } from './edit'; @@ -15,4 +19,4 @@ export const settings = { }; export const init = () => - initBlock( { name, metadata: metadata as never, settings } ); + registerWooBlockType( { name, metadata: metadata as never, settings } ); diff --git a/packages/js/product-editor/src/blocks/conditional/edit.tsx b/packages/js/product-editor/src/blocks/conditional/edit.tsx index 61e15444d4d..0c088010354 100644 --- a/packages/js/product-editor/src/blocks/conditional/edit.tsx +++ b/packages/js/product-editor/src/blocks/conditional/edit.tsx @@ -3,8 +3,9 @@ */ import type { BlockAttributes } from '@wordpress/blocks'; import { createElement, useMemo } from '@wordpress/element'; -import { InnerBlocks, useBlockProps } from '@wordpress/block-editor'; +import { InnerBlocks } from '@wordpress/block-editor'; import { useSelect } from '@wordpress/data'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { DisplayState } from '@woocommerce/components'; import { Product } from '@woocommerce/data'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -19,7 +20,7 @@ export function Edit( { mustMatch: Record< string, Array< string > >; }; } ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { mustMatch } = attributes; const productId = useEntityId( 'postType', 'product' ); diff --git a/packages/js/product-editor/src/blocks/conditional/index.ts b/packages/js/product-editor/src/blocks/conditional/index.ts index 43b3aabdc22..6af10d47939 100644 --- a/packages/js/product-editor/src/blocks/conditional/index.ts +++ b/packages/js/product-editor/src/blocks/conditional/index.ts @@ -1,7 +1,11 @@ +/** + * External dependencies + */ +import { registerWooBlockType } from '@woocommerce/block-templates'; + /** * Internal dependencies */ -import { initBlock } from '../../utils'; import metadata from './block.json'; import { Edit } from './edit'; @@ -15,4 +19,4 @@ export const settings = { }; export const init = () => - initBlock( { name, metadata: metadata as never, settings } ); + registerWooBlockType( { name, metadata: metadata as never, settings } ); diff --git a/packages/js/product-editor/src/blocks/description/edit.tsx b/packages/js/product-editor/src/blocks/description/edit.tsx index b7c5f58a683..769d713f9c7 100644 --- a/packages/js/product-editor/src/blocks/description/edit.tsx +++ b/packages/js/product-editor/src/blocks/description/edit.tsx @@ -3,10 +3,16 @@ */ import { __ } from '@wordpress/i18n'; import { createElement, useState } from '@wordpress/element'; -import { BlockInstance, parse, serialize } from '@wordpress/blocks'; +import { + BlockEditProps, + BlockAttributes, + BlockInstance, + parse, + serialize, +} from '@wordpress/blocks'; import { Button } from '@wordpress/components'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { recordEvent } from '@woocommerce/tracks'; -import { useBlockProps } from '@wordpress/block-editor'; import { useEntityProp } from '@wordpress/core-data'; /** @@ -21,7 +27,7 @@ import { ModalEditor } from '../../components/modal-editor'; /** * By default the blocks variable always contains one paragraph - * block with empty content, that causes the desciption to never + * block with empty content, that causes the description to never * be empty. This function removes the default block to keep * the description empty. * @@ -39,8 +45,8 @@ function clearDescriptionIfEmpty( blocks: BlockInstance[] ) { return blocks; } -export function Edit() { - const blockProps = useBlockProps(); +export function Edit( { attributes }: BlockEditProps< BlockAttributes > ) { + const blockProps = useWooBlockProps( attributes ); const [ isModalOpen, setIsModalOpen ] = useState( false ); const [ description, setDescription ] = useEntityProp< string >( 'postType', diff --git a/packages/js/product-editor/src/blocks/description/index.ts b/packages/js/product-editor/src/blocks/description/index.ts index 6b8110f1433..6b7a2f17c22 100644 --- a/packages/js/product-editor/src/blocks/description/index.ts +++ b/packages/js/product-editor/src/blocks/description/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; @@ -19,4 +19,4 @@ export const settings = { edit: Edit, }; -export const init = () => initBlock( { name, metadata, settings } ); +export const init = () => registerWooBlockType( { name, metadata, settings } ); diff --git a/packages/js/product-editor/src/blocks/images/edit.tsx b/packages/js/product-editor/src/blocks/images/edit.tsx index 07a937d78ab..ca4f3aff59c 100644 --- a/packages/js/product-editor/src/blocks/images/edit.tsx +++ b/packages/js/product-editor/src/blocks/images/edit.tsx @@ -2,18 +2,19 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; +import { BlockEditProps, BlockAttributes } from '@wordpress/blocks'; import { DropZone } from '@wordpress/components'; import classnames from 'classnames'; import { createElement, useState } from '@wordpress/element'; import { Icon, trash } from '@wordpress/icons'; import { MediaItem } from '@wordpress/media-utils'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { MediaUploader, ImageGallery, ImageGalleryItem, } from '@woocommerce/components'; import { recordEvent } from '@woocommerce/tracks'; -import { useBlockProps } from '@wordpress/block-editor'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore No types for this exist yet. // eslint-disable-next-line @woocommerce/dependency-group @@ -23,7 +24,7 @@ type Image = MediaItem & { src: string; }; -export function Edit() { +export function Edit( { attributes }: BlockEditProps< BlockAttributes > ) { const [ images, setImages ] = useEntityProp< MediaItem[] >( 'postType', 'product', @@ -36,7 +37,7 @@ export function Edit() { null ); - const blockProps = useBlockProps( { + const blockProps = useWooBlockProps( attributes, { className: classnames( { 'has-images': images.length > 0, } ), diff --git a/packages/js/product-editor/src/blocks/images/index.ts b/packages/js/product-editor/src/blocks/images/index.ts index 59d35906a12..37f321821db 100644 --- a/packages/js/product-editor/src/blocks/images/index.ts +++ b/packages/js/product-editor/src/blocks/images/index.ts @@ -1,7 +1,11 @@ +/** + * External dependencies + */ +import { registerWooBlockType } from '@woocommerce/block-templates'; + /** * Internal dependencies */ -import { initBlock } from '../../utils'; import metadata from './block.json'; import { Edit } from './edit'; @@ -15,7 +19,7 @@ export const settings = { }; export const init = () => - initBlock( { + registerWooBlockType( { name, metadata: metadata as never, settings, diff --git a/packages/js/product-editor/src/blocks/inventory-email/edit.tsx b/packages/js/product-editor/src/blocks/inventory-email/edit.tsx index 916b885e33b..8c16acde552 100644 --- a/packages/js/product-editor/src/blocks/inventory-email/edit.tsx +++ b/packages/js/product-editor/src/blocks/inventory-email/edit.tsx @@ -2,6 +2,7 @@ * External dependencies */ import { __, sprintf } from '@wordpress/i18n'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { Link } from '@woocommerce/components'; import { Product } from '@woocommerce/data'; import { @@ -11,7 +12,6 @@ import { } from '@wordpress/element'; import { getSetting } from '@woocommerce/settings'; import { BlockEditProps } from '@wordpress/blocks'; -import { useBlockProps } from '@wordpress/block-editor'; import { useInstanceId } from '@wordpress/compose'; import { BaseControl, @@ -30,9 +30,10 @@ import { useValidation } from '../../contexts/validation-context'; import { InventoryEmailBlockAttributes } from './types'; export function Edit( { + attributes, clientId, }: BlockEditProps< InventoryEmailBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const notifyLowStockAmount = getSetting( 'notifyLowStockAmount', 2 ); const [ lowStockAmount, setLowStockAmount ] = useEntityProp< number >( diff --git a/packages/js/product-editor/src/blocks/inventory-email/index.ts b/packages/js/product-editor/src/blocks/inventory-email/index.ts index d8ad7f199c5..db814b62b9e 100644 --- a/packages/js/product-editor/src/blocks/inventory-email/index.ts +++ b/packages/js/product-editor/src/blocks/inventory-email/index.ts @@ -1,13 +1,12 @@ /** * External dependencies */ -import { createElement } from '@wordpress/element'; import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { InventoryEmailBlockAttributes } from './types'; @@ -25,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/inventory-quantity/edit.tsx b/packages/js/product-editor/src/blocks/inventory-quantity/edit.tsx index 935e7d1bc30..8f3e81bee31 100644 --- a/packages/js/product-editor/src/blocks/inventory-quantity/edit.tsx +++ b/packages/js/product-editor/src/blocks/inventory-quantity/edit.tsx @@ -1,9 +1,9 @@ /** * External dependencies */ +import { useWooBlockProps } from '@woocommerce/block-templates'; import { Product } from '@woocommerce/data'; import { BlockEditProps } from '@wordpress/blocks'; -import { useBlockProps } from '@wordpress/block-editor'; import { useInstanceId } from '@wordpress/compose'; import { useEntityProp } from '@wordpress/core-data'; import { createElement, useEffect } from '@wordpress/element'; @@ -21,9 +21,10 @@ import { TrackInventoryBlockAttributes } from './types'; import { useValidation } from '../../contexts/validation-context'; export function Edit( { + attributes, clientId, }: BlockEditProps< TrackInventoryBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const [ manageStock ] = useEntityProp< boolean >( 'postType', diff --git a/packages/js/product-editor/src/blocks/inventory-quantity/index.ts b/packages/js/product-editor/src/blocks/inventory-quantity/index.ts index 1e756b0a120..98fb0c23aad 100644 --- a/packages/js/product-editor/src/blocks/inventory-quantity/index.ts +++ b/packages/js/product-editor/src/blocks/inventory-quantity/index.ts @@ -1,13 +1,12 @@ /** * External dependencies */ -import { createElement } from '@wordpress/element'; import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { TrackInventoryBlockAttributes } from './types'; @@ -25,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/inventory-sku/edit.tsx b/packages/js/product-editor/src/blocks/inventory-sku/edit.tsx index 9c4519a986c..0ac680df75d 100644 --- a/packages/js/product-editor/src/blocks/inventory-sku/edit.tsx +++ b/packages/js/product-editor/src/blocks/inventory-sku/edit.tsx @@ -2,8 +2,9 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; +import { BlockEditProps, BlockAttributes } from '@wordpress/blocks'; import { createElement, createInterpolateElement } from '@wordpress/element'; -import { useBlockProps } from '@wordpress/block-editor'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { BaseControl, @@ -19,8 +20,8 @@ import { useEntityProp } from '@wordpress/core-data'; * Internal dependencies */ -export function Edit() { - const blockProps = useBlockProps(); +export function Edit( { attributes }: BlockEditProps< BlockAttributes > ) { + const blockProps = useWooBlockProps( attributes ); const [ sku, setSku ] = useEntityProp( 'postType', 'product', 'sku' ); diff --git a/packages/js/product-editor/src/blocks/inventory-sku/index.ts b/packages/js/product-editor/src/blocks/inventory-sku/index.ts index 6b8110f1433..6b7a2f17c22 100644 --- a/packages/js/product-editor/src/blocks/inventory-sku/index.ts +++ b/packages/js/product-editor/src/blocks/inventory-sku/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; @@ -19,4 +19,4 @@ export const settings = { edit: Edit, }; -export const init = () => initBlock( { name, metadata, settings } ); +export const init = () => registerWooBlockType( { name, metadata, settings } ); diff --git a/packages/js/product-editor/src/blocks/name/edit.tsx b/packages/js/product-editor/src/blocks/name/edit.tsx index 2d73dac9427..ac5ff97cb6e 100644 --- a/packages/js/product-editor/src/blocks/name/edit.tsx +++ b/packages/js/product-editor/src/blocks/name/edit.tsx @@ -9,11 +9,11 @@ import { useState, } from '@wordpress/element'; -import { useBlockProps } from '@wordpress/block-editor'; import { BlockEditProps } from '@wordpress/blocks'; import { useInstanceId } from '@wordpress/compose'; import { cleanForSlug } from '@wordpress/url'; import { useSelect, useDispatch } from '@wordpress/data'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { PRODUCTS_STORE_NAME, WCDataSelector, @@ -41,7 +41,7 @@ import { NameBlockAttributes } from './types'; import { useProductEdits } from '../../hooks/use-product-edits'; export function Edit( { attributes }: BlockEditProps< NameBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { editEntityRecord, saveEntityRecord } = useDispatch( 'core' ); diff --git a/packages/js/product-editor/src/blocks/name/index.ts b/packages/js/product-editor/src/blocks/name/index.ts index 59d35906a12..37f321821db 100644 --- a/packages/js/product-editor/src/blocks/name/index.ts +++ b/packages/js/product-editor/src/blocks/name/index.ts @@ -1,7 +1,11 @@ +/** + * External dependencies + */ +import { registerWooBlockType } from '@woocommerce/block-templates'; + /** * Internal dependencies */ -import { initBlock } from '../../utils'; import metadata from './block.json'; import { Edit } from './edit'; @@ -15,7 +19,7 @@ export const settings = { }; export const init = () => - initBlock( { + registerWooBlockType( { name, metadata: metadata as never, settings, diff --git a/packages/js/product-editor/src/blocks/notice/edit.tsx b/packages/js/product-editor/src/blocks/notice/edit.tsx index e9a31c40f57..61be266772b 100644 --- a/packages/js/product-editor/src/blocks/notice/edit.tsx +++ b/packages/js/product-editor/src/blocks/notice/edit.tsx @@ -1,10 +1,10 @@ /** * External dependencies */ -import { useBlockProps } from '@wordpress/block-editor'; import { createElement } from '@wordpress/element'; import type { BlockAttributes, BlockEditProps } from '@wordpress/blocks'; import { Button } from '@wordpress/components'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { getNewPath, navigateTo } from '@woocommerce/navigation'; import { Product } from '@woocommerce/data'; import { useEntityProp } from '@wordpress/core-data'; @@ -25,7 +25,7 @@ export interface NoticeBlockAttributes extends BlockAttributes { export function Edit( { attributes, }: BlockEditProps< NoticeBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { buttonText, content, title, type = 'info' } = attributes; const [ productAttributes ] = useEntityProp< Product[ 'attributes' ] >( diff --git a/packages/js/product-editor/src/blocks/notice/index.ts b/packages/js/product-editor/src/blocks/notice/index.ts index 8118373f872..72691b07798 100644 --- a/packages/js/product-editor/src/blocks/notice/index.ts +++ b/packages/js/product-editor/src/blocks/notice/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit, NoticeBlockAttributes } from './edit'; @@ -22,5 +22,5 @@ export const settings: Partial< BlockConfiguration< NoticeBlockAttributes > > = }; export function init() { - initBlock( { name, metadata, settings } ); + registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/password/edit.tsx b/packages/js/product-editor/src/blocks/password/edit.tsx index e177be9cf85..7fdcd717175 100644 --- a/packages/js/product-editor/src/blocks/password/edit.tsx +++ b/packages/js/product-editor/src/blocks/password/edit.tsx @@ -1,12 +1,12 @@ /** * External dependencies */ -import { useBlockProps } from '@wordpress/block-editor'; import { BlockEditProps } from '@wordpress/blocks'; import { useInstanceId } from '@wordpress/compose'; import { useEntityProp } from '@wordpress/core-data'; import { createElement, useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { BaseControl, CheckboxControl, @@ -23,7 +23,7 @@ import { RequirePasswordBlockAttributes } from './types'; export function Edit( { attributes, }: BlockEditProps< RequirePasswordBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { label } = attributes; const [ postPassword, setPostPassword ] = useEntityProp< string >( diff --git a/packages/js/product-editor/src/blocks/password/index.ts b/packages/js/product-editor/src/blocks/password/index.ts index ecda64c9723..a25088682e6 100644 --- a/packages/js/product-editor/src/blocks/password/index.ts +++ b/packages/js/product-editor/src/blocks/password/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { RequirePasswordBlockAttributes } from './types'; @@ -23,5 +23,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/pricing/edit.tsx b/packages/js/product-editor/src/blocks/pricing/edit.tsx index 4aeade0ae4d..366a7370d41 100644 --- a/packages/js/product-editor/src/blocks/pricing/edit.tsx +++ b/packages/js/product-editor/src/blocks/pricing/edit.tsx @@ -1,10 +1,10 @@ /** * External dependencies */ +import { useWooBlockProps } from '@woocommerce/block-templates'; import { Link } from '@woocommerce/components'; import { getNewPath } from '@woocommerce/navigation'; import { recordEvent } from '@woocommerce/tracks'; -import { useBlockProps } from '@wordpress/block-editor'; import { BlockEditProps } from '@wordpress/blocks'; import { useInstanceId } from '@wordpress/compose'; import { useEntityProp } from '@wordpress/core-data'; @@ -25,7 +25,7 @@ import { PricingBlockAttributes } from './types'; export function Edit( { attributes, }: BlockEditProps< PricingBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { name, label, help } = attributes; const [ price, setPrice ] = useEntityProp< string >( 'postType', diff --git a/packages/js/product-editor/src/blocks/pricing/index.ts b/packages/js/product-editor/src/blocks/pricing/index.ts index 5d624f6f8ed..4d22a025cd8 100644 --- a/packages/js/product-editor/src/blocks/pricing/index.ts +++ b/packages/js/product-editor/src/blocks/pricing/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { PricingBlockAttributes } from './types'; @@ -23,5 +23,5 @@ export const settings: Partial< BlockConfiguration< PricingBlockAttributes > > = }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/radio/edit.tsx b/packages/js/product-editor/src/blocks/radio/edit.tsx index 7213cda4084..b8ba2c2506d 100644 --- a/packages/js/product-editor/src/blocks/radio/edit.tsx +++ b/packages/js/product-editor/src/blocks/radio/edit.tsx @@ -3,8 +3,8 @@ */ import { createElement } from '@wordpress/element'; import { BlockEditProps } from '@wordpress/blocks'; -import { useBlockProps } from '@wordpress/block-editor'; import { useEntityProp } from '@wordpress/core-data'; +import { useWooBlockProps } from '@woocommerce/block-templates'; /** * Internal dependencies @@ -13,7 +13,7 @@ import { RadioField } from '../../components/radio-field'; import { RadioBlockAttributes } from './types'; export function Edit( { attributes }: BlockEditProps< RadioBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { description, options, property, title } = attributes; const [ value, setValue ] = useEntityProp< string >( 'postType', diff --git a/packages/js/product-editor/src/blocks/radio/index.ts b/packages/js/product-editor/src/blocks/radio/index.ts index 49fa2e00137..247c3376403 100644 --- a/packages/js/product-editor/src/blocks/radio/index.ts +++ b/packages/js/product-editor/src/blocks/radio/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { RadioBlockAttributes } from './types'; @@ -22,5 +22,5 @@ export const settings: Partial< BlockConfiguration< RadioBlockAttributes > > = { }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/regular-price/edit.tsx b/packages/js/product-editor/src/blocks/regular-price/edit.tsx index 9090de1adba..78655a8335b 100644 --- a/packages/js/product-editor/src/blocks/regular-price/edit.tsx +++ b/packages/js/product-editor/src/blocks/regular-price/edit.tsx @@ -2,11 +2,11 @@ * External dependencies */ import classNames from 'classnames'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { Link } from '@woocommerce/components'; import { Product } from '@woocommerce/data'; import { getNewPath } from '@woocommerce/navigation'; import { recordEvent } from '@woocommerce/tracks'; -import { useBlockProps } from '@wordpress/block-editor'; import { BlockEditProps } from '@wordpress/blocks'; import { useInstanceId } from '@wordpress/compose'; import { useEntityProp } from '@wordpress/core-data'; @@ -29,7 +29,7 @@ export function Edit( { attributes, clientId, }: BlockEditProps< SalePriceBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { label, help } = attributes; const [ regularPrice, setRegularPrice ] = useEntityProp< string >( 'postType', diff --git a/packages/js/product-editor/src/blocks/regular-price/index.ts b/packages/js/product-editor/src/blocks/regular-price/index.ts index c1651d35880..d52482c6070 100644 --- a/packages/js/product-editor/src/blocks/regular-price/index.ts +++ b/packages/js/product-editor/src/blocks/regular-price/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { SalePriceBlockAttributes } from './types'; @@ -24,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/sale-price/edit.tsx b/packages/js/product-editor/src/blocks/sale-price/edit.tsx index e96691d7e65..27d9f064091 100644 --- a/packages/js/product-editor/src/blocks/sale-price/edit.tsx +++ b/packages/js/product-editor/src/blocks/sale-price/edit.tsx @@ -2,8 +2,8 @@ * External dependencies */ import classNames from 'classnames'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { Product } from '@woocommerce/data'; -import { useBlockProps } from '@wordpress/block-editor'; import { BlockEditProps } from '@wordpress/blocks'; import { useInstanceId } from '@wordpress/compose'; import { useEntityProp } from '@wordpress/core-data'; @@ -26,7 +26,7 @@ export function Edit( { attributes, clientId, }: BlockEditProps< SalePriceBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { label, help } = attributes; const [ regularPrice ] = useEntityProp< string >( 'postType', diff --git a/packages/js/product-editor/src/blocks/sale-price/index.ts b/packages/js/product-editor/src/blocks/sale-price/index.ts index c1651d35880..d52482c6070 100644 --- a/packages/js/product-editor/src/blocks/sale-price/index.ts +++ b/packages/js/product-editor/src/blocks/sale-price/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { SalePriceBlockAttributes } from './types'; @@ -24,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/schedule-sale/edit.tsx b/packages/js/product-editor/src/blocks/schedule-sale/edit.tsx index cb240ceea0b..daa587f855e 100644 --- a/packages/js/product-editor/src/blocks/schedule-sale/edit.tsx +++ b/packages/js/product-editor/src/blocks/schedule-sale/edit.tsx @@ -1,10 +1,10 @@ /** * External dependencies */ +import { useWooBlockProps } from '@woocommerce/block-templates'; import { DateTimePickerControl } from '@woocommerce/components'; import { Product } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; -import { useBlockProps } from '@wordpress/block-editor'; import { BlockEditProps } from '@wordpress/blocks'; import { ToggleControl } from '@wordpress/components'; import { useEntityProp } from '@wordpress/core-data'; @@ -24,9 +24,10 @@ import { useProductEdits } from '../../hooks/use-product-edits'; import { useValidation } from '../../contexts/validation-context'; export function Edit( { + attributes, clientId, }: BlockEditProps< ScheduleSalePricingBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { hasEdit } = useProductEdits(); const dateTimeFormat = getSettings().formats.datetime; diff --git a/packages/js/product-editor/src/blocks/schedule-sale/index.ts b/packages/js/product-editor/src/blocks/schedule-sale/index.ts index 1e5ea6faf5d..a503751f2d1 100644 --- a/packages/js/product-editor/src/blocks/schedule-sale/index.ts +++ b/packages/js/product-editor/src/blocks/schedule-sale/index.ts @@ -1,13 +1,12 @@ /** * External dependencies */ -import { createElement } from '@wordpress/element'; import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { ScheduleSalePricingBlockAttributes } from './types'; @@ -25,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/section/edit.tsx b/packages/js/product-editor/src/blocks/section/edit.tsx index bd4d59c5d2b..3f18c455e4f 100644 --- a/packages/js/product-editor/src/blocks/section/edit.tsx +++ b/packages/js/product-editor/src/blocks/section/edit.tsx @@ -4,8 +4,8 @@ import classNames from 'classnames'; import { createElement } from '@wordpress/element'; import type { BlockEditProps } from '@wordpress/blocks'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { - useBlockProps, // @ts-expect-error no exported member. useInnerBlocksProps, } from '@wordpress/block-editor'; @@ -20,7 +20,7 @@ export function Edit( { attributes, }: BlockEditProps< SectionBlockAttributes > ) { const { description, title, blockGap } = attributes; - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const innerBlockProps = useInnerBlocksProps( { className: classNames( diff --git a/packages/js/product-editor/src/blocks/section/index.ts b/packages/js/product-editor/src/blocks/section/index.ts index 2fc3fe0fa23..addbd405737 100644 --- a/packages/js/product-editor/src/blocks/section/index.ts +++ b/packages/js/product-editor/src/blocks/section/index.ts @@ -1,13 +1,12 @@ /** * External dependencies */ -import { createElement } from '@wordpress/element'; import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { SectionBlockAttributes } from './types'; @@ -24,5 +23,5 @@ export const settings: Partial< BlockConfiguration< SectionBlockAttributes > > = }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/shipping-class/edit.tsx b/packages/js/product-editor/src/blocks/shipping-class/edit.tsx index 85061e49b52..8575360178c 100644 --- a/packages/js/product-editor/src/blocks/shipping-class/edit.tsx +++ b/packages/js/product-editor/src/blocks/shipping-class/edit.tsx @@ -2,6 +2,7 @@ * External dependencies */ import { BlockEditProps } from '@wordpress/blocks'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { Link } from '@woocommerce/components'; import { EXPERIMENTAL_PRODUCT_SHIPPING_CLASSES_STORE_NAME, @@ -10,7 +11,6 @@ import { } from '@woocommerce/data'; import { getNewPath } from '@woocommerce/navigation'; import { recordEvent } from '@woocommerce/tracks'; -import { useBlockProps } from '@wordpress/block-editor'; import { BaseControl, SelectControl } from '@wordpress/components'; import { useInstanceId } from '@wordpress/compose'; import { useSelect, useDispatch } from '@wordpress/data'; @@ -69,11 +69,13 @@ function extractDefaultShippingClassFromProduct( } } -export function Edit( {}: BlockEditProps< ShippingClassBlockAttributes > ) { +export function Edit( { + attributes, +}: BlockEditProps< ShippingClassBlockAttributes > ) { const [ showShippingClassModal, setShowShippingClassModal ] = useState( false ); - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { createProductShippingClass, invalidateResolution } = useDispatch( EXPERIMENTAL_PRODUCT_SHIPPING_CLASSES_STORE_NAME diff --git a/packages/js/product-editor/src/blocks/shipping-class/index.ts b/packages/js/product-editor/src/blocks/shipping-class/index.ts index ae58594e10e..c61e625622d 100644 --- a/packages/js/product-editor/src/blocks/shipping-class/index.ts +++ b/packages/js/product-editor/src/blocks/shipping-class/index.ts @@ -1,13 +1,12 @@ /** * External dependencies */ -import { createElement } from '@wordpress/element'; import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { ShippingClassBlockAttributes } from './types'; @@ -25,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/shipping-dimensions/edit.tsx b/packages/js/product-editor/src/blocks/shipping-dimensions/edit.tsx index 16a82d972de..0938e223813 100644 --- a/packages/js/product-editor/src/blocks/shipping-dimensions/edit.tsx +++ b/packages/js/product-editor/src/blocks/shipping-dimensions/edit.tsx @@ -1,7 +1,7 @@ /** * External dependencies */ -import { useBlockProps } from '@wordpress/block-editor'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { BlockEditProps } from '@wordpress/blocks'; import { OPTIONS_STORE_NAME, @@ -36,9 +36,10 @@ import { import { useValidation } from '../../contexts/validation-context'; export function Edit( { + attributes, clientId, }: BlockEditProps< ShippingDimensionsBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const [ dimensions, setDimensions ] = useEntityProp< Partial< ProductDimensions > | null >( diff --git a/packages/js/product-editor/src/blocks/shipping-dimensions/index.ts b/packages/js/product-editor/src/blocks/shipping-dimensions/index.ts index 25b3e065d70..7bf5acf1c12 100644 --- a/packages/js/product-editor/src/blocks/shipping-dimensions/index.ts +++ b/packages/js/product-editor/src/blocks/shipping-dimensions/index.ts @@ -1,13 +1,12 @@ /** * External dependencies */ -import { createElement } from '@wordpress/element'; import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { ShippingDimensionsBlockAttributes } from './types'; @@ -25,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/summary/edit.tsx b/packages/js/product-editor/src/blocks/summary/edit.tsx index 7a3c1cd2673..bc72958de1b 100644 --- a/packages/js/product-editor/src/blocks/summary/edit.tsx +++ b/packages/js/product-editor/src/blocks/summary/edit.tsx @@ -2,6 +2,7 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { createElement } from '@wordpress/element'; import { BlockEditProps } from '@wordpress/blocks'; import { BaseControl } from '@wordpress/components'; @@ -16,7 +17,6 @@ import { BlockControls, RichText, store as blockEditorStore, - useBlockProps, } from '@wordpress/block-editor'; /** @@ -31,7 +31,7 @@ export function Edit( { setAttributes, }: BlockEditProps< SummaryAttributes > ) { const { align, allowedFormats, direction, label } = attributes; - const blockProps = useBlockProps( { + const blockProps = useWooBlockProps( attributes, { style: { direction }, } ); const contentId = useInstanceId( diff --git a/packages/js/product-editor/src/blocks/summary/index.ts b/packages/js/product-editor/src/blocks/summary/index.ts index aa9e35a168c..634fcfa6837 100644 --- a/packages/js/product-editor/src/blocks/summary/index.ts +++ b/packages/js/product-editor/src/blocks/summary/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { SummaryAttributes } from './types'; @@ -22,7 +22,7 @@ export const settings = { }; export function init() { - return initBlock< SummaryAttributes >( { + return registerWooBlockType< SummaryAttributes >( { name, metadata, settings, diff --git a/packages/js/product-editor/src/blocks/tab/edit.tsx b/packages/js/product-editor/src/blocks/tab/edit.tsx index 86624c577a1..d9af3352387 100644 --- a/packages/js/product-editor/src/blocks/tab/edit.tsx +++ b/packages/js/product-editor/src/blocks/tab/edit.tsx @@ -1,10 +1,11 @@ /** * External dependencies */ -import { InnerBlocks, useBlockProps } from '@wordpress/block-editor'; +import { InnerBlocks } from '@wordpress/block-editor'; import classnames from 'classnames'; import { createElement } from '@wordpress/element'; import type { BlockAttributes, BlockEditProps } from '@wordpress/blocks'; +import { useWooBlockProps } from '@woocommerce/block-templates'; /** * Internal dependencies @@ -27,7 +28,7 @@ export function Edit( { selectedTab?: string | null; }; } ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { id, title, order, isSelected: contextIsSelected } = attributes; const isSelected = context?.selectedTab === id; if ( isSelected !== contextIsSelected ) { diff --git a/packages/js/product-editor/src/blocks/tab/index.ts b/packages/js/product-editor/src/blocks/tab/index.ts index 1c048cec59f..a72be689268 100644 --- a/packages/js/product-editor/src/blocks/tab/index.ts +++ b/packages/js/product-editor/src/blocks/tab/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit, TabBlockAttributes } from './edit'; @@ -21,5 +21,5 @@ export const settings: Partial< BlockConfiguration< TabBlockAttributes > > = { }; export function init() { - initBlock( { name, metadata, settings } ); + registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/tag/edit.tsx b/packages/js/product-editor/src/blocks/tag/edit.tsx index 7d3ecf635a4..75f402a55d2 100644 --- a/packages/js/product-editor/src/blocks/tag/edit.tsx +++ b/packages/js/product-editor/src/blocks/tag/edit.tsx @@ -2,9 +2,9 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { createElement } from '@wordpress/element'; import { BlockAttributes } from '@wordpress/blocks'; -import { useBlockProps } from '@wordpress/block-editor'; import { BaseControl } from '@wordpress/components'; import { ProductTag } from '@woocommerce/data'; import { useInstanceId } from '@wordpress/compose'; @@ -25,7 +25,7 @@ export function Edit( { attributes: BlockAttributes; context?: { postType?: string }; } ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { name, label, placeholder } = attributes; const [ tags, setTags ] = useEntityProp< Pick< ProductTag, 'id' | 'name' >[] diff --git a/packages/js/product-editor/src/blocks/tag/index.ts b/packages/js/product-editor/src/blocks/tag/index.ts index 43b3aabdc22..6af10d47939 100644 --- a/packages/js/product-editor/src/blocks/tag/index.ts +++ b/packages/js/product-editor/src/blocks/tag/index.ts @@ -1,7 +1,11 @@ +/** + * External dependencies + */ +import { registerWooBlockType } from '@woocommerce/block-templates'; + /** * Internal dependencies */ -import { initBlock } from '../../utils'; import metadata from './block.json'; import { Edit } from './edit'; @@ -15,4 +19,4 @@ export const settings = { }; export const init = () => - initBlock( { name, metadata: metadata as never, settings } ); + registerWooBlockType( { name, metadata: metadata as never, settings } ); diff --git a/packages/js/product-editor/src/blocks/taxonomy/edit.tsx b/packages/js/product-editor/src/blocks/taxonomy/edit.tsx index 84340ac5d44..33e3a1fe570 100644 --- a/packages/js/product-editor/src/blocks/taxonomy/edit.tsx +++ b/packages/js/product-editor/src/blocks/taxonomy/edit.tsx @@ -2,7 +2,6 @@ * External dependencies */ import type { BlockAttributes } from '@wordpress/blocks'; -import { useBlockProps } from '@wordpress/block-editor'; import { createElement, useState, @@ -11,6 +10,7 @@ import { useEffect, } from '@wordpress/element'; import '@woocommerce/settings'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { __experimentalSelectTreeControl as SelectTreeControl } from '@woocommerce/components'; import { useEntityProp } from '@wordpress/core-data'; import { useDebounce, useInstanceId } from '@wordpress/compose'; @@ -37,7 +37,7 @@ export function Edit( { }: { attributes: TaxonomyBlockAttributes; } ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { hierarchical }: TaxonomyMetadata = useSelect( ( select ) => select( 'core' ).getTaxonomy( attributes.slug ) || { diff --git a/packages/js/product-editor/src/blocks/taxonomy/index.ts b/packages/js/product-editor/src/blocks/taxonomy/index.ts index 59d35906a12..37f321821db 100644 --- a/packages/js/product-editor/src/blocks/taxonomy/index.ts +++ b/packages/js/product-editor/src/blocks/taxonomy/index.ts @@ -1,7 +1,11 @@ +/** + * External dependencies + */ +import { registerWooBlockType } from '@woocommerce/block-templates'; + /** * Internal dependencies */ -import { initBlock } from '../../utils'; import metadata from './block.json'; import { Edit } from './edit'; @@ -15,7 +19,7 @@ export const settings = { }; export const init = () => - initBlock( { + registerWooBlockType( { name, metadata: metadata as never, settings, diff --git a/packages/js/product-editor/src/blocks/toggle/edit.tsx b/packages/js/product-editor/src/blocks/toggle/edit.tsx index 1c5819a5472..6b9a46dddb5 100644 --- a/packages/js/product-editor/src/blocks/toggle/edit.tsx +++ b/packages/js/product-editor/src/blocks/toggle/edit.tsx @@ -3,9 +3,9 @@ */ import { createElement } from '@wordpress/element'; import { BlockEditProps } from '@wordpress/blocks'; -import { useBlockProps } from '@wordpress/block-editor'; import { useEntityProp } from '@wordpress/core-data'; import { ToggleControl } from '@wordpress/components'; +import { useWooBlockProps } from '@woocommerce/block-templates'; /** * Internal dependencies @@ -16,7 +16,7 @@ import { sanitizeHTML } from '../../utils/sanitize-html'; export function Edit( { attributes, }: BlockEditProps< ToggleBlockAttributes > ) { - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const { label, property, disabled, disabledCopy } = attributes; const [ value, setValue ] = useEntityProp< boolean >( 'postType', diff --git a/packages/js/product-editor/src/blocks/toggle/index.ts b/packages/js/product-editor/src/blocks/toggle/index.ts index ca9896724dd..43d9b3fa945 100644 --- a/packages/js/product-editor/src/blocks/toggle/index.ts +++ b/packages/js/product-editor/src/blocks/toggle/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { ToggleBlockAttributes } from './types'; @@ -23,5 +23,5 @@ export const settings: Partial< BlockConfiguration< ToggleBlockAttributes > > = }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/variation-items/edit.tsx b/packages/js/product-editor/src/blocks/variation-items/edit.tsx index 13bdf5d70d5..b57528f19f2 100644 --- a/packages/js/product-editor/src/blocks/variation-items/edit.tsx +++ b/packages/js/product-editor/src/blocks/variation-items/edit.tsx @@ -8,7 +8,7 @@ import { ProductVariation, useUserPreferences, } from '@woocommerce/data'; -import { useBlockProps } from '@wordpress/block-editor'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { recordEvent } from '@woocommerce/tracks'; import { BlockEditProps } from '@wordpress/blocks'; import { createElement, useMemo, useRef } from '@wordpress/element'; @@ -29,6 +29,7 @@ import { TRACKS_SOURCE } from '../../constants'; import { handlePrompt } from '../../utils/handle-prompt'; export function Edit( { + attributes, context, }: BlockEditProps< VariationOptionsBlockAttributes > & { context?: { @@ -40,7 +41,7 @@ export function Edit( { EXPERIMENTAL_PRODUCT_VARIATIONS_STORE_NAME ); const productId = useEntityId( 'postType', 'product' ); - const blockProps = useBlockProps(); + const blockProps = useWooBlockProps( attributes ); const [ productStatus ] = useEntityProp< string >( 'postType', 'product', diff --git a/packages/js/product-editor/src/blocks/variation-items/index.ts b/packages/js/product-editor/src/blocks/variation-items/index.ts index 18412dd99c7..17a6b007a32 100644 --- a/packages/js/product-editor/src/blocks/variation-items/index.ts +++ b/packages/js/product-editor/src/blocks/variation-items/index.ts @@ -2,11 +2,11 @@ * External dependencies */ import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { VariationOptionsBlockAttributes } from './types'; @@ -24,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/variation-options/edit.tsx b/packages/js/product-editor/src/blocks/variation-options/edit.tsx index fd36230821b..f6aa0586da6 100644 --- a/packages/js/product-editor/src/blocks/variation-options/edit.tsx +++ b/packages/js/product-editor/src/blocks/variation-options/edit.tsx @@ -2,12 +2,13 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import { useBlockProps } from '@wordpress/block-editor'; +import { BlockEditProps, BlockAttributes } from '@wordpress/blocks'; import { createElement, createInterpolateElement, useMemo, } from '@wordpress/element'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { Product, ProductAttribute, @@ -26,8 +27,10 @@ import { useProductAttributes } from '../../hooks/use-product-attributes'; import { AttributeControl } from '../../components/attribute-control'; import { useProductVariationsHelper } from '../../hooks/use-product-variations-helper'; -export function Edit() { - const blockProps = useBlockProps(); +export function Edit( { + attributes: blockAttributes, +}: BlockEditProps< BlockAttributes > ) { + const blockProps = useWooBlockProps( blockAttributes ); const { generateProductVariations } = useProductVariationsHelper(); const { updateUserPreferences, diff --git a/packages/js/product-editor/src/blocks/variation-options/index.ts b/packages/js/product-editor/src/blocks/variation-options/index.ts index ad48fe3aa9e..17a6b007a32 100644 --- a/packages/js/product-editor/src/blocks/variation-options/index.ts +++ b/packages/js/product-editor/src/blocks/variation-options/index.ts @@ -1,13 +1,12 @@ /** * External dependencies */ -import { createElement } from '@wordpress/element'; import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { VariationOptionsBlockAttributes } from './types'; @@ -25,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/blocks/variations/edit.tsx b/packages/js/product-editor/src/blocks/variations/edit.tsx index 9b4af8e98cb..0ffaa045f6b 100644 --- a/packages/js/product-editor/src/blocks/variations/edit.tsx +++ b/packages/js/product-editor/src/blocks/variations/edit.tsx @@ -4,12 +4,12 @@ import classNames from 'classnames'; import type { BlockEditProps } from '@wordpress/blocks'; import { Button } from '@wordpress/components'; +import { useWooBlockProps } from '@woocommerce/block-templates'; import { Product, ProductAttribute } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { createElement, useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { - useBlockProps, // @ts-expect-error no exported member. useInnerBlocksProps, } from '@wordpress/block-editor'; @@ -63,7 +63,7 @@ export function Edit( { const hasAttributes = hasAttributesUsedForVariations( productAttributes ); - const blockProps = useBlockProps( { + const blockProps = useWooBlockProps( attributes, { className: classNames( { 'wp-block-woocommerce-product-variations-fields--has-attributes': hasAttributes, diff --git a/packages/js/product-editor/src/blocks/variations/index.ts b/packages/js/product-editor/src/blocks/variations/index.ts index 2dc2e6bbc84..6f2dfb0dc1a 100644 --- a/packages/js/product-editor/src/blocks/variations/index.ts +++ b/packages/js/product-editor/src/blocks/variations/index.ts @@ -1,13 +1,12 @@ /** * External dependencies */ -import { createElement } from '@wordpress/element'; import { BlockConfiguration } from '@wordpress/blocks'; +import { registerWooBlockType } from '@woocommerce/block-templates'; /** * Internal dependencies */ -import { initBlock } from '../../utils/init-block'; import blockConfiguration from './block.json'; import { Edit } from './edit'; import { VariationsBlockAttributes } from './types'; @@ -25,5 +24,5 @@ export const settings: Partial< }; export function init() { - return initBlock( { name, metadata, settings } ); + return registerWooBlockType( { name, metadata, settings } ); } diff --git a/packages/js/product-editor/src/components/tabs/test/tabs.spec.tsx b/packages/js/product-editor/src/components/tabs/test/tabs.spec.tsx index b6948599b4a..97d9905a356 100644 --- a/packages/js/product-editor/src/components/tabs/test/tabs.spec.tsx +++ b/packages/js/product-editor/src/components/tabs/test/tabs.spec.tsx @@ -13,9 +13,9 @@ import { useState } from '@wordpress/element'; import { Tabs } from '../'; import { Edit as Tab } from '../../../blocks/tab/edit'; -jest.mock( '@wordpress/block-editor', () => ( { - ...jest.requireActual( '@wordpress/block-editor' ), - useBlockProps: jest.fn(), +jest.mock( '@woocommerce/block-templates', () => ( { + ...jest.requireActual( '@woocommerce/block-templates' ), + useWooBlockProps: jest.fn(), } ) ); jest.mock( '@woocommerce/navigation', () => ( { diff --git a/packages/js/product-editor/src/utils/init-block.ts b/packages/js/product-editor/src/utils/init-block.ts index 49d157b4dd4..ba8f2b0aaf2 100644 --- a/packages/js/product-editor/src/utils/init-block.ts +++ b/packages/js/product-editor/src/utils/init-block.ts @@ -1,11 +1,9 @@ /** * External dependencies */ -import { - Block, - BlockConfiguration, - registerBlockType, -} from '@wordpress/blocks'; +import { Block, BlockConfiguration } from '@wordpress/blocks'; +import deprecated from '@wordpress/deprecated'; +import { registerWooBlockType } from '@woocommerce/block-templates'; interface BlockRepresentation< T extends Record< string, object > > { name?: string; @@ -23,9 +21,13 @@ export function initBlock< // eslint-disable-next-line @typescript-eslint/no-explicit-any T extends Record< string, any > = Record< string, any > >( block: BlockRepresentation< T > ): Block< T > | undefined { + deprecated( 'initBlock()', { + alternative: 'registerWooBlockType() from @woocommerce/block-templates', + } ); + if ( ! block ) { return; } - const { metadata, settings, name } = block; - return registerBlockType< T >( { name, ...metadata }, settings ); + + return registerWooBlockType( block ); } diff --git a/plugins/woocommerce-admin/webpack.config.js b/plugins/woocommerce-admin/webpack.config.js index 6a97080e6b7..699a2be622b 100644 --- a/plugins/woocommerce-admin/webpack.config.js +++ b/plugins/woocommerce-admin/webpack.config.js @@ -40,6 +40,7 @@ const wcAdminPackages = [ 'data', 'tracks', 'onboarding', + 'block-templates', 'product-editor', ]; // wpAdminScripts are loaded on wp-admin pages outside the context of WooCommerce Admin diff --git a/plugins/woocommerce-beta-tester/changelog/add-expose-block-id-and-order b/plugins/woocommerce-beta-tester/changelog/add-expose-block-id-and-order new file mode 100644 index 00000000000..d878c1aba33 --- /dev/null +++ b/plugins/woocommerce-beta-tester/changelog/add-expose-block-id-and-order @@ -0,0 +1,5 @@ +Significance: patch +Type: tweak +Comment: Code formatting only. + + diff --git a/plugins/woocommerce-beta-tester/package.json b/plugins/woocommerce-beta-tester/package.json index 7b4faa6bcf5..9cb9947ae39 100644 --- a/plugins/woocommerce-beta-tester/package.json +++ b/plugins/woocommerce-beta-tester/package.json @@ -50,9 +50,9 @@ "js": "assets/js/*.js" } }, - "config": { - "build_step": "pnpm run build:zip" - }, + "config": { + "build_step": "pnpm run build:zip" + }, "scripts": { "postinstall": "composer install", "changelog": "composer exec -- changelogger", diff --git a/plugins/woocommerce/changelog/add-expose-block-id-and-order b/plugins/woocommerce/changelog/add-expose-block-id-and-order new file mode 100644 index 00000000000..56824e61797 --- /dev/null +++ b/plugins/woocommerce/changelog/add-expose-block-id-and-order @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Include template block ID and block order in formatted block template so they are available to the client. diff --git a/plugins/woocommerce/src/Internal/Admin/BlockTemplates/AbstractBlock.php b/plugins/woocommerce/src/Internal/Admin/BlockTemplates/AbstractBlock.php index 31696720603..bef5156f208 100644 --- a/plugins/woocommerce/src/Internal/Admin/BlockTemplates/AbstractBlock.php +++ b/plugins/woocommerce/src/Internal/Admin/BlockTemplates/AbstractBlock.php @@ -10,6 +10,8 @@ use Automattic\WooCommerce\Admin\BlockTemplates\ContainerInterface; * Block configuration used to specify blocks in BlockTemplate. */ class AbstractBlock implements BlockInterface { + use BlockFormattedTemplateTrait; + /** * The block name. * @@ -191,17 +193,4 @@ class AbstractBlock implements BlockInterface { return ! ( $is_in_parent && $is_in_root_template ); } - /** - * Get the block configuration as a formatted template. - * - * @return array The block configuration as a formatted template. - */ - public function get_formatted_template(): array { - $arr = [ - $this->get_name(), - $this->get_attributes(), - ]; - - return $arr; - } } diff --git a/plugins/woocommerce/src/Internal/Admin/BlockTemplates/BlockContainerTrait.php b/plugins/woocommerce/src/Internal/Admin/BlockTemplates/BlockContainerTrait.php index 2a69006f109..4a235771bc2 100644 --- a/plugins/woocommerce/src/Internal/Admin/BlockTemplates/BlockContainerTrait.php +++ b/plugins/woocommerce/src/Internal/Admin/BlockTemplates/BlockContainerTrait.php @@ -9,6 +9,10 @@ use Automattic\WooCommerce\Admin\BlockTemplates\ContainerInterface; * Trait for block containers. */ trait BlockContainerTrait { + use BlockFormattedTemplateTrait { + get_formatted_template as get_block_formatted_template; + } + /** * The inner blocks. * @@ -197,10 +201,7 @@ trait BlockContainerTrait { * Get the inner blocks as a formatted template. */ public function get_formatted_template(): array { - $arr = [ - $this->get_name(), - $this->get_attributes(), - ]; + $arr = $this->get_block_formatted_template(); $inner_blocks = $this->get_inner_blocks_sorted_by_order(); diff --git a/plugins/woocommerce/src/Internal/Admin/BlockTemplates/BlockFormattedTemplateTrait.php b/plugins/woocommerce/src/Internal/Admin/BlockTemplates/BlockFormattedTemplateTrait.php new file mode 100644 index 00000000000..3aedf5fe62b --- /dev/null +++ b/plugins/woocommerce/src/Internal/Admin/BlockTemplates/BlockFormattedTemplateTrait.php @@ -0,0 +1,28 @@ +get_name(), + array_merge( + $this->get_attributes(), + [ + '_templateBlockId' => $this->get_id(), + '_templateBlockOrder' => $this->get_order(), + ] + ), + ]; + + return $arr; + } +} diff --git a/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php b/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php index 008052d3ad4..c9f108df81d 100644 --- a/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php +++ b/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php @@ -272,6 +272,7 @@ class WCAdminAssets { 'wc-store-data', 'wc-currency', 'wc-navigation', + 'wc-block-templates', 'wc-product-editor', ); @@ -337,6 +338,14 @@ class WCAdminAssets { ); wp_style_add_data( 'wc-components', 'rtl', 'replace' ); + wp_register_style( + 'wc-block-templates', + self::get_url( 'block-templates/style', 'css' ), + array(), + $css_file_version + ); + wp_style_add_data( 'wc-block-templates', 'rtl', 'replace' ); + wp_register_style( 'wc-product-editor', self::get_url( 'product-editor/style', 'css' ), @@ -405,6 +414,7 @@ class WCAdminAssets { 'wc-date', 'wc-components', 'wc-tracks', + 'wc-block-templates', 'wc-product-editor', ]; foreach ( $handles_for_injection as $handle ) { diff --git a/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/BlockTemplateTest.php b/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/BlockTemplateTest.php index 850c55dde58..7fa1345c2d3 100644 --- a/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/BlockTemplateTest.php +++ b/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/BlockTemplateTest.php @@ -310,42 +310,55 @@ class BlockTemplateTest extends WC_Unit_Test_Case { [ 'test-block-name-a', [ - 'attr-1' => 'value-1', - 'attr-2' => 'value-2', + 'attr-1' => 'value-1', + 'attr-2' => 'value-2', + '_templateBlockId' => 'test-block-name-a-1', + '_templateBlockOrder' => 10, ], ], [ 'test-block-name-b', [ - 'attr-1' => 'value-1', - 'attr-2' => 'value-2', + 'attr-1' => 'value-1', + 'attr-2' => 'value-2', + '_templateBlockId' => 'test-block-name-b-1', + '_templateBlockOrder' => 50, ], [ [ 'test-block-name-1', [ - 'attr-3' => 'value-3', - 'attr-4' => 'value-4', + 'attr-3' => 'value-3', + 'attr-4' => 'value-4', + '_templateBlockId' => 'test-block-name-1-1', + '_templateBlockOrder' => 10, ], ], [ 'test-block-name-2', [ - 'attr-1' => 'value-1', - 'attr-2' => 'value-2', + 'attr-1' => 'value-1', + 'attr-2' => 'value-2', + '_templateBlockId' => 'test-block-name-2-1', + '_templateBlockOrder' => 20, ], ], [ 'test-block-name-3', - [], + [ + '_templateBlockId' => 'test-block-name-3-1', + '_templateBlockOrder' => 30, + ], ], ], ], [ 'test-block-name-c', [ - 'attr-c1' => 'value-c1', - 'attr-c2' => 'value-c2', + 'attr-c1' => 'value-c1', + 'attr-c2' => 'value-c2', + '_templateBlockId' => 'test-block-name-c-1', + '_templateBlockOrder' => 100, ], ], ], @@ -446,52 +459,71 @@ class BlockTemplateTest extends WC_Unit_Test_Case { [ 'test-block-name-a', [ - 'attr-1' => 'value-1', - 'attr-2' => 'value-2', + 'attr-1' => 'value-1', + 'attr-2' => 'value-2', + '_templateBlockId' => 'a', + '_templateBlockOrder' => 10, ], [ [ 'inserted-block', - [], + [ + '_templateBlockId' => 'inserted-block-1', + '_templateBlockOrder' => 10, + ], ], ], ], [ 'test-block-name-b', [ - 'attr-1' => 'value-1', - 'attr-2' => 'value-2', + 'attr-1' => 'value-1', + 'attr-2' => 'value-2', + '_templateBlockId' => 'b', + '_templateBlockOrder' => 50, ], [ [ 'test-block-name-1', [ - 'attr-3' => 'value-3', - 'attr-4' => 'value-4', + 'attr-3' => 'value-3', + 'attr-4' => 'value-4', + '_templateBlockId' => 'test-block-name-1-1', + '_templateBlockOrder' => 10, ], ], [ 'another-inserted-block', - [], + [ + '_templateBlockId' => 'another-inserted-block-1', + '_templateBlockOrder' => 15, + ], ], [ 'test-block-name-2', [ - 'attr-1' => 'value-1', - 'attr-2' => 'value-2', + 'attr-1' => 'value-1', + 'attr-2' => 'value-2', + '_templateBlockId' => 'test-block-name-2-1', + '_templateBlockOrder' => 20, ], ], [ 'test-block-name-3', - [], + [ + '_templateBlockId' => 'test-block-name-3-1', + '_templateBlockOrder' => 30, + ], ], ], ], [ 'test-block-name-c', [ - 'attr-c1' => 'value-c1', - 'attr-c2' => 'value-c2', + 'attr-c1' => 'value-c1', + 'attr-c2' => 'value-c2', + '_templateBlockId' => 'test-block-name-c-1', + '_templateBlockOrder' => 100, ], ], ], @@ -585,21 +617,28 @@ class BlockTemplateTest extends WC_Unit_Test_Case { [ 'test-block-name-a', [ - 'attr-1' => 'value-1', - 'attr-2' => 'value-2', + 'attr-1' => 'value-1', + 'attr-2' => 'value-2', + '_templateBlockId' => 'a', + '_templateBlockOrder' => 10, ], [ [ 'inserted-block', - [], + [ + '_templateBlockId' => 'inserted-block-1', + '_templateBlockOrder' => 10, + ], ], ], ], [ 'test-block-name-c', [ - 'attr-c1' => 'value-c1', - 'attr-c2' => 'value-c2', + 'attr-c1' => 'value-c1', + 'attr-c2' => 'value-c2', + '_templateBlockId' => 'test-block-name-c-1', + '_templateBlockOrder' => 100, ], ], ], diff --git a/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/BlockTest.php b/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/BlockTest.php index ae340d81a9d..47a813e8fb6 100644 --- a/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/BlockTest.php +++ b/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/BlockTest.php @@ -394,20 +394,27 @@ class BlockTest extends WC_Unit_Test_Case { [ 'test-block-name', [ - 'attr-1' => 'value-1', - 'attr-2' => 'value-2', + 'attr-1' => 'value-1', + 'attr-2' => 'value-2', + '_templateBlockId' => 'test-block-id', + '_templateBlockOrder' => 10, ], [ [ 'test-block-name-2', [ - 'attr-3' => 'value-3', - 'attr-4' => 'value-4', + 'attr-3' => 'value-3', + 'attr-4' => 'value-4', + '_templateBlockId' => 'test-block-id-2', + '_templateBlockOrder' => 10, ], ], [ 'test-block-name-3', - [], + [ + '_templateBlockId' => 'test-block-id-3', + '_templateBlockOrder' => 10, + ], ], ], ], @@ -466,27 +473,45 @@ class BlockTest extends WC_Unit_Test_Case { $this->assertSame( [ 'test-block-name', - [], + [ + '_templateBlockId' => 'test-block-name-1', + '_templateBlockOrder' => 10, + ], [ [ 'one', - [], + [ + '_templateBlockId' => 'one-1', + '_templateBlockOrder' => 1, + ], ], [ 'two', - [], + [ + '_templateBlockId' => 'two-1', + '_templateBlockOrder' => 2, + ], ], [ 'three', - [], + [ + '_templateBlockId' => 'three-1', + '_templateBlockOrder' => 3, + ], ], [ 'four', - [], + [ + '_templateBlockId' => 'four-1', + '_templateBlockOrder' => 4, + ], ], [ 'five', - [], + [ + '_templateBlockId' => 'five-1', + '_templateBlockOrder' => 5, + ], ], ], ], diff --git a/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/CustomBlockTest.php b/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/CustomBlockTest.php index c707f8505ec..3875f1dbe8f 100644 --- a/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/CustomBlockTest.php +++ b/plugins/woocommerce/tests/php/src/Internal/Admin/BlockTemplates/CustomBlockTest.php @@ -37,18 +37,25 @@ class CustomBlockTest extends WC_Unit_Test_Case { $this->assertSame( [ 'test-block-name', - [], + [ + '_templateBlockId' => 'test-block-name-1', + '_templateBlockOrder' => 10, + ], [ [ 'custom-inner-block', [ - 'title' => 'a', + 'title' => 'a', + '_templateBlockId' => 'custom-inner-block-1', + '_templateBlockOrder' => 10, ], ], [ 'custom-inner-block', [ - 'title' => 'b', + 'title' => 'b', + '_templateBlockId' => 'custom-inner-block-2', + '_templateBlockOrder' => 10, ], ], ], @@ -72,12 +79,17 @@ class CustomBlockTest extends WC_Unit_Test_Case { $this->assertSame( [ 'test-block-name', - [], + [ + '_templateBlockId' => 'test-block-name-1', + '_templateBlockOrder' => 10, + ], [ [ 'custom-inner-block', [ - 'title' => 'b', + 'title' => 'b', + '_templateBlockId' => 'custom-inner-block-2', + '_templateBlockOrder' => 10, ], ], ], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34aee6ef42b..c8ce8dfa8dd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,7 +117,7 @@ importers: version: 1.1.2(webpack@5.76.3) webpack: specifier: ^5.76.2 - version: 5.76.3(webpack-cli@3.3.12) + version: 5.76.3(webpack-cli@4.9.2) packages/js/admin-e2e-tests: dependencies: @@ -460,6 +460,91 @@ importers: specifier: ^8.32.0 version: 8.32.0 + packages/js/block-templates: + dependencies: + '@wordpress/block-editor': + specifier: ^9.8.0 + version: 9.8.0(@babel/core@7.21.3)(react@17.0.2) + '@wordpress/blocks': + specifier: ^12.3.0 + version: 12.5.0(react@17.0.2) + devDependencies: + '@babel/core': + specifier: ^7.21.3 + version: 7.21.3 + '@babel/runtime': + specifier: ^7.17.2 + version: 7.21.0 + '@testing-library/jest-dom': + specifier: ^5.16.2 + version: 5.16.2 + '@testing-library/react-hooks': + specifier: ^8.0.1 + version: 8.0.1(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2) + '@types/jest': + specifier: ^27.4.1 + version: 27.4.1 + '@types/testing-library__jest-dom': + specifier: ^5.14.3 + version: 5.14.3 + '@types/wordpress__block-editor': + specifier: ^7.0.0 + version: 7.0.0(react@17.0.2) + '@types/wordpress__blocks': + specifier: ^11.0.7 + version: 11.0.7(react@17.0.2) + '@woocommerce/eslint-plugin': + specifier: workspace:* + version: link:../eslint-plugin + '@woocommerce/internal-js-tests': + specifier: workspace:* + version: link:../internal-js-tests + '@woocommerce/internal-style-build': + specifier: workspace:* + version: link:../internal-style-build + '@wordpress/browserslist-config': + specifier: wp-6.0 + version: 4.1.3 + copy-webpack-plugin: + specifier: ^9.1.0 + version: 9.1.0(webpack@5.76.3) + css-loader: + specifier: ^3.6.0 + version: 3.6.0(webpack@5.76.3) + eslint: + specifier: ^8.32.0 + version: 8.32.0 + jest: + specifier: ^27.5.1 + version: 27.5.1 + jest-cli: + specifier: ^27.5.1 + version: 27.5.1 + postcss: + specifier: ^8.4.7 + version: 8.4.12 + postcss-loader: + specifier: ^4.3.0 + version: 4.3.0(postcss@8.4.12)(webpack@5.76.3) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + sass-loader: + specifier: ^10.2.1 + version: 10.4.1(sass@1.60.0)(webpack@5.76.3) + ts-jest: + specifier: ^27.1.3 + version: 27.1.3(@babel/core@7.21.3)(@types/jest@27.4.1)(jest@27.5.1)(typescript@5.1.6) + typescript: + specifier: ^5.1.6 + version: 5.1.6 + webpack: + specifier: ^5.70.0 + version: 5.76.3(webpack-cli@3.3.12) + webpack-cli: + specifier: ^3.3.12 + version: 3.3.12(webpack@5.76.3) + packages/js/components: dependencies: '@automattic/calypso-color-schemes': @@ -2191,6 +2276,9 @@ importers: '@woocommerce/admin-layout': specifier: workspace:* version: link:../admin-layout + '@woocommerce/block-templates': + specifier: workspace:* + version: link:../block-templates '@woocommerce/components': specifier: workspace:* version: link:../components @@ -2242,6 +2330,9 @@ importers: '@wordpress/date': specifier: wp-6.0 version: 4.6.1 + '@wordpress/deprecated': + specifier: wp-6.0 + version: 3.6.1 '@wordpress/editor': specifier: wp-6.0 version: 12.5.10(@babel/core@7.21.3)(@types/react@17.0.50)(react-dom@17.0.2)(react-with-direction@1.4.0)(react@17.0.2) @@ -3932,7 +4023,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.19 /@ariakit/core@0.2.9: resolution: {integrity: sha512-BIEfY3AHImIc8R5j5DaBrEBKLlki5f0vqZbs56I0xQb12ssjn5VqpLr8Jl4v7DBm5S4ktTgeHjLloTppKFdABg==} @@ -4176,7 +4267,7 @@ packages: '@wordpress/primitives': 3.38.0 '@wordpress/react-i18n': 3.8.0 classnames: 2.3.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) react-popper: 2.2.5(@popperjs/core@2.11.4)(react@17.0.2) @@ -4215,7 +4306,7 @@ packages: '@wordpress/primitives': 3.38.0 '@wordpress/react-i18n': 3.8.0 classnames: 2.3.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) react-popper: 2.2.5(@popperjs/core@2.11.4)(react@17.0.2) @@ -4316,7 +4407,7 @@ packages: /@babel/code-frame@7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: - '@babel/highlight': 7.18.6 + '@babel/highlight': 7.22.13 dev: true /@babel/code-frame@7.16.7: @@ -4341,7 +4432,6 @@ packages: /@babel/compat-data@7.16.4: resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} engines: {node: '>=6.9.0'} - dev: true /@babel/compat-data@7.17.7: resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} @@ -4365,7 +4455,7 @@ packages: '@babel/traverse': 7.17.3 '@babel/types': 7.17.0 convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) gensync: 1.0.0-beta.2 json5: 2.2.0 lodash: 4.17.21 @@ -4390,7 +4480,7 @@ packages: '@babel/traverse': 7.19.3 '@babel/types': 7.19.3 convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) gensync: 1.0.0-beta.2 json5: 2.2.0 semver: 6.3.0 @@ -4412,7 +4502,7 @@ packages: '@babel/traverse': 7.21.3 '@babel/types': 7.22.15 convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -4430,7 +4520,7 @@ packages: eslint: 8.32.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 - semver: 6.3.0 + semver: 6.3.1 dev: true /@babel/eslint-parser@7.17.0(@babel/core@7.17.8)(eslint@8.32.0): @@ -4487,7 +4577,7 @@ packages: resolution: {integrity: sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 @@ -4495,9 +4585,9 @@ packages: resolution: {integrity: sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 /@babel/helper-annotate-as-pure@7.16.0: @@ -4511,14 +4601,14 @@ packages: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 dev: true /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -4531,7 +4621,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-compilation-targets@7.16.3(@babel/core@7.12.9): resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==} @@ -4544,33 +4634,6 @@ packages: '@babel/helper-validator-option': 7.18.6 browserslist: 4.19.3 semver: 6.3.0 - dev: true - - /@babel/helper-compilation-targets@7.17.7(@babel/core@7.12.9): - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.21.0 - '@babel/core': 7.12.9 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.19.3 - semver: 6.3.0 - dev: true - - /@babel/helper-compilation-targets@7.17.7(@babel/core@7.17.8): - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.21.0 - '@babel/core': 7.17.8 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.19.3 - semver: 6.3.0 - dev: true /@babel/helper-compilation-targets@7.17.7(@babel/core@7.21.3): resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} @@ -4595,7 +4658,7 @@ packages: '@babel/core': 7.17.8 '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.4 - semver: 6.3.0 + semver: 6.3.1 /@babel/helper-compilation-targets@7.20.7(@babel/core@7.12.9): resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} @@ -4605,11 +4668,10 @@ packages: dependencies: '@babel/compat-data': 7.21.0 '@babel/core': 7.12.9 - '@babel/helper-validator-option': 7.21.0 + '@babel/helper-validator-option': 7.22.15 browserslist: 4.21.4 lru-cache: 5.1.1 - semver: 6.3.0 - dev: true + semver: 6.3.1 /@babel/helper-compilation-targets@7.20.7(@babel/core@7.17.8): resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} @@ -4623,6 +4685,7 @@ packages: browserslist: 4.21.4 lru-cache: 5.1.1 semver: 6.3.1 + dev: true /@babel/helper-compilation-targets@7.20.7(@babel/core@7.21.3): resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} @@ -4644,15 +4707,13 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.12.9) + '@babel/helper-split-export-declaration': 7.22.6 dev: true /@babel/helper-create-class-features-plugin@7.17.6(@babel/core@7.17.8): @@ -4680,15 +4741,13 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.21.3) + '@babel/helper-split-export-declaration': 7.22.6 /@babel/helper-create-class-features-plugin@7.19.0(@babel/core@7.12.9): resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} @@ -4697,16 +4756,13 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.12.9) + '@babel/helper-split-export-declaration': 7.22.6 /@babel/helper-create-class-features-plugin@7.19.0(@babel/core@7.17.8): resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} @@ -4715,15 +4771,14 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.17.8) + '@babel/helper-split-export-declaration': 7.22.6 + dev: true /@babel/helper-create-class-features-plugin@7.19.0(@babel/core@7.21.3): resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} @@ -4742,6 +4797,23 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.12.9): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.15 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.12.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.17.8): resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} @@ -4758,6 +4830,7 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 + dev: true /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.21.3): resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} @@ -4785,7 +4858,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.1 - dev: true /@babel/helper-create-regexp-features-plugin@7.19.0(@babel/core@7.17.8): resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} @@ -4796,6 +4868,7 @@ packages: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.1 + dev: true /@babel/helper-create-regexp-features-plugin@7.19.0(@babel/core@7.21.3): resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} @@ -4814,10 +4887,10 @@ packages: dependencies: '@babel/core': 7.21.3 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) - '@babel/helper-module-imports': 7.21.4 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/traverse': 7.21.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.1 @@ -4833,13 +4906,12 @@ packages: '@babel/core': 7.12.9 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) lodash.debounce: 4.0.8 resolve: 1.22.1 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.17.8): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} @@ -4848,13 +4920,14 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.21.5 - debug: 4.3.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4(supports-color@9.2.2) lodash.debounce: 4.0.8 resolve: 1.22.1 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.3): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} @@ -4863,11 +4936,11 @@ packages: dependencies: '@babel/core': 7.21.3 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.21.5 - debug: 4.3.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4(supports-color@9.2.2) lodash.debounce: 4.0.8 resolve: 1.22.1 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -4883,21 +4956,21 @@ packages: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-function-name@7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.22.4 + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 /@babel/helper-function-name@7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.22.4 + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} @@ -4910,13 +4983,13 @@ packages: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-member-expression-to-functions@7.21.0: resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-member-expression-to-functions@7.22.15: resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==} @@ -4929,26 +5002,25 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 - dev: true /@babel/helper-module-imports@7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 dev: true /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-module-imports@7.21.4: resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} @@ -4980,9 +5052,9 @@ packages: '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 + '@babel/template': 7.22.15 '@babel/traverse': 7.21.3 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color @@ -4995,12 +5067,25 @@ packages: '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 + '@babel/template': 7.22.15 '@babel/traverse': 7.21.3 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color + /@babel/helper-module-transforms@7.22.15(@babel/core@7.12.9): + resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 + /@babel/helper-module-transforms@7.22.15(@babel/core@7.17.8): resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} engines: {node: '>=6.9.0'} @@ -5013,6 +5098,7 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.15 + dev: true /@babel/helper-module-transforms@7.22.15(@babel/core@7.21.3): resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} @@ -5031,7 +5117,7 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} @@ -5046,11 +5132,11 @@ packages: /@babel/helper-plugin-utils@7.14.5: resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-plugin-utils@7.18.9: resolution: {integrity: sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-plugin-utils@7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} @@ -5073,7 +5159,6 @@ packages: '@babel/types': 7.22.4 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-remap-async-to-generator@7.16.8: resolution: {integrity: sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==} @@ -5081,7 +5166,7 @@ packages: dependencies: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color dev: true @@ -5096,10 +5181,9 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -5111,9 +5195,10 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -5125,7 +5210,7 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color @@ -5137,24 +5222,34 @@ packages: '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/traverse': 7.21.3 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-replace-supers@7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.20.7 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/template': 7.22.15 '@babel/traverse': 7.21.3 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color + /@babel/helper-replace-supers@7.22.9(@babel/core@7.12.9): + resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.15 + '@babel/helper-optimise-call-expression': 7.22.5 + /@babel/helper-replace-supers@7.22.9(@babel/core@7.17.8): resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} engines: {node: '>=6.9.0'} @@ -5165,6 +5260,7 @@ packages: '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.15 '@babel/helper-optimise-call-expression': 7.22.5 + dev: true /@babel/helper-replace-supers@7.22.9(@babel/core@7.21.3): resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} @@ -5181,13 +5277,13 @@ packages: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-simple-access@7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} @@ -5199,7 +5295,7 @@ packages: resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} @@ -5211,7 +5307,7 @@ packages: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} @@ -5242,7 +5338,6 @@ packages: /@babel/helper-validator-option@7.14.5: resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-option@7.16.7: resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} @@ -5266,9 +5361,9 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.21.0 - '@babel/template': 7.20.7 + '@babel/template': 7.22.15 '@babel/traverse': 7.21.3 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color @@ -5286,9 +5381,9 @@ packages: resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 + '@babel/template': 7.22.15 '@babel/traverse': 7.21.3 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color @@ -5320,14 +5415,14 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/parser@7.21.3: resolution: {integrity: sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@babel/parser@7.22.15: resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} @@ -5402,7 +5497,7 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.12.9) dev: true @@ -5414,7 +5509,7 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.17.8) dev: true @@ -5450,8 +5545,8 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.17.8) dev: true @@ -5462,8 +5557,8 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.21.3) /@babel/plugin-proposal-async-generator-functions@7.16.4(@babel/core@7.12.9): @@ -5478,7 +5573,6 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.12.9) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-proposal-async-generator-functions@7.16.8(@babel/core@7.12.9): resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} @@ -5487,7 +5581,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.12.9) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.12.9) transitivePeerDependencies: @@ -5501,7 +5595,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.17.8) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.17.8) transitivePeerDependencies: @@ -5535,7 +5629,6 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.12.9) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.17.8): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} @@ -5550,6 +5643,7 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.17.8) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.3): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} @@ -5574,9 +5668,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true /@babel/plugin-proposal-class-properties@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} @@ -5586,9 +5677,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-class-features-plugin': 7.17.6(@babel/core@7.12.9) - '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-proposal-class-properties@7.16.7(@babel/core@7.17.8): @@ -5612,9 +5701,7 @@ packages: dependencies: '@babel/core': 7.21.3 '@babel/helper-create-class-features-plugin': 7.17.6(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.12.9): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -5624,10 +5711,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.12.9) - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -5637,9 +5721,8 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -5663,8 +5746,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.12.9) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-class-static-block@7.17.6(@babel/core@7.17.8): @@ -5677,8 +5758,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.17.8) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-class-static-block@7.17.6(@babel/core@7.21.3): @@ -5705,8 +5784,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.12.9) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-class-static-block@7.18.6(@babel/core@7.17.8): @@ -5719,8 +5796,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.17.8) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-class-static-block@7.18.6(@babel/core@7.21.3): @@ -5733,8 +5808,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.21.3) '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.3) - transitivePeerDependencies: - - supports-color /@babel/plugin-proposal-decorators@7.16.4(@babel/core@7.21.3): resolution: {integrity: sha512-RESBNX16eNqnBeEVR5sCJpnW0mHiNLNNvGA8PrRuK/4ZJ4TO+6bHleRUuGQYDERVySOKtOhSya/C4MIhwAMAgg==} @@ -5744,10 +5817,8 @@ packages: dependencies: '@babel/core': 7.21.3 '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-decorators': 7.16.0(@babel/core@7.21.3) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-dynamic-import@7.16.0(@babel/core@7.12.9): @@ -5759,7 +5830,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-dynamic-import@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} @@ -5826,15 +5896,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.3) - /@babel/plugin-proposal-export-default-from@7.16.7(@babel/core@7.17.8): + /@babel/plugin-proposal-export-default-from@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-export-default-from': 7.16.7(@babel/core@7.17.8) + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-default-from': 7.16.7(@babel/core@7.12.9) /@babel/plugin-proposal-export-default-from@7.16.7(@babel/core@7.21.3): resolution: {integrity: sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==} @@ -5843,7 +5913,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-default-from': 7.16.7(@babel/core@7.21.3) /@babel/plugin-proposal-export-namespace-from@7.16.0(@babel/core@7.12.9): @@ -5855,7 +5925,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-export-namespace-from@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} @@ -5931,7 +6000,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-json-strings@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} @@ -6007,7 +6075,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-logical-assignment-operators@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} @@ -6083,7 +6150,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-nullish-coalescing-operator@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} @@ -6126,7 +6192,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} @@ -6135,8 +6200,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.17.8) + dev: true /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} @@ -6145,7 +6211,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.3) /@babel/plugin-proposal-numeric-separator@7.16.0(@babel/core@7.12.9): @@ -6157,7 +6223,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-numeric-separator@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} @@ -6248,7 +6313,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) '@babel/plugin-transform-parameters': 7.16.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-object-rest-spread@7.17.3(@babel/core@7.12.9): resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} @@ -6304,7 +6368,6 @@ packages: '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.17.8): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} @@ -6315,9 +6378,10 @@ packages: '@babel/compat-data': 7.21.0 '@babel/core': 7.17.8 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.17.8) '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.17.8) + dev: true /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.3): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} @@ -6328,7 +6392,7 @@ packages: '@babel/compat-data': 7.21.0 '@babel/core': 7.21.3 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.3) '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.3) @@ -6341,7 +6405,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-optional-catch-binding@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} @@ -6385,7 +6448,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} @@ -6396,6 +6458,7 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.17.8) + dev: true /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} @@ -6417,7 +6480,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-optional-chaining@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} @@ -6426,7 +6488,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.9) dev: true @@ -6438,7 +6500,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.17.8) dev: true @@ -6461,10 +6523,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.9) - dev: true /@babel/plugin-proposal-optional-chaining@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} @@ -6473,9 +6534,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.17.8) + dev: true /@babel/plugin-proposal-optional-chaining@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} @@ -6484,7 +6546,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.3) @@ -6497,9 +6559,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true /@babel/plugin-proposal-private-methods@7.16.11(@babel/core@7.12.9): resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} @@ -6510,8 +6569,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-class-features-plugin': 7.17.6(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-private-methods@7.16.11(@babel/core@7.17.8): @@ -6536,8 +6593,6 @@ packages: '@babel/core': 7.21.3 '@babel/helper-create-class-features-plugin': 7.17.6(@babel/core@7.21.3) '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.12.9): @@ -6549,8 +6604,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.17.8): @@ -6561,9 +6614,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.3): @@ -6574,9 +6625,7 @@ packages: dependencies: '@babel/core': 7.21.3 '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-proposal-private-property-in-object@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} @@ -6587,10 +6636,8 @@ packages: '@babel/core': 7.12.9 '@babel/helper-annotate-as-pure': 7.16.7 '@babel/helper-create-class-features-plugin': 7.17.6(@babel/core@7.12.9) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.12.9) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-private-property-in-object@7.16.7(@babel/core@7.17.8): @@ -6617,10 +6664,8 @@ packages: '@babel/core': 7.21.3 '@babel/helper-annotate-as-pure': 7.16.7 '@babel/helper-create-class-features-plugin': 7.17.6(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.3) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-private-property-in-object@7.18.6(@babel/core@7.12.9): @@ -6634,8 +6679,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.12.9) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-private-property-in-object@7.18.6(@babel/core@7.17.8): @@ -6645,12 +6688,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.17.8) + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.17.8) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-proposal-private-property-in-object@7.18.6(@babel/core@7.21.3): @@ -6660,12 +6701,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.21.3) + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.3) - transitivePeerDependencies: - - supports-color /@babel/plugin-proposal-unicode-property-regex@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==} @@ -6676,7 +6715,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-proposal-unicode-property-regex@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} @@ -6720,7 +6758,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} @@ -6758,6 +6795,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.3): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -6808,6 +6846,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.3): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -6862,8 +6901,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 - dev: true + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -6871,7 +6909,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -6879,15 +6918,15 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-export-default-from@7.16.7(@babel/core@7.17.8): + /@babel/plugin-syntax-export-default-from@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-export-default-from@7.16.7(@babel/core@7.21.3): @@ -6906,7 +6945,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -6925,6 +6963,15 @@ packages: '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.21.5 + /@babel/plugin-syntax-flow@7.16.7(@babel/core@7.12.9): + resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-flow@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} engines: {node: '>=6.9.0'} @@ -6933,6 +6980,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-flow@7.16.7(@babel/core@7.21.3): resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} @@ -7062,6 +7110,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.12.9): + resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.17.8): resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} @@ -7069,7 +7126,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.3): resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} @@ -7080,6 +7138,15 @@ packages: '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.21.5 + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.12.9): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.17.8): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} @@ -7138,6 +7205,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -7187,6 +7255,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -7211,6 +7280,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -7235,6 +7305,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -7329,13 +7400,13 @@ packages: '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.17.8): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.12.9): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.21.3): @@ -7355,7 +7426,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-arrow-functions@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} @@ -7395,7 +7465,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} @@ -7404,7 +7473,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} @@ -7413,7 +7483,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-async-to-generator@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==} @@ -7427,7 +7497,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.12.9) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-async-to-generator@7.16.8(@babel/core@7.12.9): resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} @@ -7436,8 +7505,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.16.8 transitivePeerDependencies: - supports-color @@ -7464,8 +7533,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.16.8 transitivePeerDependencies: - supports-color @@ -7483,7 +7552,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.12.9) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-async-to-generator@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} @@ -7497,6 +7565,7 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.17.8) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-async-to-generator@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} @@ -7519,7 +7588,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-block-scoped-functions@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} @@ -7559,7 +7627,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -7569,6 +7636,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -7587,7 +7655,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-block-scoping@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} @@ -7627,7 +7694,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.17.8): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} @@ -7636,7 +7702,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.3): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} @@ -7645,7 +7712,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-classes@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==} @@ -7663,7 +7730,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-classes@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} @@ -7673,12 +7739,12 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7692,12 +7758,12 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7740,7 +7806,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-classes@7.21.0(@babel/core@7.17.8): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} @@ -7749,17 +7814,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.17.8) - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.17.8) + '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - transitivePeerDependencies: - - supports-color + dev: true /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.3): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} @@ -7768,17 +7832,15 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.21.3) + '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - transitivePeerDependencies: - - supports-color /@babel/plugin-transform-computed-properties@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==} @@ -7788,7 +7850,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-computed-properties@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} @@ -7828,7 +7889,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} @@ -7838,6 +7898,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} @@ -7856,7 +7917,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-destructuring@7.17.7(@babel/core@7.12.9): resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} @@ -7896,7 +7956,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.17.8): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} @@ -7905,7 +7964,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.3): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} @@ -7914,7 +7974,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-dotall-regex@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==} @@ -7925,7 +7985,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-dotall-regex@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} @@ -7935,7 +7994,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-dotall-regex@7.16.7(@babel/core@7.17.8): @@ -7946,7 +8005,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-dotall-regex@7.16.7(@babel/core@7.21.3): @@ -7969,7 +8028,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} @@ -8000,7 +8058,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-duplicate-keys@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} @@ -8070,7 +8127,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-exponentiation-operator@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} @@ -8114,7 +8170,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} @@ -8125,6 +8180,7 @@ packages: '@babel/core': 7.17.8 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} @@ -8136,6 +8192,16 @@ packages: '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.21.5 + /@babel/plugin-transform-flow-strip-types@7.16.7(@babel/core@7.12.9): + resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.12.9) + /@babel/plugin-transform-flow-strip-types@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} engines: {node: '>=6.9.0'} @@ -8145,6 +8211,7 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.17.8) + dev: true /@babel/plugin-transform-flow-strip-types@7.16.7(@babel/core@7.21.3): resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} @@ -8164,7 +8231,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-for-of@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} @@ -8204,7 +8270,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.17.8): resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} @@ -8213,7 +8278,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.21.3): resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} @@ -8222,7 +8288,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-function-name@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==} @@ -8233,7 +8299,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-function-name@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} @@ -8243,8 +8308,8 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.9) - '@babel/helper-function-name': 7.21.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-function-name@7.16.7(@babel/core@7.17.8): @@ -8255,8 +8320,8 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.17.8) - '@babel/helper-function-name': 7.21.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-function-name@7.16.7(@babel/core@7.21.3): @@ -8281,7 +8346,6 @@ packages: '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.9) '@babel/helper-function-name': 7.21.0 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -8291,8 +8355,9 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.17.8) - '@babel/helper-function-name': 7.21.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -8302,8 +8367,8 @@ packages: dependencies: '@babel/core': 7.21.3 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) - '@babel/helper-function-name': 7.21.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-literals@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==} @@ -8313,7 +8378,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-literals@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} @@ -8353,7 +8417,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-literals@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} @@ -8363,6 +8426,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} @@ -8381,7 +8445,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-member-expression-literals@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} @@ -8421,7 +8484,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} @@ -8431,6 +8493,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} @@ -8453,7 +8516,6 @@ packages: babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-modules-amd@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} @@ -8462,11 +8524,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) + '@babel/helper-plugin-utils': 7.22.5 babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-amd@7.16.7(@babel/core@7.17.8): @@ -8476,11 +8536,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.17.8) + '@babel/helper-plugin-utils': 7.22.5 babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-amd@7.16.7(@babel/core@7.21.3): @@ -8504,10 +8562,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.17.8): @@ -8517,10 +8573,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.21.3): @@ -8530,10 +8584,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.21.3) '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color /@babel/plugin-transform-modules-commonjs@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==} @@ -8548,7 +8600,6 @@ packages: babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-modules-commonjs@7.17.7(@babel/core@7.12.9): resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} @@ -8601,11 +8652,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.17.8): @@ -8615,11 +8664,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.3): @@ -8629,20 +8676,18 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.21.3) '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color - /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.17.8): + /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.12.9): resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.17.8) + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 @@ -8671,7 +8716,6 @@ packages: babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-modules-systemjs@7.17.8(@babel/core@7.12.9): resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} @@ -8681,12 +8725,10 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-systemjs@7.17.8(@babel/core@7.17.8): @@ -8697,12 +8739,10 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.17.8) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-systemjs@7.17.8(@babel/core@7.21.3): @@ -8729,11 +8769,9 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.17.8): @@ -8744,11 +8782,9 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.17.8) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 dev: true /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.3): @@ -8759,11 +8795,9 @@ packages: dependencies: '@babel/core': 7.21.3 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.21.3) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 /@babel/plugin-transform-modules-umd@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==} @@ -8776,7 +8810,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-modules-umd@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} @@ -8785,10 +8818,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-modules-umd@7.16.7(@babel/core@7.17.8): @@ -8798,10 +8829,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.17.8) + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-modules-umd@7.16.7(@babel/core@7.21.3): @@ -8824,10 +8853,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.17.8): @@ -8837,10 +8864,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.17.8) + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.3): @@ -8850,10 +8875,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.21.3) + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-named-capturing-groups-regex@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==} @@ -8863,7 +8886,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) - dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.16.8(@babel/core@7.12.9): resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} @@ -8904,7 +8926,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.19.1(@babel/core@7.17.8): resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} @@ -8915,6 +8936,7 @@ packages: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.19.1(@babel/core@7.21.3): resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} @@ -8934,7 +8956,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-new-target@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} @@ -9006,7 +9027,6 @@ packages: '@babel/helper-replace-supers': 7.19.1 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-object-super@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} @@ -9015,7 +9035,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.19.1 transitivePeerDependencies: - supports-color @@ -9028,7 +9048,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.19.1 transitivePeerDependencies: - supports-color @@ -9058,7 +9078,6 @@ packages: '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} @@ -9071,6 +9090,7 @@ packages: '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} @@ -9092,7 +9112,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-parameters@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} @@ -9131,8 +9150,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 - dev: true + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.17.8): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} @@ -9141,7 +9159,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.3): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} @@ -9150,7 +9169,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-property-literals@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==} @@ -9160,7 +9179,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-property-literals@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} @@ -9200,7 +9218,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -9210,6 +9227,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -9230,6 +9248,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.12.9): + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.21.5 + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} @@ -9238,6 +9265,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} @@ -9268,13 +9296,13 @@ packages: '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.21.3) dev: true - /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.17.8): + /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.12.9): resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.21.3): @@ -9286,13 +9314,13 @@ packages: '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-react-jsx-source@7.18.6(@babel/core@7.17.8): + /@babel/plugin-transform-react-jsx-source@7.18.6(@babel/core@7.12.9): resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-react-jsx-source@7.18.6(@babel/core@7.21.3): @@ -9357,7 +9385,20 @@ packages: '@babel/helper-module-imports': 7.21.4 '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.3) - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 + + /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.12.9): + resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.12.9) + '@babel/types': 7.22.15 /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.17.8): resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} @@ -9367,10 +9408,11 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.17.8) - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 + dev: true /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.21.3): resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} @@ -9392,8 +9434,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.21.3): @@ -9415,7 +9457,6 @@ packages: dependencies: '@babel/core': 7.12.9 regenerator-transform: 0.14.5 - dev: true /@babel/plugin-transform-regenerator@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} @@ -9465,7 +9506,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.0 dev: true @@ -9476,7 +9517,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.0 /@babel/plugin-transform-reserved-words@7.16.0(@babel/core@7.12.9): @@ -9487,7 +9528,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-reserved-words@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} @@ -9582,18 +9622,18 @@ packages: - supports-color dev: true - /@babel/plugin-transform-runtime@7.19.1(@babel/core@7.17.8): + /@babel/plugin-transform-runtime@7.19.1(@babel/core@7.12.9): resolution: {integrity: sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-module-imports': 7.21.4 + '@babel/core': 7.12.9 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.17.8) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.17.8) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.17.8) + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.12.9) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.12.9) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.12.9) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9605,7 +9645,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-module-imports': 7.21.4 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.3) babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.3) @@ -9622,7 +9662,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-shorthand-properties@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} @@ -9662,7 +9701,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -9671,7 +9709,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -9680,7 +9719,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-spread@7.16.0(@babel/core@7.12.9): resolution: {integrity: sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==} @@ -9691,7 +9730,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - dev: true /@babel/plugin-transform-spread@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} @@ -9700,7 +9738,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 dev: true @@ -9711,7 +9749,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 dev: true @@ -9735,7 +9773,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - dev: true /@babel/plugin-transform-spread@7.19.0(@babel/core@7.17.8): resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} @@ -9744,8 +9781,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + dev: true /@babel/plugin-transform-spread@7.19.0(@babel/core@7.21.3): resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} @@ -9754,7 +9792,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 /@babel/plugin-transform-sticky-regex@7.16.0(@babel/core@7.12.9): @@ -9765,7 +9803,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-sticky-regex@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} @@ -9805,7 +9842,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -9815,6 +9851,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -9833,7 +9870,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-template-literals@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} @@ -9873,7 +9909,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.17.8): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -9883,6 +9918,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.21.5 + dev: true /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.3): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -9901,7 +9937,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-typeof-symbol@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} @@ -9972,8 +10007,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-typescript': 7.16.7(@babel/core@7.17.8) - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-typescript@7.16.8(@babel/core@7.21.3): @@ -9996,23 +10029,21 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.3 - '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.21.3) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-typescript': 7.18.6(@babel/core@7.21.3) - transitivePeerDependencies: - - supports-color + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.21.3) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.21.3) - /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.17.8): + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.12.9): resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.12.9 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.17.8) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.17.8) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.12.9) /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.21.3): resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} @@ -10034,7 +10065,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-unicode-escapes@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} @@ -10104,7 +10134,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-transform-unicode-regex@7.16.7(@babel/core@7.12.9): resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} @@ -10114,7 +10143,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-unicode-regex@7.16.7(@babel/core@7.17.8): @@ -10125,7 +10154,7 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-unicode-regex@7.16.7(@babel/core@7.21.3): @@ -10148,7 +10177,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.21.5 - dev: true /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.17.8): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -10159,6 +10187,7 @@ packages: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -10252,7 +10281,6 @@ packages: semver: 5.7.1 transitivePeerDependencies: - supports-color - dev: true /@babel/preset-env@7.16.11(@babel/core@7.12.9): resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} @@ -10262,7 +10290,7 @@ packages: dependencies: '@babel/compat-data': 7.17.7 '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.17.7(@babel/core@7.12.9) + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.9) '@babel/helper-plugin-utils': 7.18.9 '@babel/helper-validator-option': 7.16.7 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7(@babel/core@7.12.9) @@ -10329,12 +10357,12 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.16.7(@babel/core@7.12.9) '@babel/plugin-transform-unicode-regex': 7.16.7(@babel/core@7.12.9) '@babel/preset-modules': 0.1.5(@babel/core@7.12.9) - '@babel/types': 7.17.0 + '@babel/types': 7.22.15 babel-plugin-polyfill-corejs2: 0.3.0(@babel/core@7.12.9) babel-plugin-polyfill-corejs3: 0.5.2(@babel/core@7.12.9) babel-plugin-polyfill-regenerator: 0.3.0(@babel/core@7.12.9) core-js-compat: 3.21.1 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -10347,7 +10375,7 @@ packages: dependencies: '@babel/compat-data': 7.17.7 '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.17.7(@babel/core@7.17.8) + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.18.9 '@babel/helper-validator-option': 7.16.7 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7(@babel/core@7.17.8) @@ -10414,12 +10442,12 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.16.7(@babel/core@7.17.8) '@babel/plugin-transform-unicode-regex': 7.16.7(@babel/core@7.17.8) '@babel/preset-modules': 0.1.5(@babel/core@7.17.8) - '@babel/types': 7.17.0 + '@babel/types': 7.22.15 babel-plugin-polyfill-corejs2: 0.3.0(@babel/core@7.17.8) babel-plugin-polyfill-corejs3: 0.5.2(@babel/core@7.17.8) babel-plugin-polyfill-regenerator: 0.3.0(@babel/core@7.17.8) core-js-compat: 3.21.1 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -10800,7 +10828,6 @@ packages: '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.12.9) '@babel/types': 7.22.4 esutils: 2.0.3 - dev: true /@babel/preset-modules@0.1.5(@babel/core@7.17.8): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} @@ -10834,8 +10861,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.21.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.17.8) '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.17.8) '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.17.8) @@ -10867,8 +10894,6 @@ packages: '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-validator-option': 7.21.0 '@babel/plugin-transform-typescript': 7.16.8(@babel/core@7.17.8) - transitivePeerDependencies: - - supports-color dev: true /@babel/preset-typescript@7.16.7(@babel/core@7.21.3): @@ -10894,8 +10919,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 '@babel/plugin-transform-typescript': 7.19.3(@babel/core@7.21.3) - transitivePeerDependencies: - - supports-color /@babel/preset-typescript@7.22.15(@babel/core@7.21.3): resolution: {integrity: sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==} @@ -10995,17 +11018,17 @@ packages: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.21.3 - '@babel/types': 7.22.4 + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 /@babel/template@7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.21.3 - '@babel/types': 7.22.4 + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} @@ -11027,7 +11050,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.3 '@babel/types': 7.21.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -11035,23 +11058,6 @@ packages: /@babel/traverse@7.19.3: resolution: {integrity: sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.3 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.3 - '@babel/types': 7.22.4 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - /@babel/traverse@7.21.3: - resolution: {integrity: sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==} - engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 '@babel/generator': 7.21.3 @@ -11061,7 +11067,24 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.22.15 '@babel/types': 7.22.15 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/traverse@7.21.3: + resolution: {integrity: sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.21.3 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 + debug: 4.3.4(supports-color@9.2.2) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -11072,7 +11095,6 @@ packages: dependencies: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - dev: true /@babel/types@7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} @@ -11543,7 +11565,7 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) espree: 7.3.1 globals: 13.19.0 ignore: 4.0.6 @@ -11560,7 +11582,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) espree: 9.4.1 globals: 13.19.0 ignore: 5.2.0 @@ -11589,6 +11611,7 @@ packages: /@floating-ui/core@1.0.1: resolution: {integrity: sha512-bO37brCPfteXQfFY0DyNDGB3+IMe4j150KFQcgJ5aBP295p9nBGeHEs/p0czrRbtlHq4Px/yoPXO/+dOCcF4uA==} + dev: true /@floating-ui/core@1.4.1: resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==} @@ -11611,6 +11634,7 @@ packages: resolution: {integrity: sha512-5X9WSvZ8/fjy3gDu8yx9HAA4KG1lazUN2P4/VnaXLxTO9Dz53HI1oYoh1OlhqFNlHgGDiwFX5WhFCc2ljbW3yA==} dependencies: '@floating-ui/core': 1.0.1 + dev: true /@floating-ui/dom@1.5.1: resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==} @@ -11652,7 +11676,7 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.0.2 + '@floating-ui/dom': 1.5.1 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -11719,7 +11743,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11729,7 +11753,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -12943,7 +12967,7 @@ packages: /@kwsites/file-exists@1.1.1: resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color @@ -13302,7 +13326,7 @@ packages: '@oclif/color': 1.0.1 '@oclif/core': 1.16.1 chalk: 4.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) fs-extra: 9.1.0 http-call: 5.3.0 load-json-file: 5.3.0 @@ -13320,7 +13344,7 @@ packages: dependencies: '@oclif/core': 1.16.1 chalk: 4.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) fs-extra: 9.1.0 http-call: 5.3.0 lodash: 4.17.21 @@ -13857,7 +13881,7 @@ packages: react-refresh: 0.11.0 schema-utils: 3.1.1 source-map: 0.7.3 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.14.0)(webpack-dev-server@4.12.0)(webpack@5.70.0): @@ -14966,7 +14990,7 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-plugin-metro@9.1.1(@babel/core@7.17.8): + /@react-native-community/cli-plugin-metro@9.1.1(@babel/core@7.12.9): resolution: {integrity: sha512-8CBwEZrbYIeQw69Exg/oW20pV9C6mbYlDz0pxZJ0AYmC20Q+wFFs6sUh5zm28ZUh1L0LxNGmhle/YvMPqA+fMQ==} dependencies: '@react-native-community/cli-server-api': 9.1.0 @@ -14975,7 +14999,7 @@ packages: metro: 0.72.2 metro-config: 0.72.2 metro-core: 0.72.2 - metro-react-native-babel-transformer: 0.72.1(@babel/core@7.17.8) + metro-react-native-babel-transformer: 0.72.1(@babel/core@7.12.9) metro-resolver: 0.72.2 metro-runtime: 0.72.2 readline: 1.3.0 @@ -15024,7 +15048,7 @@ packages: dependencies: joi: 17.6.0 - /@react-native-community/cli@9.1.1(@babel/core@7.17.8): + /@react-native-community/cli@9.1.1(@babel/core@7.12.9): resolution: {integrity: sha512-LjXcYahjFzM7TlsGzQLH9bCx3yvBsHEj/5Ytdnk0stdDET329JdXWEh6JiSRjVWPVAoDAV5pRAFmEOEGDNIiAw==} engines: {node: '>=14'} hasBin: true @@ -15034,7 +15058,7 @@ packages: '@react-native-community/cli-debugger-ui': 9.0.0 '@react-native-community/cli-doctor': 9.1.1 '@react-native-community/cli-hermes': 9.1.0 - '@react-native-community/cli-plugin-metro': 9.1.1(@babel/core@7.17.8) + '@react-native-community/cli-plugin-metro': 9.1.1(@babel/core@7.12.9) '@react-native-community/cli-server-api': 9.1.0 '@react-native-community/cli-tools': 9.1.0 '@react-native-community/cli-types': 9.1.0 @@ -15873,7 +15897,7 @@ packages: ts-dedent: 2.2.0 typescript: 5.1.6 util-deprecate: 1.0.2 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) webpack-dev-middleware: 4.3.0(webpack@5.76.3) webpack-hot-middleware: 2.25.1 webpack-virtual-modules: 0.4.3 @@ -16086,7 +16110,7 @@ packages: typescript: 5.1.6 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /@storybook/core-common@6.5.17-alpha.0(eslint@8.32.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6)(webpack-cli@3.3.12): @@ -16352,7 +16376,7 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) typescript: 5.1.6 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) transitivePeerDependencies: - '@storybook/mdx2-csf' - acorn @@ -16599,7 +16623,7 @@ packages: ts-dedent: 2.2.0 typescript: 5.1.6 util-deprecate: 1.0.2 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) webpack-dev-middleware: 4.3.0(webpack@5.76.3) webpack-virtual-modules: 0.4.3 transitivePeerDependencies: @@ -16720,7 +16744,7 @@ packages: typescript: '>= 4.x' webpack: '>= 4' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.0.4 @@ -16728,7 +16752,7 @@ packages: react-docgen-typescript: 2.2.2(typescript@5.1.6) tslib: 2.5.0 typescript: 5.1.6 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) transitivePeerDependencies: - supports-color dev: true @@ -16892,7 +16916,7 @@ packages: ts-dedent: 2.2.0 typescript: 5.1.6 util-deprecate: 1.0.2 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) transitivePeerDependencies: - '@storybook/mdx2-csf' - '@swc/core' @@ -17383,7 +17407,7 @@ packages: resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} engines: {node: '>=14'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 entities: 4.5.0 dev: true @@ -17434,7 +17458,7 @@ packages: engines: {node: '>=10'} dependencies: cosmiconfig: 7.0.1 - deepmerge: 4.3.0 + deepmerge: 4.3.1 svgo: 1.3.2 dev: true @@ -17446,7 +17470,7 @@ packages: dependencies: '@svgr/core': 6.5.1 cosmiconfig: 7.0.1 - deepmerge: 4.3.0 + deepmerge: 4.3.1 svgo: 2.8.0 dev: true @@ -17685,8 +17709,8 @@ packages: /@types/babel__core@7.1.16: resolution: {integrity: sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==} dependencies: - '@babel/parser': 7.21.3 - '@babel/types': 7.22.4 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 '@types/babel__generator': 7.6.3 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.14.2 @@ -17694,13 +17718,13 @@ packages: /@types/babel__generator@7.6.3: resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.21.3 - '@babel/types': 7.22.4 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 /@types/babel__traverse@7.14.2: resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} @@ -18260,6 +18284,21 @@ packages: - react - react-dom + /@types/wordpress__block-editor@7.0.0(react@17.0.2): + resolution: {integrity: sha512-JERpxKAQ7J07C2wtKxr+5ZE9NETIcpu0EiXuXka6Qmrq74oOypdy9jYdhMIYBDMOx4ptR3ne7edaFb2+1SBcqA==} + dependencies: + '@types/react': 17.0.50 + '@types/wordpress__blocks': 11.0.7(react@17.0.2) + '@types/wordpress__components': 19.10.5(react-dom@16.14.0)(react@17.0.2) + '@types/wordpress__data': 6.0.2 + '@types/wordpress__keycodes': 2.3.1 + '@wordpress/element': 4.4.1 + react-autosize-textarea: 7.1.0(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + dev: true + /@types/wordpress__block-library@2.6.1: resolution: {integrity: sha512-x+V2iqNZiCbNHwMLxszv0qHZ0ooYXZYisKxUIGTOhlrQDrYIiSIZG2+6UgS65UFnwGQve3EGP/RlMYIpQT6TyQ==} @@ -18273,6 +18312,17 @@ packages: - react - react-dom + /@types/wordpress__blocks@11.0.7(react@17.0.2): + resolution: {integrity: sha512-8BcT3CUxHt73CepaLtQHAhA7uBhDOK9x5HJOAxzV+Bl37W04u4jSNulXxwX/6tI7t7Knux5lnN9bvKf/1sg+Rw==} + dependencies: + '@types/react': 17.0.50 + '@types/wordpress__components': 19.10.5(react-dom@16.14.0)(react@17.0.2) + '@wordpress/element': 4.4.1 + transitivePeerDependencies: + - react + - react-dom + dev: true + /@types/wordpress__components@19.10.5(react-dom@16.14.0)(react@17.0.2): resolution: {integrity: sha512-0BfLFVB9IxrYH1llVM3LltalJiHn7jyS3k6FEC0wQMoIzs+kXI9w5rSI06faodBcwp9YQDjhK+Bkr49dqx+3dQ==} dependencies: @@ -18455,7 +18505,7 @@ packages: '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.1.6) '@typescript-eslint/parser': 4.33.0(eslint@8.32.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 4.33.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint: 7.32.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 @@ -18482,7 +18532,7 @@ packages: '@typescript-eslint/scope-manager': 5.54.0 '@typescript-eslint/type-utils': 5.54.0(eslint@8.32.0)(typescript@5.1.6) '@typescript-eslint/utils': 5.54.0(eslint@8.32.0)(typescript@5.1.6) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint: 8.32.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 @@ -18570,7 +18620,7 @@ packages: '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.1.6) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint: 8.32.0 typescript: 5.1.6 transitivePeerDependencies: @@ -18590,7 +18640,7 @@ packages: '@typescript-eslint/scope-manager': 5.54.0 '@typescript-eslint/types': 5.54.0 '@typescript-eslint/typescript-estree': 5.54.0(typescript@5.1.6) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint: 8.32.0 typescript: 5.1.6 transitivePeerDependencies: @@ -18623,7 +18673,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.54.0(typescript@5.1.6) '@typescript-eslint/utils': 5.54.0(eslint@8.32.0)(typescript@5.1.6) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint: 8.32.0 tsutils: 3.21.0(typescript@5.1.6) typescript: 5.1.6 @@ -18648,7 +18698,7 @@ packages: typescript: optional: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint-visitor-keys: 1.3.0 glob: 7.2.3 is-glob: 4.0.3 @@ -18671,7 +18721,7 @@ packages: dependencies: '@typescript-eslint/types': 4.33.0 '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.3 @@ -18692,7 +18742,7 @@ packages: dependencies: '@typescript-eslint/types': 5.54.0 '@typescript-eslint/visitor-keys': 5.54.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 @@ -18715,7 +18765,7 @@ packages: eslint: 8.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@8.32.0) - semver: 7.5.0 + semver: 7.5.3 transitivePeerDependencies: - supports-color - typescript @@ -19171,13 +19221,6 @@ packages: '@babel/runtime': 7.21.0 dev: false - /@wordpress/autop@3.28.0: - resolution: {integrity: sha512-plCKPzTBiZ+R69PsIXUk1wmn4+/JxmmsXL6SklwH/o5cKyY4dcuq6v6wPbfLv5Rb+S19wguNP8DdWFwjSsIOZQ==} - engines: {node: '>=12'} - dependencies: - '@babel/runtime': 7.21.0 - dev: false - /@wordpress/autop@3.40.0: resolution: {integrity: sha512-AuuZpPLnonNNlekiE+gDmQEz+juHvCZJml1aGllip4txXCKZDvJUU6WVmnQYp+m1V/Wj4/Szb8w1muUslsjb7Q==} engines: {node: '>=12'} @@ -19375,8 +19418,8 @@ packages: '@wordpress/notices': 3.28.0(react@17.0.2) '@wordpress/rich-text': 5.17.0(react@17.0.2) '@wordpress/shortcode': 3.40.0 - '@wordpress/style-engine': 1.2.0 - '@wordpress/token-list': 2.28.0 + '@wordpress/style-engine': 1.23.0 + '@wordpress/token-list': 2.40.0 '@wordpress/url': 3.41.0 '@wordpress/warning': 2.40.0 '@wordpress/wordcount': 3.40.0 @@ -19604,17 +19647,17 @@ packages: '@wordpress/html-entities': 3.40.0 '@wordpress/i18n': 4.40.0 '@wordpress/icons': 9.31.0 - '@wordpress/is-shallow-equal': 4.28.0 + '@wordpress/is-shallow-equal': 4.40.0 '@wordpress/keyboard-shortcuts': 3.17.0(react@17.0.2) '@wordpress/keycodes': 3.40.0 '@wordpress/notices': 3.28.0(react@17.0.2) '@wordpress/rich-text': 5.17.0(react@17.0.2) - '@wordpress/shortcode': 3.28.0 + '@wordpress/shortcode': 3.40.0 '@wordpress/style-engine': 0.15.0 - '@wordpress/token-list': 2.28.0 + '@wordpress/token-list': 2.40.0 '@wordpress/url': 3.41.0 '@wordpress/warning': 2.40.0 - '@wordpress/wordcount': 3.28.0 + '@wordpress/wordcount': 3.40.0 change-case: 4.1.2 classnames: 2.3.1 colord: 2.9.2 @@ -19626,7 +19669,7 @@ packages: react-autosize-textarea: 7.1.0(react-dom@17.0.2)(react@17.0.2) react-dom: 17.0.2(react@17.0.2) react-easy-crop: 3.5.3(react-dom@17.0.2)(react@17.0.2) - rememo: 4.0.0 + rememo: 4.0.2 remove-accents: 0.4.2 traverse: 0.6.6 transitivePeerDependencies: @@ -19657,17 +19700,17 @@ packages: '@wordpress/html-entities': 3.40.0 '@wordpress/i18n': 4.40.0 '@wordpress/icons': 9.31.0 - '@wordpress/is-shallow-equal': 4.28.0 + '@wordpress/is-shallow-equal': 4.40.0 '@wordpress/keyboard-shortcuts': 3.17.0(react@17.0.2) '@wordpress/keycodes': 3.40.0 '@wordpress/notices': 3.28.0(react@17.0.2) '@wordpress/rich-text': 5.17.0(react@17.0.2) - '@wordpress/shortcode': 3.28.0 + '@wordpress/shortcode': 3.40.0 '@wordpress/style-engine': 0.15.0 - '@wordpress/token-list': 2.28.0 + '@wordpress/token-list': 2.40.0 '@wordpress/url': 3.41.0 '@wordpress/warning': 2.40.0 - '@wordpress/wordcount': 3.28.0 + '@wordpress/wordcount': 3.40.0 change-case: 4.1.2 classnames: 2.3.1 colord: 2.9.2 @@ -19679,7 +19722,60 @@ packages: react-autosize-textarea: 7.1.0(react-dom@17.0.2)(react@17.0.2) react-dom: 17.0.2(react@17.0.2) react-easy-crop: 3.5.3(react-dom@17.0.2)(react@17.0.2) - rememo: 4.0.0 + rememo: 4.0.2 + remove-accents: 0.4.2 + traverse: 0.6.6 + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + dev: false + + /@wordpress/block-editor@9.8.0(@babel/core@7.21.3)(react@17.0.2): + resolution: {integrity: sha512-zIPqEysaLFJMnVKU/yCoCEBT3Co9xsa4Ow91T/LI94ll3LeWG/pyiX4PSSQNTx74AqbcNO2p79LVON4FLdu+mQ==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@babel/runtime': 7.21.0 + '@react-spring/web': 9.5.5(react-dom@17.0.2)(react@17.0.2) + '@wordpress/a11y': 3.40.0 + '@wordpress/api-fetch': 6.37.0 + '@wordpress/blob': 3.40.0 + '@wordpress/blocks': 11.18.0(react@17.0.2) + '@wordpress/components': 20.0.0(@babel/core@7.21.3)(react@17.0.2) + '@wordpress/compose': 5.17.0(react@17.0.2) + '@wordpress/data': 7.3.0(react@17.0.2) + '@wordpress/date': 4.40.0 + '@wordpress/deprecated': 3.40.0 + '@wordpress/dom': 3.40.0 + '@wordpress/element': 4.20.0 + '@wordpress/hooks': 3.40.0 + '@wordpress/html-entities': 3.40.0 + '@wordpress/i18n': 4.40.0 + '@wordpress/icons': 9.31.0 + '@wordpress/is-shallow-equal': 4.40.0 + '@wordpress/keyboard-shortcuts': 3.17.0(react@17.0.2) + '@wordpress/keycodes': 3.40.0 + '@wordpress/notices': 3.28.0(react@17.0.2) + '@wordpress/rich-text': 5.17.0(react@17.0.2) + '@wordpress/shortcode': 3.40.0 + '@wordpress/style-engine': 0.15.0 + '@wordpress/token-list': 2.40.0 + '@wordpress/url': 3.41.0 + '@wordpress/warning': 2.40.0 + '@wordpress/wordcount': 3.40.0 + change-case: 4.1.2 + classnames: 2.3.1 + colord: 2.9.2 + diff: 4.0.2 + dom-scroll-into-view: 1.2.1 + inherits: 2.0.4 + lodash: 4.17.21 + react: 17.0.2 + react-autosize-textarea: 7.1.0(react-dom@17.0.2)(react@17.0.2) + react-easy-crop: 3.5.3(react-dom@17.0.2)(react@17.0.2) + rememo: 4.0.2 remove-accents: 0.4.2 traverse: 0.6.6 transitivePeerDependencies: @@ -19806,13 +19902,6 @@ packages: - vite dev: false - /@wordpress/block-serialization-default-parser@4.28.0: - resolution: {integrity: sha512-ZtrcHI3PbWgWQO1AmL7IXGTItV8y/dfz+OhmgANpDil/OWUhACOgBIgiPn3ymwspjgsw6r2MB6s3rRMEzjzhxg==} - engines: {node: '>=12'} - dependencies: - '@babel/runtime': 7.21.0 - dev: false - /@wordpress/block-serialization-default-parser@4.40.0: resolution: {integrity: sha512-MFQ82tIf/finWY4TPDYP1ZYQfg2MLCC7j60idEwfd4y2jWW+LiksaUOEFBnSryAgZ5nhr2PQd7aciZpg8JM3dA==} engines: {node: '>=12'} @@ -19895,9 +19984,9 @@ packages: react: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 - '@wordpress/autop': 3.28.0 + '@wordpress/autop': 3.40.0 '@wordpress/blob': 3.40.0 - '@wordpress/block-serialization-default-parser': 4.28.0 + '@wordpress/block-serialization-default-parser': 4.40.0 '@wordpress/compose': 6.17.0(react@17.0.2) '@wordpress/data': 8.5.0(react@17.0.2) '@wordpress/deprecated': 3.40.0 @@ -19906,9 +19995,9 @@ packages: '@wordpress/hooks': 3.40.0 '@wordpress/html-entities': 3.40.0 '@wordpress/i18n': 4.40.0 - '@wordpress/is-shallow-equal': 4.28.0 + '@wordpress/is-shallow-equal': 4.40.0 '@wordpress/private-apis': 0.10.0 - '@wordpress/shortcode': 3.28.0 + '@wordpress/shortcode': 3.40.0 change-case: 4.1.2 colord: 2.9.2 fast-deep-equal: 3.1.3 @@ -19917,7 +20006,7 @@ packages: lodash: 4.17.21 memize: 1.1.0 react: 17.0.2 - rememo: 4.0.0 + rememo: 4.0.2 remove-accents: 0.4.2 showdown: 1.9.1 simple-html-tokenizer: 0.5.11 @@ -20428,6 +20517,60 @@ packages: - '@types/react' dev: false + /@wordpress/components@20.0.0(@babel/core@7.21.3)(react@17.0.2): + resolution: {integrity: sha512-RBPjtGLSoiV5YKhrBYh+/X8LbzbA99BJaB4Q+P0e1rVOwGzeBF3M7YEjmg1PrrzWaItqJZTvDoyZo+ql7c0KfA==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@babel/runtime': 7.21.0 + '@emotion/cache': 11.10.5 + '@emotion/css': 11.7.1(@babel/core@7.21.3) + '@emotion/react': 11.10.5(@babel/core@7.21.3)(@types/react@17.0.50)(react@17.0.2) + '@emotion/serialize': 1.1.1 + '@emotion/styled': 11.8.1(@babel/core@7.21.3)(@emotion/react@11.10.5)(@types/react@17.0.50)(react@17.0.2) + '@emotion/utils': 1.2.0 + '@floating-ui/react-dom': 1.0.0(react-dom@17.0.2)(react@17.0.2) + '@use-gesture/react': 10.2.27(react@17.0.2) + '@wordpress/a11y': 3.40.0 + '@wordpress/compose': 5.17.0(react@17.0.2) + '@wordpress/date': 4.40.0 + '@wordpress/deprecated': 3.40.0 + '@wordpress/dom': 3.40.0 + '@wordpress/element': 4.20.0 + '@wordpress/escape-html': 2.40.0 + '@wordpress/hooks': 3.40.0 + '@wordpress/i18n': 4.40.0 + '@wordpress/icons': 9.31.0 + '@wordpress/is-shallow-equal': 4.40.0 + '@wordpress/keycodes': 3.40.0 + '@wordpress/primitives': 3.38.0 + '@wordpress/rich-text': 5.17.0(react@17.0.2) + '@wordpress/warning': 2.40.0 + change-case: 4.1.2 + classnames: 2.3.1 + colord: 2.9.2 + date-fns: 2.29.3 + dom-scroll-into-view: 1.2.1 + downshift: 6.1.12(react@17.0.2) + framer-motion: 6.2.8(react-dom@16.14.0)(react@17.0.2) + gradient-parser: 0.1.5 + highlight-words-core: 1.2.2 + lodash: 4.17.21 + memize: 1.1.0 + re-resizable: 6.9.5(react-dom@16.14.0)(react@17.0.2) + react: 17.0.2 + react-colorful: 5.6.1(react-dom@16.14.0)(react@17.0.2) + reakit: 1.3.11(react-dom@16.14.0)(react@17.0.2) + remove-accents: 0.4.2 + use-lilius: 2.0.3(react-dom@17.0.2)(react@17.0.2) + uuid: 8.3.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + dev: false + /@wordpress/components@21.2.0(@babel/core@7.17.8)(@types/react@17.0.50)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-pYz+EY+Tv/O2JuDBXpaFH/zv9Evty/e6NOGjOzddSeaShZ/mCq2DpUSWPuTFBEAjtv6h9HnpkakbNnEeio5yNA==} engines: {node: '>=12'} @@ -21873,12 +22016,6 @@ packages: dependencies: '@babel/runtime': 7.21.0 - /@wordpress/is-shallow-equal@4.28.0: - resolution: {integrity: sha512-RN6ME/m+HJ3BwwpSJBG7kl7SSJgCkaJ7MR7v27vRRvzt9iAiGbv7s5wq2P1WiwX7xqCViRYDC3HVGbwqB7miAA==} - engines: {node: '>=12'} - dependencies: - '@babel/runtime': 7.21.0 - /@wordpress/is-shallow-equal@4.4.1: resolution: {integrity: sha512-NlcqqrukKe4zT5fCs3O5FVYwqmHhtqM//KqWs7xfIaoz9B07oKZQNZqOrU72mgz7mgRliQumTQHzFM76RO0hZQ==} engines: {node: '>=12'} @@ -21947,7 +22084,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 jest: 29.5.0(@types/node@16.18.21)(ts-node@10.9.1) - jest-matcher-utils: 29.5.0 + jest-matcher-utils: 29.6.2 dev: true /@wordpress/jest-preset-default@11.5.0(@babel/core@7.21.3)(jest@29.5.0): @@ -22973,13 +23110,6 @@ packages: - vite dev: false - /@wordpress/shortcode@3.28.0: - resolution: {integrity: sha512-Il9NMftqN2WCMqrTxHFyKPnyQc1T80mCU34cTRvR5ZbZMrWNDDdYKMIYwmFc4ehcdWvddkMSPB8JA0ZNbw8NbA==} - engines: {node: '>=12'} - dependencies: - '@babel/runtime': 7.21.0 - memize: 1.1.0 - /@wordpress/shortcode@3.40.0: resolution: {integrity: sha512-H3jd1GgsNHtRuXVvItsjtf/OQOGI0vEZ+o964Ie4xqODwqOceYKASj4Bu2x9FKl94xa7tNfsn9ZSs6ADKWHh3g==} engines: {node: '>=12'} @@ -23002,14 +23132,6 @@ packages: lodash: 4.17.21 dev: false - /@wordpress/style-engine@1.2.0: - resolution: {integrity: sha512-RoyTFpxDS7uOJuNG31J/153JLKCNftU1/wMMkf0qXDpP+1k4h9em1+iIPPAGPRW5pSq/ky95fAaQAnl+FgI6Wg==} - engines: {node: '>=12'} - dependencies: - '@babel/runtime': 7.21.0 - lodash: 4.17.21 - dev: false - /@wordpress/style-engine@1.23.0: resolution: {integrity: sha512-Jxr8o9YB0ZKKXw15h6XCQkNV6fFPj73L42MIhHixE7Pq3mxTrwEeKl4LsnRlatBrzT6mnknP1qNWfaStTnY0AQ==} engines: {node: '>=12'} @@ -23082,18 +23204,11 @@ packages: - utf-8-validate dev: false - /@wordpress/token-list@2.28.0: - resolution: {integrity: sha512-MLe7/Ma5BcFzz62ObRwvNFQakdBHCqNkOHLS/PBmWpDSi4Y9+qvICdEn8Od3d0RkPdjupBdtF1ZBeYoaL04K2Q==} - engines: {node: '>=12'} - dependencies: - '@babel/runtime': 7.21.0 - /@wordpress/token-list@2.40.0: resolution: {integrity: sha512-cVEgf0PRpN9I1csIi24dElhH3zghH2yC2afgjlZwNPWy8jmUNbgLEBwtgt+iA9WpmhanvS1XhwVoP4EY3WESEg==} engines: {node: '>=12'} dependencies: '@babel/runtime': 7.21.0 - dev: false /@wordpress/url@2.22.2(react-native@0.70.0): resolution: {integrity: sha512-aqpYKQXzyzkCOm+GzZRYlLb+wh58g0cwR1PaKAl0UXaBS4mdS+X6biMriylb4P8CVC/RR7CSw5XI20JC24KDwQ==} @@ -23216,18 +23331,11 @@ packages: - vite dev: false - /@wordpress/wordcount@3.28.0: - resolution: {integrity: sha512-SMgmLGeazocSxNpagXav8/6sRMuldH/EgCPmdXK6SKr4tJb8JbKINW74U208c7IBpRG0GjR+1JNyq6jikT/K4g==} - engines: {node: '>=12'} - dependencies: - '@babel/runtime': 7.21.0 - /@wordpress/wordcount@3.40.0: resolution: {integrity: sha512-emZQt/WwrIYk5iOO6LjrGBZ7FB6rUms4CaFoj2Zfs5JZAkXxjnT5cO355rA1woJOmYD+4L2X4qgz5X3rePSIRA==} engines: {node: '>=12'} dependencies: '@babel/runtime': 7.21.0 - dev: false /@xstate/graph@1.4.2(xstate@4.37.1): resolution: {integrity: sha512-XIh6opCf9ukXRj4dXe2fv2kwFFUl15B5Ob8ELNOOqDXB2BPyNwp6TaLe5KJn/na3gzC9B7LyOo+2d0dPkC8PWQ==} @@ -23425,7 +23533,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color @@ -23433,7 +23541,7 @@ packages: resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) depd: 1.1.2 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -24183,10 +24291,10 @@ packages: peerDependencies: eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.16.7 - '@babel/parser': 7.17.8 - '@babel/traverse': 7.17.3 - '@babel/types': 7.17.0 + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.15 + '@babel/traverse': 7.21.3 + '@babel/types': 7.22.15 eslint: 7.32.0 eslint-visitor-keys: 1.3.0 resolve: 1.20.0 @@ -24437,7 +24545,7 @@ packages: loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /babel-loader@8.3.0(@babel/core@7.17.8)(webpack@4.46.0): @@ -24543,7 +24651,7 @@ packages: /babel-plugin-emotion@10.2.2: resolution: {integrity: sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==} dependencies: - '@babel/helper-module-imports': 7.21.4 + '@babel/helper-module-imports': 7.22.15 '@emotion/hash': 0.8.0 '@emotion/memoize': 0.7.4 '@emotion/serialize': 0.11.16 @@ -24577,7 +24685,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.1.0 @@ -24596,7 +24704,7 @@ packages: resolution: {integrity: sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==} engines: {node: '>= 8.3'} dependencies: - '@babel/template': 7.20.7 + '@babel/template': 7.22.15 '@babel/types': 7.22.15 '@types/babel__traverse': 7.14.2 dev: true @@ -24605,7 +24713,7 @@ packages: resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/template': 7.20.7 + '@babel/template': 7.22.15 '@babel/types': 7.22.15 '@types/babel__core': 7.1.16 '@types/babel__traverse': 7.14.2 @@ -24614,8 +24722,8 @@ packages: resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.22.4 + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 '@types/babel__core': 7.1.16 '@types/babel__traverse': 7.14.2 @@ -24669,7 +24777,7 @@ packages: '@babel/compat-data': 7.21.0 '@babel/core': 7.17.8 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.17.8) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -24682,7 +24790,7 @@ packages: '@babel/compat-data': 7.21.0 '@babel/core': 7.21.3 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.3) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -24695,10 +24803,9 @@ packages: '@babel/compat-data': 7.21.0 '@babel/core': 7.12.9 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.12.9) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.17.8): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} @@ -24708,9 +24815,10 @@ packages: '@babel/compat-data': 7.21.0 '@babel/core': 7.17.8 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.17.8) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.3): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} @@ -24720,7 +24828,7 @@ packages: '@babel/compat-data': 7.21.0 '@babel/core': 7.21.3 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.3) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -24806,7 +24914,6 @@ packages: core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.17.8): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} @@ -24818,6 +24925,7 @@ packages: core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.3): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} @@ -24872,7 +24980,6 @@ packages: '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.12.9) transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.17.8): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} @@ -24883,6 +24990,7 @@ packages: '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.17.8) transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.3): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} @@ -25029,38 +25137,38 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.3) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.3) - /babel-preset-fbjs@3.4.0(@babel/core@7.17.8): + /babel-preset-fbjs@3.4.0(@babel/core@7.12.9): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.17.8) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.17.8) - '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.17.8) - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.17.8) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.17.8) - '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.17.8) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.17.8) - '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.17.8) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.17.8) - '@babel/plugin-transform-flow-strip-types': 7.16.7(@babel/core@7.17.8) - '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.17.8) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.17.8) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.17.8) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.17.8) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.17.8) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.17.8) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.17.8) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.17.8) + '@babel/core': 7.12.9 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.12.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.12.9) + '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.12.9) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.12.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) + '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.12.9) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.12.9) + '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.12.9) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.12.9) + '@babel/plugin-transform-flow-strip-types': 7.16.7(@babel/core@7.12.9) + '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.12.9) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.12.9) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.12.9) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.12.9) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.12.9) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.12.9) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.12.9) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.12.9) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color @@ -26007,7 +26115,7 @@ packages: resolution: {integrity: sha512-FwZ/wxjqe+5RgzF2SRsPSWsVB9+McAVRWW0tRkmbh7fBjrf3HFZZbcr8vr61p1K+NBaAPv57DRjxgIyfbHmd7g==} engines: {node: '>=7.6.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) puppeteer-core: 1.12.2 transitivePeerDependencies: - bufferutil @@ -26171,7 +26279,7 @@ packages: minimist: 1.2.8 object-filter: 1.0.2 run-parallel: 1.2.0 - semver: 6.3.0 + semver: 6.3.1 dev: true /check-types@8.0.3: @@ -27045,7 +27153,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.0.0 serialize-javascript: 6.0.0 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /copy-webpack-plugin@9.1.0(webpack@5.70.0): @@ -27083,7 +27191,6 @@ packages: dependencies: browserslist: 4.19.3 semver: 7.0.0 - dev: true /core-js-compat@3.21.1: resolution: {integrity: sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==} @@ -27383,7 +27490,7 @@ packages: postcss-modules-values: 3.0.0 postcss-value-parser: 4.2.0 schema-utils: 2.7.1 - semver: 6.3.0 + semver: 6.3.1 webpack: 5.70.0(webpack-cli@3.3.12) /css-loader@3.6.0(webpack@5.76.3): @@ -27424,7 +27531,7 @@ packages: postcss-value-parser: 4.2.0 schema-utils: 3.1.1 semver: 7.5.3 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /css-loader@6.7.1(webpack@5.70.0): @@ -27458,7 +27565,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.21) postcss-value-parser: 4.2.0 semver: 7.3.8 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /css-select-base-adapter@0.1.1: @@ -27952,7 +28059,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 9.2.2 - dev: true /debuglog@1.0.1: resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} @@ -29062,7 +29168,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint: 8.32.0 eslint-plugin-import: 2.25.4(@typescript-eslint/parser@5.54.0)(eslint-import-resolver-typescript@2.5.0)(eslint-import-resolver-webpack@0.13.2)(eslint@8.32.0) glob: 7.2.3 @@ -29333,7 +29439,7 @@ packages: eslint: ^5.0.0 || ^6.0.0 dependencies: comment-parser: 0.7.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint: 8.32.0 jsdoctypeparser: 6.1.0 lodash: 4.17.21 @@ -29352,7 +29458,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 dependencies: comment-parser: 0.7.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint: 7.32.0 jsdoctypeparser: 9.0.0 lodash: 4.17.21 @@ -29371,7 +29477,7 @@ packages: dependencies: '@es-joy/jsdoccomment': 0.10.8 comment-parser: 1.2.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) eslint: 7.32.0 esquery: 1.4.0 jsdoc-type-pratt-parser: 1.2.0 @@ -29391,11 +29497,11 @@ packages: dependencies: '@es-joy/jsdoccomment': 0.36.1 comment-parser: 1.3.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) escape-string-regexp: 4.0.0 eslint: 8.32.0 esquery: 1.4.0 - semver: 7.5.0 + semver: 7.5.3 spdx-expression-parse: 3.0.1 transitivePeerDependencies: - supports-color @@ -29557,7 +29663,7 @@ packages: object.values: 1.1.5 prop-types: 15.8.1 resolve: 2.0.0-next.3 - semver: 6.3.0 + semver: 6.3.1 string.prototype.matchall: 4.0.6 dev: true @@ -29693,7 +29799,7 @@ packages: ajv: 6.12.6 chalk: 2.4.2 cross-spawn: 6.0.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) doctrine: 3.0.0 eslint-scope: 4.0.3 eslint-utils: 1.4.3 @@ -29738,7 +29844,7 @@ packages: ajv: 6.12.6 chalk: 2.4.2 cross-spawn: 6.0.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) doctrine: 3.0.0 eslint-scope: 5.1.1 eslint-utils: 1.4.3 @@ -29786,7 +29892,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) doctrine: 3.0.0 enquirer: 2.3.6 escape-string-regexp: 4.0.0 @@ -29836,7 +29942,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 @@ -30282,7 +30388,7 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -30631,7 +30737,7 @@ packages: dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color @@ -30905,12 +31011,12 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.13 '@types/json-schema': 7.0.9 chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 6.0.0 - deepmerge: 4.3.0 + deepmerge: 4.3.1 eslint: 8.32.0 fs-extra: 9.1.0 glob: 7.2.3 @@ -30952,7 +31058,7 @@ packages: semver: 7.5.3 tapable: 1.1.3 typescript: 5.1.6 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.1.6)(webpack@5.70.0): @@ -32504,7 +32610,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) transitivePeerDependencies: - acorn dev: true @@ -32536,7 +32642,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: content-type: 1.0.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) is-retry-allowed: 1.2.0 is-stream: 2.0.1 parse-json: 4.0.0 @@ -32575,7 +32681,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color @@ -32585,7 +32691,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color dev: true @@ -32656,7 +32762,7 @@ packages: engines: {node: '>= 6.0.0'} dependencies: agent-base: 5.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color @@ -32665,7 +32771,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color dev: true @@ -32675,7 +32781,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color @@ -32709,7 +32815,7 @@ packages: dependencies: '@tannin/sprintf': 1.2.0 '@wordpress/compose': 3.25.3(react@17.0.2) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) events: 3.3.0 hash.js: 1.1.7 interpolate-components: 1.1.1 @@ -32730,7 +32836,7 @@ packages: '@babel/runtime': 7.21.0 '@tannin/sprintf': 1.2.0 '@wordpress/compose': 3.25.3(react@17.0.2) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) events: 3.3.0 hash.js: 1.1.7 interpolate-components: 1.1.1 @@ -32752,7 +32858,7 @@ packages: '@babel/runtime': 7.21.0 '@tannin/sprintf': 1.2.0 '@wordpress/compose': 5.4.1(react@17.0.2) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) events: 3.3.0 hash.js: 1.1.7 lodash: 4.17.21 @@ -33772,7 +33878,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.21.3 - '@babel/parser': 7.21.3 + '@babel/parser': 7.22.15 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.1 @@ -33821,7 +33927,7 @@ packages: resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} engines: {node: '>=6'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) istanbul-lib-coverage: 2.0.5 make-dir: 2.1.0 rimraf: 2.7.1 @@ -33834,7 +33940,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -34271,7 +34377,7 @@ packages: '@jest/types': 25.5.0 babel-jest: 25.5.1(@babel/core@7.21.3) chalk: 3.0.0 - deepmerge: 4.3.0 + deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.9 jest-environment-jsdom: 25.5.0 @@ -34306,7 +34412,7 @@ packages: '@jest/types': 26.6.2 babel-jest: 26.6.3(@babel/core@7.21.3) chalk: 4.1.2 - deepmerge: 4.3.0 + deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.9 jest-environment-jsdom: 26.6.2 @@ -34701,11 +34807,11 @@ packages: dependencies: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 + '@jest/types': 29.6.1 '@types/jsdom': 20.0.1 '@types/node': 16.18.21 jest-mock: 29.5.0 - jest-util: 29.5.0 + jest-util: 29.6.2 jsdom: 20.0.3 transitivePeerDependencies: - bufferutil @@ -34767,10 +34873,10 @@ packages: dependencies: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 + '@jest/types': 29.6.1 '@types/node': 16.18.21 jest-mock: 29.5.0 - jest-util: 29.5.0 + jest-util: 29.6.2 dev: true /jest-environment-node@29.6.2: @@ -35141,16 +35247,6 @@ packages: jest-get-type: 27.5.1 pretty-format: 27.5.1 - /jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.6.2 - jest-get-type: 29.4.3 - pretty-format: 29.6.2 - dev: true - /jest-matcher-utils@29.6.2: resolution: {integrity: sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -35194,7 +35290,7 @@ packages: resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.13 '@jest/types': 26.6.2 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -35209,7 +35305,7 @@ packages: resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.13 '@jest/types': 27.5.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -35223,7 +35319,7 @@ packages: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.13 '@jest/types': 29.6.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -35238,7 +35334,7 @@ packages: resolution: {integrity: sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.13 '@jest/types': 29.6.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -36028,7 +36124,7 @@ packages: resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 '@jest/types': 26.6.2 '@types/babel__traverse': 7.14.2 '@types/prettier': 2.4.2 @@ -36056,7 +36152,7 @@ packages: '@babel/generator': 7.21.3 '@babel/plugin-syntax-typescript': 7.18.6(@babel/core@7.21.3) '@babel/traverse': 7.21.3 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/babel__traverse': 7.14.2 @@ -36086,7 +36182,7 @@ packages: '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.3) '@babel/plugin-syntax-typescript': 7.18.6(@babel/core@7.21.3) '@babel/traverse': 7.21.3 - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.6.2 '@jest/types': 29.6.1 @@ -36116,7 +36212,7 @@ packages: '@babel/generator': 7.21.3 '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.3) '@babel/plugin-syntax-typescript': 7.18.6(@babel/core@7.21.3) - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 '@jest/expect-utils': 29.6.2 '@jest/transform': 29.6.2 '@jest/types': 29.6.1 @@ -36581,6 +36677,35 @@ packages: /jsc-android@250230.2.1: resolution: {integrity: sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==} + /jscodeshift@0.13.1(@babel/preset-env@7.12.7): + resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/core': 7.21.3 + '@babel/parser': 7.17.8 + '@babel/plugin-proposal-class-properties': 7.16.7(@babel/core@7.21.3) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7(@babel/core@7.21.3) + '@babel/plugin-proposal-optional-chaining': 7.16.7(@babel/core@7.21.3) + '@babel/plugin-transform-modules-commonjs': 7.17.7(@babel/core@7.21.3) + '@babel/preset-env': 7.12.7(@babel/core@7.12.9) + '@babel/preset-flow': 7.16.7(@babel/core@7.21.3) + '@babel/preset-typescript': 7.16.7(@babel/core@7.21.3) + '@babel/register': 7.18.9(@babel/core@7.21.3) + babel-core: 7.0.0-bridge.0(@babel/core@7.21.3) + chalk: 4.1.2 + flow-parser: 0.121.0 + graceful-fs: 4.2.9 + micromatch: 3.1.10(supports-color@6.1.0) + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.20.5 + temp: 0.8.4 + write-file-atomic: 2.4.1 + transitivePeerDependencies: + - supports-color + /jscodeshift@0.13.1(@babel/preset-env@7.20.2): resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} hasBin: true @@ -36609,6 +36734,7 @@ packages: write-file-atomic: 2.4.1 transitivePeerDependencies: - supports-color + dev: true /jsdoc-type-pratt-parser@1.1.1: resolution: {integrity: sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==} @@ -37574,7 +37700,7 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -38202,48 +38328,48 @@ packages: dependencies: uglify-es: 3.3.9 - /metro-react-native-babel-preset@0.72.1(@babel/core@7.17.8): + /metro-react-native-babel-preset@0.72.1(@babel/core@7.12.9): resolution: {integrity: sha512-DlvMw2tFrCqD9OXBoN11fPM09kHC22FZpnkTmG4Pr4kecV+aDmEGxwakjUcjELrX1JCXz2MLPvqeJkbiP1f5CA==} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.17.8) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-proposal-export-default-from': 7.16.7(@babel/core@7.17.8) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.17.8) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.17.8) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.17.8) - '@babel/plugin-syntax-export-default-from': 7.16.7(@babel/core@7.17.8) - '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.17.8) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.17.8) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.17.8) - '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-async-to-generator': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.17.8) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.17.8) - '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.17.8) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.17.8) - '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-flow-strip-types': 7.16.7(@babel/core@7.17.8) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.17.8) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.17.8) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.17.8) - '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1(@babel/core@7.17.8) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.17.8) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.17.8) - '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-react-jsx-source': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-runtime': 7.19.1(@babel/core@7.17.8) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.17.8) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.17.8) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.17.8) - '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.17.8) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.17.8) + '@babel/core': 7.12.9 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.12.9) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-proposal-export-default-from': 7.16.7(@babel/core@7.12.9) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.12.9) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.12.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.12.9) + '@babel/plugin-syntax-export-default-from': 7.16.7(@babel/core@7.12.9) + '@babel/plugin-syntax-flow': 7.16.7(@babel/core@7.12.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.9) + '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-async-to-generator': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.12.9) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.12.9) + '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.12.9) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.12.9) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-flow-strip-types': 7.16.7(@babel/core@7.12.9) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.12.9) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.12.9) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.12.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1(@babel/core@7.12.9) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.12.9) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.12.9) + '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-react-jsx-source': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-runtime': 7.19.1(@babel/core@7.12.9) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.12.9) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.12.9) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.12.9) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.12.9) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.12.9) '@babel/template': 7.22.15 react-refresh: 0.4.3 transitivePeerDependencies: @@ -38296,16 +38422,16 @@ packages: transitivePeerDependencies: - supports-color - /metro-react-native-babel-transformer@0.72.1(@babel/core@7.17.8): + /metro-react-native-babel-transformer@0.72.1(@babel/core@7.12.9): resolution: {integrity: sha512-hMnN0MOgVloAk94YuXN7sLeDaZ51Y6xIcJXxIU1s/KaygAGXk6o7VAdwf2MY/IV1SIct5lkW4Gn71u/9/EvfXA==} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.17.8 - babel-preset-fbjs: 3.4.0(@babel/core@7.17.8) + '@babel/core': 7.12.9 + babel-preset-fbjs: 3.4.0(@babel/core@7.12.9) hermes-parser: 0.8.0 metro-babel-transformer: 0.72.1 - metro-react-native-babel-preset: 0.72.1(@babel/core@7.17.8) + metro-react-native-babel-preset: 0.72.1(@babel/core@7.12.9) metro-source-map: 0.72.1 nullthrows: 1.1.1 transitivePeerDependencies: @@ -38484,7 +38610,7 @@ packages: /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -39012,7 +39138,7 @@ packages: dependencies: carlo: 0.9.46 chokidar: 3.5.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) isbinaryfile: 3.0.3 mime: 2.5.2 opn: 5.5.0 @@ -39366,7 +39492,7 @@ packages: ajv-errors: 1.0.1(ajv@6.12.6) chalk: 4.1.2 cosmiconfig: 7.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) globby: 11.1.0 ignore: 5.2.0 is-plain-obj: 3.0.0 @@ -39647,7 +39773,7 @@ packages: '@oclif/plugin-warn-if-update-available': 2.0.4 aws-sdk: 2.1215.0 concurrently: 7.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) find-yarn-workspace-root: 2.0.0 fs-extra: 8.1.0 github-slugger: 1.4.0 @@ -39977,7 +40103,7 @@ packages: resolution: {integrity: sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg==} engines: {node: '>=12.10.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) p-queue: 6.6.2 transitivePeerDependencies: - supports-color @@ -40136,7 +40262,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.1.6 @@ -40346,7 +40472,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 crc32: 0.2.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) seed-random: 2.2.0 transitivePeerDependencies: - supports-color @@ -40742,8 +40868,8 @@ packages: loader-utils: 2.0.4 postcss: 8.4.21 schema-utils: 3.1.1 - semver: 7.5.0 - webpack: 5.76.3(webpack-cli@3.3.12) + semver: 7.5.3 + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /postcss-loader@6.2.1(postcss@8.4.21)(webpack@5.76.3): @@ -41738,7 +41864,7 @@ packages: engines: {node: '>=6.4.0'} requiresBuild: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) extract-zip: 1.7.0 https-proxy-agent: 2.2.4 mime: 2.6.0 @@ -41779,7 +41905,7 @@ packages: engines: {node: '>=10.18.1'} dependencies: cross-fetch: 3.1.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) devtools-protocol: 0.0.981744 extract-zip: 2.0.1 https-proxy-agent: 5.0.1 @@ -41808,7 +41934,7 @@ packages: dependencies: chromium-bidi: 0.4.4(devtools-protocol@0.0.1094867) cross-fetch: 3.1.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) devtools-protocol: 0.0.1094867 extract-zip: 2.0.1 https-proxy-agent: 5.0.1 @@ -41829,7 +41955,7 @@ packages: engines: {node: '>=10.18.1'} dependencies: '@types/mime-types': 2.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) extract-zip: 2.0.1 https-proxy-agent: 4.0.0 mime: 2.6.0 @@ -41853,7 +41979,7 @@ packages: requiresBuild: true dependencies: '@types/mime-types': 2.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) extract-zip: 1.7.0 https-proxy-agent: 4.0.0 mime: 2.6.0 @@ -41879,7 +42005,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: chalk: 2.4.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) execa: 0.10.0 fs-extra: 6.0.1 get-stream: 5.2.0 @@ -42416,12 +42542,12 @@ packages: moment: 2.29.4 dev: false - /react-native-codegen@0.70.4(@babel/preset-env@7.20.2): + /react-native-codegen@0.70.4(@babel/preset-env@7.12.7): resolution: {integrity: sha512-bPyd5jm840omfx24VRyMP+KPzAefpRDwE18w5ywMWHCWZBSqLn1qI9WgBPnavlIrjTEuzxznWQNcaA26lw8AMQ==} dependencies: '@babel/parser': 7.22.15 flow-parser: 0.121.0 - jscodeshift: 0.13.1(@babel/preset-env@7.20.2) + jscodeshift: 0.13.1(@babel/preset-env@7.12.7) nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' @@ -42435,10 +42561,10 @@ packages: peerDependencies: react-native: '*' dependencies: - react-native: 0.70.0(@babel/core@7.17.8)(@babel/preset-env@7.20.2)(react@17.0.2) + react-native: 0.70.0(@babel/core@7.12.9)(@babel/preset-env@7.12.7)(react@18.1.0) whatwg-url-without-unicode: 8.0.0-3 - /react-native@0.70.0(@babel/core@7.17.8)(@babel/preset-env@7.20.2)(react@17.0.2): + /react-native@0.70.0(@babel/core@7.12.9)(@babel/preset-env@7.12.7)(react@18.1.0): resolution: {integrity: sha512-QjXLbrK9f+/B2eCzn6kAvglLV/8nwPuFGaFv7ggPpAzFRyx5bVN1dwQLHL3MrP7iXR/M7Jc6Nnid7tmRSic6vA==} engines: {node: '>=14'} hasBin: true @@ -42446,7 +42572,7 @@ packages: react: 18.1.0 dependencies: '@jest/create-cache-key-function': 27.5.1 - '@react-native-community/cli': 9.1.1(@babel/core@7.17.8) + '@react-native-community/cli': 9.1.1(@babel/core@7.12.9) '@react-native-community/cli-platform-android': 9.1.0 '@react-native-community/cli-platform-ios': 9.1.0 '@react-native/assets': 1.0.0 @@ -42459,23 +42585,23 @@ packages: invariant: 2.2.4 jsc-android: 250230.2.1 memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.72.1(@babel/core@7.17.8) + metro-react-native-babel-transformer: 0.72.1(@babel/core@7.12.9) metro-runtime: 0.72.1 metro-source-map: 0.72.1 mkdirp: 0.5.5 nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.2.0 - react: 17.0.2 + react: 18.1.0 react-devtools-core: 4.24.0 - react-native-codegen: 0.70.4(@babel/preset-env@7.20.2) + react-native-codegen: 0.70.4(@babel/preset-env@7.12.7) react-native-gradle-plugin: 0.70.2 react-refresh: 0.4.3 - react-shallow-renderer: 16.15.0(react@17.0.2) + react-shallow-renderer: 16.15.0(react@18.1.0) regenerator-runtime: 0.13.11 scheduler: 0.22.0 stacktrace-parser: 0.1.10 - use-sync-external-store: 1.2.0(react@17.0.2) + use-sync-external-store: 1.2.0(react@18.1.0) whatwg-fetch: 3.6.2 ws: 6.2.2 transitivePeerDependencies: @@ -42729,13 +42855,13 @@ packages: react: 17.0.2 react-is: 17.0.2 - /react-shallow-renderer@16.15.0(react@17.0.2): + /react-shallow-renderer@16.15.0(react@18.1.0): resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 - react: 17.0.2 + react: 18.1.0 react-is: 18.2.0 /react-sizeme@3.0.2: @@ -42941,6 +43067,12 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 + /react@18.1.0: + resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + /read-cmd-shim@3.0.1: resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -43276,7 +43408,6 @@ packages: resolution: {integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==} dependencies: '@babel/runtime': 7.21.0 - dev: true /regenerator-transform@0.15.0: resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} @@ -43469,6 +43600,7 @@ packages: /rememo@4.0.0: resolution: {integrity: sha512-6BAfg1Dqg6UteZBEH9k6EHHersM86/EcBOMtJV+h+xEn1GC3H+gAgJWpexWYAamAxD0qXNmIt50iS/zuZKnQag==} + dev: false /rememo@4.0.2: resolution: {integrity: sha512-NVfSP9NstE3QPNs/TnegQY0vnJnstKQSpcrsI2kBTB3dB2PkdfKdTa+abbjMIDqpc63fE5LfjLgfMst0ULMFxQ==} @@ -44016,7 +44148,7 @@ packages: sass: 1.60.0 schema-utils: 3.1.1 semver: 7.5.0 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /sass-loader@12.6.0(sass@1.60.0)(webpack@5.76.3): @@ -44065,7 +44197,7 @@ packages: neo-async: 2.6.2 sass: 1.60.0 schema-utils: 2.7.1 - semver: 6.3.0 + semver: 6.3.1 webpack: 4.46.0(webpack-cli@3.3.12) dev: true @@ -44230,7 +44362,6 @@ packages: /semver@7.0.0: resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} hasBin: true - dev: true /semver@7.3.5: resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} @@ -44483,7 +44614,7 @@ packages: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color @@ -44494,7 +44625,7 @@ packages: resolution: {integrity: sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw==} dependencies: buffer: 6.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) err-code: 3.0.1 get-browser-rtc: 1.1.0 queue-microtask: 1.2.3 @@ -44668,7 +44799,7 @@ packages: engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) socks: 2.7.0 transitivePeerDependencies: - supports-color @@ -44679,7 +44810,7 @@ packages: engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) socks: 2.7.0 transitivePeerDependencies: - supports-color @@ -44839,7 +44970,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -44852,7 +44983,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -45283,7 +45414,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.1.1 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /style-search@0.1.0: @@ -45474,7 +45605,7 @@ packages: balanced-match: 2.0.0 chalk: 4.1.2 cosmiconfig: 7.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) execall: 2.0.0 fast-glob: 3.2.7 fastest-levenshtein: 1.0.12 @@ -45533,7 +45664,7 @@ packages: balanced-match: 1.0.2 chalk: 4.1.2 cosmiconfig: 7.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) execall: 2.0.0 fast-glob: 3.2.11 fastest-levenshtein: 1.0.12 @@ -45590,7 +45721,7 @@ packages: colord: 2.9.2 cosmiconfig: 7.0.1 css-functions-list: 3.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) execall: 2.0.0 fast-glob: 3.2.11 fastest-levenshtein: 1.0.12 @@ -45653,7 +45784,7 @@ packages: dependencies: component-emitter: 1.3.0 cookiejar: 2.1.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 2.0.1 @@ -45720,7 +45851,6 @@ packages: /supports-color@9.2.2: resolution: {integrity: sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==} engines: {node: '>=12'} - dev: true /supports-hyperlinks@2.2.0: resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} @@ -46118,7 +46248,7 @@ packages: serialize-javascript: 6.0.0 source-map: 0.6.1 terser: 5.10.0(acorn@8.8.1) - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) transitivePeerDependencies: - acorn dev: true @@ -47327,7 +47457,7 @@ packages: loader-utils: 1.4.0 mime: 2.6.0 schema-utils: 1.0.0 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /url-loader@3.0.0(webpack@4.46.0): @@ -47509,6 +47639,14 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 17.0.2 + dev: false + + /use-sync-external-store@1.2.0(react@18.1.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.1.0 /use@3.1.1: resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} @@ -47876,7 +48014,7 @@ packages: dependencies: chalk: 2.4.2 commander: 3.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color @@ -48167,7 +48305,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 3.1.1 - webpack: 5.76.3(webpack-cli@3.3.12) + webpack: 5.76.3(webpack-cli@4.9.2) dev: true /webpack-dev-middleware@5.3.3(webpack@5.70.0): @@ -48877,7 +49015,7 @@ packages: resolution: {integrity: sha512-NMp0YsBM40CuI5vWtHpjWOuf96rPfbpGkamlJpVwYvgenIh1ynRzqVnGfsnjofgz13T2qcKkdwJY0Y2X7z+W+w==} dependencies: '@babel/runtime': 7.21.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) progress-event: 1.0.0 uuid: 7.0.3 wp-error: 1.3.0 @@ -49360,7 +49498,7 @@ packages: cli-table: 0.3.11 commander: 7.1.0 dateformat: 4.6.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) diff: 5.1.0 error: 10.4.0 escape-string-regexp: 4.0.0 @@ -49404,7 +49542,7 @@ packages: dependencies: chalk: 4.1.2 dargs: 7.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@9.2.2) execa: 5.1.1 github-username: 6.0.0 lodash: 4.17.21 From 39662af2484ccc903123dd4ff5ef279b784ee928 Mon Sep 17 00:00:00 2001 From: Tarun Vijwani Date: Thu, 28 Sep 2023 00:45:59 +0400 Subject: [PATCH 70/81] Update WooCommerce Blocks to version to 11.2.0 (#40473) Update WooCommerce Blocks to 11.2.0 --- .../woocommerce/bin/composer/wp/composer.lock | 28 +++++++------- .../update-woocommerce-blocks-11.2.0 | 4 ++ plugins/woocommerce/composer.json | 4 +- plugins/woocommerce/composer.lock | 38 ++++++++++--------- 4 files changed, 40 insertions(+), 34 deletions(-) create mode 100644 plugins/woocommerce/changelog/update-woocommerce-blocks-11.2.0 diff --git a/plugins/woocommerce/bin/composer/wp/composer.lock b/plugins/woocommerce/bin/composer/wp/composer.lock index fec15e9534b..f00c0e5f663 100644 --- a/plugins/woocommerce/bin/composer/wp/composer.lock +++ b/plugins/woocommerce/bin/composer/wp/composer.lock @@ -373,16 +373,16 @@ }, { "name": "wp-cli/i18n-command", - "version": "v2.4.3", + "version": "v2.4.4", "source": { "type": "git", "url": "https://github.com/wp-cli/i18n-command.git", - "reference": "203b020318fe2596a218bf52db25adc6b187f42d" + "reference": "7d82e675f271359b1af614e6325d8eeaeb7d7474" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/203b020318fe2596a218bf52db25adc6b187f42d", - "reference": "203b020318fe2596a218bf52db25adc6b187f42d", + "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/7d82e675f271359b1af614e6325d8eeaeb7d7474", + "reference": "7d82e675f271359b1af614e6325d8eeaeb7d7474", "shasum": "" }, "require": { @@ -393,7 +393,7 @@ }, "require-dev": { "wp-cli/scaffold-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^3.1" + "wp-cli/wp-cli-tests": "^4" }, "suggest": { "ext-json": "Used for reading and generating JSON translation files", @@ -435,9 +435,9 @@ "homepage": "https://github.com/wp-cli/i18n-command", "support": { "issues": "https://github.com/wp-cli/i18n-command/issues", - "source": "https://github.com/wp-cli/i18n-command/tree/v2.4.3" + "source": "https://github.com/wp-cli/i18n-command/tree/v2.4.4" }, - "time": "2023-03-24T18:15:59+00:00" + "time": "2023-08-30T18:00:10+00:00" }, { "name": "wp-cli/mustangostang-spyc", @@ -492,16 +492,16 @@ }, { "name": "wp-cli/php-cli-tools", - "version": "v0.11.19", + "version": "v0.11.20", "source": { "type": "git", "url": "https://github.com/wp-cli/php-cli-tools.git", - "reference": "2d27f0db5c36f5aa0064abecddd6d05f28c4d001" + "reference": "d788a2c79e02f2f735fbb2b9a53db94d0e1bca4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/2d27f0db5c36f5aa0064abecddd6d05f28c4d001", - "reference": "2d27f0db5c36f5aa0064abecddd6d05f28c4d001", + "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/d788a2c79e02f2f735fbb2b9a53db94d0e1bca4f", + "reference": "d788a2c79e02f2f735fbb2b9a53db94d0e1bca4f", "shasum": "" }, "require": { @@ -509,7 +509,7 @@ }, "require-dev": { "roave/security-advisories": "dev-latest", - "wp-cli/wp-cli-tests": "^3.1.6" + "wp-cli/wp-cli-tests": "^4" }, "type": "library", "extra": { @@ -549,9 +549,9 @@ ], "support": { "issues": "https://github.com/wp-cli/php-cli-tools/issues", - "source": "https://github.com/wp-cli/php-cli-tools/tree/v0.11.19" + "source": "https://github.com/wp-cli/php-cli-tools/tree/v0.11.20" }, - "time": "2023-07-21T11:37:15+00:00" + "time": "2023-09-01T12:21:35+00:00" }, { "name": "wp-cli/wp-cli", diff --git a/plugins/woocommerce/changelog/update-woocommerce-blocks-11.2.0 b/plugins/woocommerce/changelog/update-woocommerce-blocks-11.2.0 new file mode 100644 index 00000000000..42d37afcda0 --- /dev/null +++ b/plugins/woocommerce/changelog/update-woocommerce-blocks-11.2.0 @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Update WooCommerce Blocks to 11.2.0 diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index 45f3e0e0a85..8bb5ef32a5f 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -17,13 +17,13 @@ "php": ">=7.4", "automattic/jetpack-autoloader": "2.11.18", "automattic/jetpack-config": "1.15.2", - "automattic/jetpack-connection": "1.51.7", + "automattic/jetpack-connection": "^1.57", "automattic/jetpack-constants": "^1.6.22", "composer/installers": "^1.9", "maxmind-db/reader": "^1.11", "pelago/emogrifier": "^6.0", "woocommerce/action-scheduler": "3.6.3", - "woocommerce/woocommerce-blocks": "11.1.1" + "woocommerce/woocommerce-blocks": "11.2.0" }, "require-dev": { "automattic/jetpack-changelogger": "^3.3.0", diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index ea1924d7ec6..7b661985fee 100644 --- a/plugins/woocommerce/composer.lock +++ b/plugins/woocommerce/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e5800331e1c25cd08ad877b665da724f", + "content-hash": "6dbaa76c3a13dc3d312b2ad734d0bc91", "packages": [ { "name": "automattic/jetpack-a8c-mc-stats", @@ -206,28 +206,28 @@ }, { "name": "automattic/jetpack-connection", - "version": "v1.51.7", + "version": "v1.57.0", "source": { "type": "git", "url": "https://github.com/Automattic/jetpack-connection.git", - "reference": "4c4bae836858957d9aaf6854cf4e24c3261242c4" + "reference": "d6c83b19aef56cc08a8314e84ab79e66cfbf3e03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-connection/zipball/4c4bae836858957d9aaf6854cf4e24c3261242c4", - "reference": "4c4bae836858957d9aaf6854cf4e24c3261242c4", + "url": "https://api.github.com/repos/Automattic/jetpack-connection/zipball/d6c83b19aef56cc08a8314e84ab79e66cfbf3e03", + "reference": "d6c83b19aef56cc08a8314e84ab79e66cfbf3e03", "shasum": "" }, "require": { "automattic/jetpack-a8c-mc-stats": "^1.4.20", - "automattic/jetpack-admin-ui": "^0.2.19", + "automattic/jetpack-admin-ui": "^0.2.20", "automattic/jetpack-constants": "^1.6.22", "automattic/jetpack-redirect": "^1.7.25", "automattic/jetpack-roles": "^1.4.23", - "automattic/jetpack-status": "^1.16.4" + "automattic/jetpack-status": "^1.18.0" }, "require-dev": { - "automattic/jetpack-changelogger": "^3.3.2", + "automattic/jetpack-changelogger": "^3.3.7", "automattic/wordbless": "@dev", "brain/monkey": "2.6.1", "yoast/phpunit-polyfills": "1.0.4" @@ -247,7 +247,7 @@ "link-template": "https://github.com/Automattic/jetpack-connection/compare/v${old}...v${new}" }, "branch-alias": { - "dev-trunk": "1.51.x-dev" + "dev-trunk": "1.57.x-dev" } }, "autoload": { @@ -263,9 +263,9 @@ ], "description": "Everything needed to connect to the Jetpack infrastructure", "support": { - "source": "https://github.com/Automattic/jetpack-connection/tree/v1.51.7" + "source": "https://github.com/Automattic/jetpack-connection/tree/v1.57.0" }, - "time": "2023-04-10T11:44:13+00:00" + "time": "2023-08-21T17:33:13+00:00" }, { "name": "automattic/jetpack-constants", @@ -1004,20 +1004,22 @@ }, { "name": "woocommerce/woocommerce-blocks", - "version": "11.1.1", + "version": "11.2.0", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-blocks.git", - "reference": "81bff865d7fdd7de40a4da8fc49539a124ac1863" + "reference": "86e93ddd06606100e199fdae049baaa5754c2a17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-blocks/zipball/81bff865d7fdd7de40a4da8fc49539a124ac1863", - "reference": "81bff865d7fdd7de40a4da8fc49539a124ac1863", + "url": "https://api.github.com/repos/woocommerce/woocommerce-blocks/zipball/86e93ddd06606100e199fdae049baaa5754c2a17", + "reference": "86e93ddd06606100e199fdae049baaa5754c2a17", "shasum": "" }, "require": { - "automattic/jetpack-autoloader": "^2.9.1", + "automattic/jetpack-autoloader": "^2.11", + "automattic/jetpack-config": "^1.15", + "automattic/jetpack-connection": "^1.57", "composer/installers": "^1.7.0", "ext-hash": "*", "ext-json": "*" @@ -1062,9 +1064,9 @@ ], "support": { "issues": "https://github.com/woocommerce/woocommerce-blocks/issues", - "source": "https://github.com/woocommerce/woocommerce-blocks/tree/v11.1.1" + "source": "https://github.com/woocommerce/woocommerce-blocks/tree/v11.2.0" }, - "time": "2023-09-20T10:14:34+00:00" + "time": "2023-09-27T17:36:02+00:00" } ], "packages-dev": [ From 6d52afa5e99b8f2a179190d3a6a82c06d4f34326 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 28 Sep 2023 11:15:38 +0800 Subject: [PATCH 71/81] Handle CYS ai wizard API failures (#40430) * Add error notice * Handle api call loader errors * Add docs * Add changelog * Fix untranslated text --- .../customize-store/design-with-ai/actions.ts | 12 +++++ .../design-with-ai/pages/ToneOfVoice.tsx | 50 ++++++++++++++----- .../design-with-ai/services.ts | 18 ++++--- .../design-with-ai/state-machine.tsx | 38 +++++++++++--- .../customize-store/design-with-ai/types.ts | 3 ++ .../client/customize-store/style.scss | 22 ++++++++ .../update-handle-cys-ai-loader-errors | 4 ++ 7 files changed, 119 insertions(+), 28 deletions(-) create mode 100644 plugins/woocommerce/changelog/update-handle-cys-ai-loader-errors diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts index 7693fda32df..f4f62c08b2e 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/actions.ts @@ -196,6 +196,17 @@ const spawnSaveDescriptionToOption = assign< ), } ); +const assignAPICallLoaderError = assign< + designWithAiStateMachineContext, + designWithAiStateMachineEvents +>( { + apiCallLoader: () => { + return { + hasErrors: true, + }; + }, +} ); + const logAIAPIRequestError = () => { // log AI API request error // eslint-disable-next-line no-console @@ -275,6 +286,7 @@ export const actions = { assignHeader, assignFooter, assignHomepageTemplate, + assignAPICallLoaderError, logAIAPIRequestError, updateQueryStep, recordTracksStepViewed, diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/pages/ToneOfVoice.tsx b/plugins/woocommerce-admin/client/customize-store/design-with-ai/pages/ToneOfVoice.tsx index 16ef43026f3..b3022006a00 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/pages/ToneOfVoice.tsx +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/pages/ToneOfVoice.tsx @@ -1,10 +1,10 @@ /** * External dependencies */ -import { Button } from '@wordpress/components'; +import { Button, Notice } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; import { ProgressBar } from '@woocommerce/components'; -import { useState } from '@wordpress/element'; +import { useState, createInterpolateElement } from '@wordpress/element'; /** * Internal dependencies @@ -59,6 +59,14 @@ export const ToneOfVoice = ( { ? choices[ 0 ].key : context.toneOfVoice.choice ); + + const onContinue = () => { + sendEvent( { + type: 'TONE_OF_VOICE_COMPLETE', + payload: sound, + } ); + }; + return (
+ { context.apiCallLoader.hasErrors && ( + + { createInterpolateElement( + __( + 'Oops! We encountered a problem while generating your store. ', + 'woocommerce' + ), + { + retryButton: ( + + ), + } + ) } + + ) }
{ choices.map( ( { title, subtitle, key } ) => { return ( @@ -99,16 +134,7 @@ export const ToneOfVoice = ( { ); } ) }
- -
diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts index 6224881e7d2..2a626f0c3c7 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/services.ts @@ -7,7 +7,7 @@ import { __experimentalRequestJetpackToken as requestJetpackToken } from '@wooco import apiFetch from '@wordpress/api-fetch'; import { recordEvent } from '@woocommerce/tracks'; import { OPTIONS_STORE_NAME } from '@woocommerce/data'; -import { Sender, assign, createMachine } from 'xstate'; +import { Sender, assign, createMachine, actions } from 'xstate'; import { dispatch, resolveSelect } from '@wordpress/data'; // @ts-ignore No types for this exist yet. import { store as coreStore } from '@wordpress/core-data'; @@ -26,6 +26,8 @@ import { } from '../assembler-hub/hooks/use-home-templates'; import { HOMEPAGE_TEMPLATES } from '../data/homepageTemplates'; +const { escalate } = actions; + const browserPopstateHandler = () => ( sendBack: Sender< { type: 'EXTERNAL_URL_UPDATE' } > ) => { const popstateHandler = () => { @@ -163,7 +165,13 @@ export const queryAiEndpoint = createMachine( always: [ { cond: ( context ) => context.retryCount >= 3, - target: 'failed', + target: 'querying', + actions: [ + // Throw an error to be caught by the parent machine. + escalate( () => ( { + data: 'Max retries exceeded', + } ) ), + ], }, { target: 'querying', @@ -173,12 +181,6 @@ export const queryAiEndpoint = createMachine( }, ], }, - failed: { - type: 'final', - data: { - result: 'failed', - }, - }, success: { type: 'final', data: ( context ) => { diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx b/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx index cd51285ad25..1acca282846 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/state-machine.tsx @@ -75,10 +75,16 @@ export const designWithAiStateMachineDefinition = createMachine( choice: '', }, aiSuggestions: { - defaultColorPalette: {} as ColorPaletteResponse, - fontPairing: '' as FontPairing[ 'pair_name' ], + // Default color palette, font pairing are used as fallbacks when the AI endpoint fails. + defaultColorPalette: { + default: 'Ancient Bronze', + } as ColorPaletteResponse, + fontPairing: 'Rubik + Inter' as FontPairing[ 'pair_name' ], homepageTemplate: '' as HomepageTemplate[ 'homepage_template' ], }, + apiCallLoader: { + hasErrors: false, + }, }, initial: 'navigate', states: { @@ -307,6 +313,10 @@ export const designWithAiStateMachineDefinition = createMachine( ], target: 'success', }, + // If there's an error we don't want to block the user from proceeding. + onError: { + target: 'success', + }, }, }, success: { type: 'final' }, @@ -338,6 +348,10 @@ export const designWithAiStateMachineDefinition = createMachine( ], target: 'success', }, + // If there's an error we don't want to block the user from proceeding. + onError: { + target: 'success', + }, }, }, success: { type: 'final' }, @@ -369,6 +383,12 @@ export const designWithAiStateMachineDefinition = createMachine( ], target: 'success', }, + onError: { + actions: [ + 'assignAPICallLoaderError', + ], + target: '#toneOfVoice', + }, }, }, success: { type: 'final' }, @@ -384,8 +404,10 @@ export const designWithAiStateMachineDefinition = createMachine( target: 'success', }, onError: { - // TODO: handle error - target: 'success', + actions: [ + 'assignAPICallLoaderError', + ], + target: '#toneOfVoice', }, }, }, @@ -408,16 +430,16 @@ export const designWithAiStateMachineDefinition = createMachine( target: 'done', }, onError: { - target: 'failed', + actions: [ + 'assignAPICallLoaderError', + ], + target: '#toneOfVoice', }, }, }, done: { type: 'final', }, - failed: { - type: 'final', // If there's an error we should not block the user from proceeding. They'll just not see the AI suggestions, but that's better than being stuck - }, }, }, saveAiResponse: { diff --git a/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts b/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts index f8d4a81f5b4..d8b2693afe6 100644 --- a/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts +++ b/plugins/woocommerce-admin/client/customize-store/design-with-ai/types.ts @@ -30,6 +30,9 @@ export type designWithAiStateMachineContext = { fontPairing: FontPairing[ 'pair_name' ]; homepageTemplate: HomepageTemplate[ 'homepage_template' ]; }; + apiCallLoader: { + hasErrors: boolean; + }; // If we require more data from options, previously provided core profiler details, // we can retrieve them in preBusinessInfoDescription and then assign them here spawnSaveDescriptionToOptionRef?: ReturnType< typeof spawn >; diff --git a/plugins/woocommerce-admin/client/customize-store/style.scss b/plugins/woocommerce-admin/client/customize-store/style.scss index 10059196b4b..92c72390c29 100644 --- a/plugins/woocommerce-admin/client/customize-store/style.scss +++ b/plugins/woocommerce-admin/client/customize-store/style.scss @@ -116,3 +116,25 @@ body.woocommerce-customize-store.js.is-fullscreen-mode { gap: 16px; } } + +.woocommerce-cys-design-with-ai__error-notice.is-error { + background: #fce2e4; + padding: $gap-small; + // gap: 12px; + font-size: 13px; + font-style: normal; + font-weight: 400; + line-height: 24px; + color: $gray-900; + margin: 0 0 60px; + width: 615px; + + .components-notice__content { + margin: 0; + } + + .components-button { + padding: 0; + height: initial; + } +} diff --git a/plugins/woocommerce/changelog/update-handle-cys-ai-loader-errors b/plugins/woocommerce/changelog/update-handle-cys-ai-loader-errors new file mode 100644 index 00000000000..9c22663b0bb --- /dev/null +++ b/plugins/woocommerce/changelog/update-handle-cys-ai-loader-errors @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Handle CYS ai wizard API failures From 82ddee70a56ee18ed2d484d041531fa85b01a090 Mon Sep 17 00:00:00 2001 From: Yordan Soares <38109855+YordanSoares@users.noreply.github.com> Date: Thu, 28 Sep 2023 10:37:08 +0200 Subject: [PATCH 72/81] =?UTF-8?q?Remove=20"soberano"=20from=20the=20VES=20?= =?UTF-8?q?currency=20name=20(Venezuelan=20bol=C3=ADvar)=20(#40424)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Leif Singer Co-authored-by: Néstor Soriano --- plugins/woocommerce/changelog/pr-40424 | 4 ++++ plugins/woocommerce/i18n/locale-info.php | 2 +- .../tests/api-core-tests/tests/data/data-crud.test.js | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/pr-40424 diff --git a/plugins/woocommerce/changelog/pr-40424 b/plugins/woocommerce/changelog/pr-40424 new file mode 100644 index 00000000000..ac28bdc8b32 --- /dev/null +++ b/plugins/woocommerce/changelog/pr-40424 @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Rename the Venezuelan currency from Bolivar soberano to just Bolivar \ No newline at end of file diff --git a/plugins/woocommerce/i18n/locale-info.php b/plugins/woocommerce/i18n/locale-info.php index 9caff0364b5..62f960cb077 100644 --- a/plugins/woocommerce/i18n/locale-info.php +++ b/plugins/woocommerce/i18n/locale-info.php @@ -3781,7 +3781,7 @@ return array( 'dimension_unit' => 'cm', 'direction' => 'ltr', 'default_locale' => 'es_VE', - 'name' => 'Bolívar soberano', + 'name' => 'Bolívar', 'singular' => 'Venezuelan bolívar', 'plural' => 'Venezuelan bolívars', 'short_symbol' => null, diff --git a/plugins/woocommerce/tests/api-core-tests/tests/data/data-crud.test.js b/plugins/woocommerce/tests/api-core-tests/tests/data/data-crud.test.js index 86ebc53540a..534227b9faa 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/data/data-crud.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/data/data-crud.test.js @@ -3307,7 +3307,7 @@ test.describe( 'Data API tests', () => { }, { code: 'VE', - name: 'Bolívar soberano', + name: 'Bolívar', currency_code: 'VES', currency_pos: 'left', decimal_sep: ',', From 3cfa509118f02cf40c5f4d2749a879c156b52187 Mon Sep 17 00:00:00 2001 From: "Jorge A. Torres" Date: Thu, 28 Sep 2023 12:01:09 +0100 Subject: [PATCH 73/81] Correctly set 'created_via' for HPOS orders created on the admin (#40469) --- plugins/woocommerce/changelog/fix-created-via-admin-hpos | 4 ++++ .../woocommerce/src/Internal/Admin/Orders/PageController.php | 1 + 2 files changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-created-via-admin-hpos diff --git a/plugins/woocommerce/changelog/fix-created-via-admin-hpos b/plugins/woocommerce/changelog/fix-created-via-admin-hpos new file mode 100644 index 00000000000..9063edc9ae6 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-created-via-admin-hpos @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Correctly set 'created_via' for HPOS orders created on the admin. diff --git a/plugins/woocommerce/src/Internal/Admin/Orders/PageController.php b/plugins/woocommerce/src/Internal/Admin/Orders/PageController.php index b3779e6283c..125b3d6e098 100644 --- a/plugins/woocommerce/src/Internal/Admin/Orders/PageController.php +++ b/plugins/woocommerce/src/Internal/Admin/Orders/PageController.php @@ -384,6 +384,7 @@ class PageController { $this->order = new $order_class_name(); $this->order->set_object_read( false ); $this->order->set_status( 'auto-draft' ); + $this->order->set_created_via( 'admin' ); $this->order->save(); $this->handle_edit_lock(); From 756b0a6171a3a0152020184c12265e3a849ea1da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maikel=20David=20P=C3=A9rez=20G=C3=B3mez?= Date: Thu, 28 Sep 2023 08:38:38 -0400 Subject: [PATCH 74/81] Add cursor: not-allowed; to the disabled Quick updates button (#40448) * Add cursor: not-allowed; to the disabled Quick updates button * Add changelog file --- packages/js/product-editor/changelog/fix-40208 | 4 ++++ .../src/components/variations-table/styles.scss | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 packages/js/product-editor/changelog/fix-40208 diff --git a/packages/js/product-editor/changelog/fix-40208 b/packages/js/product-editor/changelog/fix-40208 new file mode 100644 index 00000000000..7ab6be55004 --- /dev/null +++ b/packages/js/product-editor/changelog/fix-40208 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Add cursor: not-allowed; to the disabled Quick updates button diff --git a/packages/js/product-editor/src/components/variations-table/styles.scss b/packages/js/product-editor/src/components/variations-table/styles.scss index 2962b6fc318..c0faae3b7ae 100644 --- a/packages/js/product-editor/src/components/variations-table/styles.scss +++ b/packages/js/product-editor/src/components/variations-table/styles.scss @@ -12,6 +12,10 @@ $table-row-height: calc($grid-unit * 9); display: flex; align-items: center; border-bottom: 1px solid $gray-200; + + .variations-actions-menu__toogle:disabled { + cursor: not-allowed; + } } &__notice { From e65c5dbef441501e7838b5dd719296ff506b4d74 Mon Sep 17 00:00:00 2001 From: Matt Sherman Date: Thu, 28 Sep 2023 08:49:45 -0400 Subject: [PATCH 75/81] Add README.md files for BlockTemplates and ProductTemplates (#40425) * Initial BlockTemplates readme * Fix code docs in SectionInterface * Fix code docs in GroupInterface * BlockTemplates README.md updates * ProductTemplates README.md updates * Changelog * Update reference to handbook. * Markdown linting: Allow the same headings under different nesting * Add missing method headers * Update Usage section of BlockTemplates README to be more clear * Import BlockInterface in examples --- .../changelog/add-template-api-readmes | 4 + .../src/Admin/BlockTemplates/README.md | 208 ++++++++++++++++++ .../ProductTemplates/GroupInterface.php | 6 +- .../ProductTemplates/README.md | 125 +++++++++++ .../ProductTemplates/SectionInterface.php | 6 +- 5 files changed, 343 insertions(+), 6 deletions(-) create mode 100644 plugins/woocommerce/changelog/add-template-api-readmes create mode 100644 plugins/woocommerce/src/Admin/BlockTemplates/README.md create mode 100644 plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/README.md diff --git a/plugins/woocommerce/changelog/add-template-api-readmes b/plugins/woocommerce/changelog/add-template-api-readmes new file mode 100644 index 00000000000..a3d87cd8135 --- /dev/null +++ b/plugins/woocommerce/changelog/add-template-api-readmes @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Documentation for block templates and product editor templates. diff --git a/plugins/woocommerce/src/Admin/BlockTemplates/README.md b/plugins/woocommerce/src/Admin/BlockTemplates/README.md new file mode 100644 index 00000000000..964dfb8511f --- /dev/null +++ b/plugins/woocommerce/src/Admin/BlockTemplates/README.md @@ -0,0 +1,208 @@ +# BlockTemplates + +The `Automattic\WooCommerce\Admin\BlockTemplates` namespace contains interfaces for working with block templates. + +## Usage + +Objects that implement the interfaces and fire the hooks in this namespace are instantiated using more specific APIs, +such as: + +- [Product Editor Templates](../Features/ProductBlockEditor/ProductTemplates/README.md) + +Please see the documentation for those APIs for more information on how to do this. + +Note: In order to use these interface type definitions, you will need to import them. For example to import the `BlockInterface`: + +```php +use Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface; +``` + +## Hooks + +### `woocommerce_block_template_area_{template_area}_after_add_block_{block_id}` + +Fires after a specific block is added to any template in a specific area. + +The dynamic portion of the hook name, `$template_area`, refers to the area of the template the block was added to. + +The dynamic portion of the hook name, `$block_id`, refers to the ID of the block that was added. + +#### Parameters + +##### `BlockInterface $block` + +The block that was added. + +### `woocommerce_block_template_after_add_block` + +Fires after a block is added to a template. + +Unless you need to perform an action after any block is added to any template, you should use the more specific `woocommerce_block_template_area_{template_area}_after_add_block_{block_id}` hook instead for better performance. + +#### Parameters + +##### `BlockInterface $block` + +The block that was added. + +### `woocommerce_block_template_area_{template_area}_after_remove_block_{block_id}` + +Fires after a specific block is removed from any template in a specific area. + +The dynamic portion of the hook name, `$template_area`, refers to the area of the template the block was removed from. + +The dynamic portion of the hook name, `$block_id`, refers to the ID of the block that was removed. + +#### Parameters + +##### `BlockInterface $block` + +The block that was removed. + +### `woocommerce_block_template_after_remove_block` + +Fires after a block is removed from a template. + +Unless you need to perform an action after any block is removed from any template, you should use the more specific `woocommerce_block_template_area_{template_area}_after_remove_block_{block_id}` hook instead for better performance. + +#### Parameters + +##### `BlockInterface $block` + +The block that was removed. + +## Interfaces + +### BlockTemplateInterface + +All block templates implement this interface. + +#### Methods + +##### `get_id(): string` + +Get the template ID. + +##### `get_title(): string` + +Get the template title. + +##### `get_description(): string` + +Get the template description. + +##### `get_area(): string` + +Get the template area. + +##### `get_block( string $block_id ): ?BlockInterface` + +Get a block by ID. + +##### `remove_block( string $block_id )` + +Removes a block from the template. + +##### `remove_blocks()` + +Removes all blocks from the template. + +##### `get_formatted_template(): array` + +Get the formatted template. + +### BlockContainerInterface + +#### Methods + +##### `get_block( string $block_id ): ?BlockInterface` + +Get a block by ID. + +##### `remove_block( string $block_id )` + +Removes a block from the template. + +##### `remove_blocks()` + +Removes all blocks from the template. + +##### `&get_root_template(): BlockTemplateInterface` + +Get the root template that the block belongs to. + +##### `get_formatted_template(): array` + +Get the block configuration as a formatted template. + +### ContainerInterface + +#### Methods + +##### `get_block( string $block_id ): ?BlockInterface` + +Get a block by ID. + +##### `remove_block( string $block_id )` + +Removes a block from the container. + +##### `remove_blocks()` + +Removes all blocks from the container. + +##### `&get_root_template(): BlockTemplateInterface` + +Get the root template that the container belongs to. + +##### `get_formatted_template(): array` + +Get the container as a formatted template. + +### BlockInterface + +#### Methods + +##### `get_name(): string` + +Get the block name. + +#### `get_id(): string` + +Get the block ID. + +#### `get_order(): int` + +Get the block order. + +#### `set_order( int $order )` + +Set the block order. + +##### `get_attributes(): array` + +Get the block attributes as a key/value array. + +##### `set_attributes( array $attributes )` + +Set the block attributes as a key/value array. + +##### `&get_parent(): ContainerInterface` + +Get the parent container that the block belongs to. + +##### `&get_root_template(): BlockTemplateInterface` + +Get the root template that the block belongs to. + +##### `remove()` + +Removes the block from its parent. When a block is removed from its parent, it is detached from both the parent and the root template. + +##### `is_detached(): bool` + +Check if the block is detached from its parent or root template. A detached block is no longer a part of the template and will not be included in the formatted template. + +##### `get_formatted_template(): array` + +Get the block configuration as a formatted template. diff --git a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/GroupInterface.php b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/GroupInterface.php index 7a80d56c59a..f8fd4bfc9d0 100644 --- a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/GroupInterface.php +++ b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/GroupInterface.php @@ -6,12 +6,12 @@ use Automattic\WooCommerce\Admin\BlockTemplates\BlockContainerInterface; use Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface; /** - * Interface for block containers. + * Interface for group containers, which contain sections and blocks. */ interface GroupInterface extends BlockContainerInterface { /** - * Adds a new section block. + * Adds a new section to the group * * @param array $block_config block config. * @return SectionInterface new block section. @@ -19,7 +19,7 @@ interface GroupInterface extends BlockContainerInterface { public function add_section( array $block_config ): SectionInterface; /** - * Adds a new block to the section block. + * Adds a new block to the group. * * @param array $block_config block config. */ diff --git a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/README.md b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/README.md new file mode 100644 index 00000000000..c3bbd31558b --- /dev/null +++ b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/README.md @@ -0,0 +1,125 @@ +# ProductTemplates + +The `Automattic\WooCommerce\Admin\Features\ProductBlockEditor\ProductTemplates` namespace contains interfaces for interacting with product editor templates, which are used to define the structure of the product editor form. + +General interfaces for interacting with block templates are located in the +[`Automattic\WooCommerce\Admin\BlockTemplates`](../../../BlockTemplates/README.md) namespace. + +## Usage + +For more examples and best practices, please see the Product Editor Development Handbook. + +### Adding a new group to product editor templates after an existing group + +```php +use Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface; + +function YOUR_PREFIX_add_group( BlockInterface $general_group ) { + $parent = $general_group->get_parent(); + + $parent->add_group( + [ + 'id' => 'YOUR-PREFIX-group', + 'order' => $general_group->get_order() + 5, + 'attributes' => [ + 'title' => __( 'My Group', 'YOUR-TEXT-DOMAIN' ), + ], + ] + ); +} + +add_action( 'woocommerce_block_template_area_product-form_after_add_block_general', 'YOUR_PREFIX_add_group' ); +``` + +### Adding a new block to product editor templates after an existing block + +```php +use Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface; + +function YOUR_PREFIX_add_block( BlockInterface $product_name_block ) { + $parent = $product_name_block->get_parent(); + + $parent->add_block( + [ + 'id' => 'YOUR-PREFIX-block', + 'blockName' => 'woocommerce/product-text-field', + 'order' => $product_name_block->get_order() + 5, + 'attributes' => [ + 'label' => __( 'My Block', 'YOUR-TEXT-DOMAIN' ), + ], + ] + ); +} + +add_action( 'woocommerce_block_template_area_product-form_after_add_block_product-name', 'YOUR_PREFIX_add_block' ); +``` + +### Removing a block from product editor templates + +```php +use Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface; + +function YOUR_PREFIX_remove_block( BlockInterface $sale_price_block ) { + $sale_price_block->remove(); +} + +add_action( 'woocommerce_block_template_area_product-form_after_remove_block_sale-price', 'YOUR_PREFIX_remove_block' ); +``` + +## Interfaces + +### GroupInterface + +Groups are the top-level organizational structure for product editor templates. +They typically contain one or more sections, though they can also contain +blocks directly. + +#### Methods + +##### `add_section( array $block_config ): SectionInterface` + +Add a new section to the group. + +##### `add_block( array $block_config ): BlockInterface` + +Add a new block to the group. + +### SectionInterface + +Sections are the second-level organizational structure for product editor templates. +They typically contain one or more blocks, though they can also contain sub-sections +if further organization is needed. + +#### Methods + +##### `add_section( array $block_config ): SectionInterface` + +Add a new sub-section to the section. + +##### `add_block( array $block_config ): BlockInterface` + +Add a new block to the section. + +### ProductFormTemplateInterface + +All product form templates implement this interface. +Product form templates are used to define the structure of the product editor form. +They contain groups as their top-level organizational structure. + +#### Methods + +##### `add_group( array $block_config ): GroupInterface` + +Add a new group to the template. + +##### `get_group_by_id( string $group_id ): ?GroupInterface` + +Gets a group by ID. Returns null if the group does not exist. + +##### `get_section_by_id( string $section_id ): ?SectionInterface` + +Gets a section by ID. Returns null if the section does not exist. + +##### `get_block_by_id( string $block_id ): ?BlockInterface` + +Gets a block by ID. Returns null if the block does not exist. diff --git a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SectionInterface.php b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SectionInterface.php index 42f3ab0ae31..29dc52fe292 100644 --- a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SectionInterface.php +++ b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SectionInterface.php @@ -7,12 +7,12 @@ use Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface; /** - * Interface for block containers. + * Interface for section containers, which contain sub-sections and blocks. */ interface SectionInterface extends BlockContainerInterface { /** - * Adds a new section block. + * Adds a new sub-section to the section. * * @param array $block_config block config. * @return SectionInterface new block section. @@ -20,7 +20,7 @@ interface SectionInterface extends BlockContainerInterface { public function add_section( array $block_config ): SectionInterface; /** - * Adds a new block to the section block. + * Adds a new block to the section. * * @param array $block_config block config. */ From d8aa52d0a7e1907346223b9e421d411d479b0770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maikel=20David=20P=C3=A9rez=20G=C3=B3mez?= Date: Thu, 28 Sep 2023 09:14:48 -0400 Subject: [PATCH 76/81] Hide list controls when no items are selected (#40434) * The Select all and Clear selection buttons are only displayed when at least 1 item is selected * Add changelog file --- .../js/product-editor/changelog/add-40194 | 4 +++ .../variations-table/variations-table.tsx | 32 +++++++++++-------- 2 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 packages/js/product-editor/changelog/add-40194 diff --git a/packages/js/product-editor/changelog/add-40194 b/packages/js/product-editor/changelog/add-40194 new file mode 100644 index 00000000000..869a5ceaed3 --- /dev/null +++ b/packages/js/product-editor/changelog/add-40194 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +The Select all and Clear selection buttons are only displayed when at least 1 item is selected diff --git a/packages/js/product-editor/src/components/variations-table/variations-table.tsx b/packages/js/product-editor/src/components/variations-table/variations-table.tsx index 633bccc07ce..f46f5c7594c 100644 --- a/packages/js/product-editor/src/components/variations-table/variations-table.tsx +++ b/packages/js/product-editor/src/components/variations-table/variations-table.tsx @@ -349,20 +349,24 @@ export const VariationsTable = forwardRef< />
- - + { hasSelection( variationIds ) && ( + <> + + + + ) }
Date: Thu, 28 Sep 2023 17:29:15 +0300 Subject: [PATCH 77/81] Updated link href attribute in new product editor on "How to prepare images" section (#39179) * Updated link href attribute * Added changelog file --- .../changelog/fix-how-to-prepare-links-link-target | 4 ++++ .../ProductTemplates/SimpleProductTemplate.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce/changelog/fix-how-to-prepare-links-link-target diff --git a/plugins/woocommerce/changelog/fix-how-to-prepare-links-link-target b/plugins/woocommerce/changelog/fix-how-to-prepare-links-link-target new file mode 100644 index 00000000000..7e5d92f7d96 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-how-to-prepare-links-link-target @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Added link to blog post which explains best way to handle link diff --git a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php index 53229687d39..ace3ccb3d08 100644 --- a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php +++ b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php @@ -232,7 +232,7 @@ class SimpleProductTemplate extends AbstractProductFormTemplate implements Produ 'description' => sprintf( /* translators: %1$s: Images guide link opening tag. %2$s: Images guide link closing tag. */ __( 'Drag images, upload new ones or select files from your library. For best results, use JPEG files that are 1000 by 1000 pixels or larger. %1$sHow to prepare images?%2$s', 'woocommerce' ), - '', + '', '' ), ], From 86a535a224e379649497e5177674664b0cfd1f61 Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Thu, 28 Sep 2023 15:22:23 -0300 Subject: [PATCH 78/81] Fix field label styling in the edit attribute modal (#40449) * Add prop readOnlyWhenClosed * Add changelog --- .../changelog/dev-40203_edit_attribute_modal_styles | 4 ++++ .../src/components/attribute-control/edit-attribute-modal.tsx | 1 + .../attribute-term-input-field/attribute-term-input-field.tsx | 3 +++ 3 files changed, 8 insertions(+) create mode 100644 packages/js/product-editor/changelog/dev-40203_edit_attribute_modal_styles diff --git a/packages/js/product-editor/changelog/dev-40203_edit_attribute_modal_styles b/packages/js/product-editor/changelog/dev-40203_edit_attribute_modal_styles new file mode 100644 index 00000000000..40ed406ffd1 --- /dev/null +++ b/packages/js/product-editor/changelog/dev-40203_edit_attribute_modal_styles @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Fix field label styling in the edit attribute modal #40449 diff --git a/packages/js/product-editor/src/components/attribute-control/edit-attribute-modal.tsx b/packages/js/product-editor/src/components/attribute-control/edit-attribute-modal.tsx index 6e774430d43..27f4d8f2c64 100644 --- a/packages/js/product-editor/src/components/attribute-control/edit-attribute-modal.tsx +++ b/packages/js/product-editor/src/components/attribute-control/edit-attribute-modal.tsx @@ -124,6 +124,7 @@ export const EditAttributeModal: React.FC< EditAttributeModalProps > = ( { terms: val, } ); } } + readOnlyWhenClosed={ false } /> ) : ( { const attributeTermInputId = useRef( `woocommerce-attribute-term-field-${ ++uniqueId }` @@ -266,6 +268,7 @@ export const AttributeTermInputField: React.FC< selected={ value } onSelect={ onSelect } onRemove={ onRemove } + readOnlyWhenClosed={ readOnlyWhenClosed } className={ 'woocommerce-attribute-term-field ' + attributeTermInputId.current From fd6ac01fcd614cc78050eb7e528daa5e6c8b0c1c Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Thu, 28 Sep 2023 15:38:42 -0300 Subject: [PATCH 79/81] Improve copy in variation management notifications (#40467) * Add method `getSnackbarText` * Add single variation update/delete * Add changelog * Refactor method `getSnackbarText` * Improve code --- ...opy_for_variation_management_notifications | 4 + .../variations-table/variations-table.tsx | 73 +++++++++++++------ 2 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 packages/js/product-editor/changelog/dev-40245_improve_copy_for_variation_management_notifications diff --git a/packages/js/product-editor/changelog/dev-40245_improve_copy_for_variation_management_notifications b/packages/js/product-editor/changelog/dev-40245_improve_copy_for_variation_management_notifications new file mode 100644 index 00000000000..8b2580e948c --- /dev/null +++ b/packages/js/product-editor/changelog/dev-40245_improve_copy_for_variation_management_notifications @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Improve copy in variation management notifications #40467 diff --git a/packages/js/product-editor/src/components/variations-table/variations-table.tsx b/packages/js/product-editor/src/components/variations-table/variations-table.tsx index f46f5c7594c..976590d9e17 100644 --- a/packages/js/product-editor/src/components/variations-table/variations-table.tsx +++ b/packages/js/product-editor/src/components/variations-table/variations-table.tsx @@ -75,6 +75,11 @@ type VariationsTableProps = { ) => void; }; +type VariationResponseProps = { + update?: Partial< ProductVariation >[]; + delete?: Partial< ProductVariation >[]; +}; + export const VariationsTable = forwardRef< HTMLDivElement, VariationsTableProps @@ -192,6 +197,40 @@ export const VariationsTable = forwardRef< const variationIds = variations.map( ( { id } ) => id ); + function getSnackbarText( + response: VariationResponseProps | ProductVariation, + type?: string + ): string { + if ( 'id' in response ) { + const action = type === 'update' ? 'updated' : 'deleted'; + return sprintf( + /* translators: The deleted or updated variations count */ + __( '1 variation %s.', 'woocommerce' ), + action + ); + } + + const { update = [], delete: deleted = [] } = response; + const updatedCount = update.length; + const deletedCount = deleted.length; + + if ( deletedCount > 0 ) { + return sprintf( + /* translators: The deleted variations count */ + __( '%s variations deleted.', 'woocommerce' ), + deletedCount + ); + } else if ( updatedCount > 0 ) { + return sprintf( + /* translators: The updated variations count */ + __( '%s variations updated.', 'woocommerce' ), + updatedCount + ); + } + + return ''; + } + function handleDeleteVariationClick( variationId: number ) { if ( isUpdating[ variationId ] ) return; setIsUpdating( ( prevState ) => ( { @@ -202,10 +241,11 @@ export const VariationsTable = forwardRef< product_id: productId, id: variationId, } ) - .then( () => { + .then( ( response: ProductVariation ) => { recordEvent( 'product_variations_delete', { source: TRACKS_SOURCE, } ); + createSuccessNotice( getSnackbarText( response, 'delete' ) ); invalidateResolution( 'getProductVariations', [ requestParams, ] ); @@ -232,11 +272,8 @@ export const VariationsTable = forwardRef< { product_id: productId, id: variationId }, variation ) - .then( () => { - createSuccessNotice( - /* translators: The updated variations count */ - sprintf( __( '%s variation/s updated.', 'woocommerce' ), 1 ) - ); + .then( ( response: ProductVariation ) => { + createSuccessNotice( getSnackbarText( response, 'update' ) ); } ) .catch( () => { createErrorNotice( @@ -257,19 +294,13 @@ export const VariationsTable = forwardRef< { product_id: productId }, { update } ) - .then( ( response ) => + .then( ( response: VariationResponseProps ) => invalidateResolution( 'getProductVariations', [ requestParams, ] ).then( () => response ) ) - .then( ( response ) => { - createSuccessNotice( - sprintf( - /* translators: The updated variations count */ - __( '%s variation/s updated.', 'woocommerce' ), - response.update.length - ) - ); + .then( ( response: VariationResponseProps ) => { + createSuccessNotice( getSnackbarText( response ) ); onVariationTableChange( 'update', update ); } ) .catch( () => { @@ -286,19 +317,13 @@ export const VariationsTable = forwardRef< delete: values.map( ( { id } ) => id ), } ) - .then( ( response ) => + .then( ( response: VariationResponseProps ) => invalidateResolution( 'getProductVariations', [ requestParams, ] ).then( () => response ) ) - .then( ( response ) => { - createSuccessNotice( - sprintf( - /* translators: The updated variations count */ - __( '%s variation/s updated.', 'woocommerce' ), - response.delete.length - ) - ); + .then( ( response: VariationResponseProps ) => { + createSuccessNotice( getSnackbarText( response ) ); onVariationTableChange( 'delete' ); } ) .catch( () => { From 2ed9eadaeb7665f92dc3885217a6f8e5d86b34e8 Mon Sep 17 00:00:00 2001 From: Nathan Silveira Date: Thu, 28 Sep 2023 15:40:50 -0300 Subject: [PATCH 80/81] Create initial version of Product Editor Development Handbook (#40309) * Add markdown for testing * Revert "Add markdown for testing" This reverts commit 63a9fc9f441b97db15bb9ee40c46c38033f2e235. * Add new folder with block product editor docs * Iterate over the documentation * Iterate over documentation * Add screenshot * Iterate over doc * Iterate over documentation * Iterate over documentation * Add sample comment * Rename folder * Add FAQ and comments * More changes * Remove unused README * Iterate over documentation * Implement lint changes * Implement lint changes * Add changelog * Remove placeholder readmes * Remove stale references * Remove _media folder and add images to developer.woocommerce.com * Remove placeholder docs * Improve wording for 'non-standard applications' * Convert example to new template API hook * Fix snippet * Iterate over code review suggestions * Replace product editor structure image * Update image reference * Increment example in common-tasks * Update add a field next to an existing one sample --- docs/product-editor-development/README.md | 18 ++++++++++ .../common-tasks.md | 34 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 docs/product-editor-development/README.md create mode 100644 docs/product-editor-development/common-tasks.md diff --git a/docs/product-editor-development/README.md b/docs/product-editor-development/README.md new file mode 100644 index 00000000000..ef66a11de0f --- /dev/null +++ b/docs/product-editor-development/README.md @@ -0,0 +1,18 @@ +# Developing extensions for the product editor + +> ⚠️ **Notice:** This documentation is currently a **work in progress**. Please be aware that some sections might be incomplete or subject to change. We appreciate your patience and welcome any contributions! + +This handbook is a guide for extension developers looking to add support for the new product editor in their extensions. The product editor uses [Gutenberg's Block Editor](https://github.com/WordPress/gutenberg/tree/trunk/packages/block-editor), which is going to help WooCommerce evolve alongside the WordPress ecosystem. + +The product editor's UI consists of Groups (currently rendered as tabs), Sections, and Fields, which are all blocks. + +![Product editor structure](https://woocommerce.files.wordpress.com/2023/09/groups-sections-fields.jpg) + +The form's structure is defined in PHP using a Template. The template can be modified by using the Block Template API to add new Groups, Sections, and Fields as well as remove existing ones. + +Many extensibility implementations can be done using only the PHP-based Block Template API. More complex interactivity can be implemented using JavaScript and React (the same library used to implement the core blocks used in the product editor). [@woocommerce/create-product-editor-block](../../packages/js/create-product-editor-block/README.md) can help scaffold a development environment with JavaScript and React. + + +## Index + +- [Common tasks](common-tasks.md) diff --git a/docs/product-editor-development/common-tasks.md b/docs/product-editor-development/common-tasks.md new file mode 100644 index 00000000000..f283a70c685 --- /dev/null +++ b/docs/product-editor-development/common-tasks.md @@ -0,0 +1,34 @@ +# Common tasks + +> ⚠️ **Notice:** This documentation is currently a **work in progress**. Please be aware that some sections might be incomplete or subject to change. We appreciate your patience and welcome any contributions! + +## Adding a group/section/field next to an existing one + +Here's a snippet that adds a new block to the catalog section, between the first and second fields (order 15): + +```php +use Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface; + +if ( ! function_exists( 'YOUR_PREFIX_add_block_after_categories' ) ) { + /** + * Add a new block to the template. + */ + function YOUR_PREFIX_add_block_after_categories( BlockInterface $product_categories_field ) { + $product_categories_field->get_parent()->add_block( + [ + 'id' => 'your-prefix-id', + 'blockName' => 'woocommerce/product-checkbox-field', + 'order' => $product_categories_field->get_order() + 5, + 'attributes' => [ + 'label' => 'Your Checkbox', + 'property' => 'your_checkbox_bool_property', + ], + ] + ); + } +} +add_action( 'woocommerce_block_template_area_product-form_after_add_block_product-categories', 'YOUR_PREFIX_add_block_after_categories' ); +``` + +Result: +![Adding field next to other field](https://woocommerce.files.wordpress.com/2023/09/adding-field-next-to-other-field.png) From ec61afd38739ae045124f6b91cc43ecbb2c9c256 Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Thu, 28 Sep 2023 15:49:11 -0300 Subject: [PATCH 81/81] Remove "Feeling Stuck" tooltip (#40397) * Remove "Feeling Stuck" tooltip * Add changelog --- .../client/activity-panel/activity-panel.js | 4 - .../add-product-feedback-tour.tsx | 114 ------------------ .../dev-40130_remove_feeling_stuck_tooltip | 4 + 3 files changed, 4 insertions(+), 118 deletions(-) delete mode 100644 plugins/woocommerce-admin/client/guided-tours/add-product-feedback-tour.tsx create mode 100644 plugins/woocommerce/changelog/dev-40130_remove_feeling_stuck_tooltip diff --git a/plugins/woocommerce-admin/client/activity-panel/activity-panel.js b/plugins/woocommerce-admin/client/activity-panel/activity-panel.js index 2b275810c9d..a3ecf8cef0a 100644 --- a/plugins/woocommerce-admin/client/activity-panel/activity-panel.js +++ b/plugins/woocommerce-admin/client/activity-panel/activity-panel.js @@ -46,7 +46,6 @@ import { getUrlParams } from '~/utils'; import { useActiveSetupTasklist } from '~/task-lists'; import { getSegmentsFromPath } from '~/utils/url-helpers'; import { FeedbackIcon } from '~/products/images/feedback-icon'; -import { ProductFeedbackTour } from '~/guided-tours/add-product-feedback-tour'; const HelpPanel = lazy( () => import( /* webpackChunkName: "activity-panels-help" */ './panels/help' ) @@ -482,9 +481,6 @@ export const ActivityPanel = ( { isEmbedded, query } ) => { clearPanel={ () => clearPanel() } /> - { isAddProductPage() && ( - - ) } { showHelpHighlightTooltip ? ( { - const { hasShownTour } = useSelect( ( select ) => { - const { getOption } = select( OPTIONS_STORE_NAME ); - - return { - hasShownTour: getOption( FEEDBACK_TOUR_OPTION ) as - | boolean - | undefined, - }; - } ); - - return hasShownTour; -}; - -type ProductFeedbackTourProps = { - currentTab: string; -}; - -export const ProductFeedbackTour: React.FC< ProductFeedbackTourProps > = ( { - currentTab, -} ) => { - const hasShownTour = useShowProductFeedbackTour(); - const [ isTourVisible, setIsTourVisible ] = useState( false ); - const tourTimeout = useRef< ReturnType< typeof setTimeout > | null >( - null - ); - const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); - - const clearTourTimeout = () => { - clearTimeout( tourTimeout.current as ReturnType< typeof setTimeout > ); - tourTimeout.current = null; - }; - - useEffect( () => { - if ( hasShownTour !== false ) { - return; - } - - tourTimeout.current = setTimeout( () => { - setIsTourVisible( true ); - }, FEEDBACK_TIMEOUT_MS ); - - return () => clearTourTimeout(); - }, [ hasShownTour ] ); - - useEffect( () => { - if ( ! isTourVisible ) { - return; - } - updateOptions( { - [ FEEDBACK_TOUR_OPTION ]: true, - } ); - }, [ isTourVisible ] ); - - if ( - currentTab === 'feedback' && - ( isTourVisible || tourTimeout.current ) - ) { - setIsTourVisible( false ); - clearTourTimeout(); - } - - if ( ! isTourVisible ) { - return null; - } - - return ( - { - setIsTourVisible( false ); - }, - } } - /> - ); -}; diff --git a/plugins/woocommerce/changelog/dev-40130_remove_feeling_stuck_tooltip b/plugins/woocommerce/changelog/dev-40130_remove_feeling_stuck_tooltip new file mode 100644 index 00000000000..c1499e51e2a --- /dev/null +++ b/plugins/woocommerce/changelog/dev-40130_remove_feeling_stuck_tooltip @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Remove "Feeling Stuck" tooltip #40397