+
);
diff --git a/assets/js/types/type-defs/blocks.ts b/assets/js/types/type-defs/blocks.ts
index e7e7f13d6..aa6e6c0d8 100644
--- a/assets/js/types/type-defs/blocks.ts
+++ b/assets/js/types/type-defs/blocks.ts
@@ -1,8 +1,11 @@
/**
* External dependencies
*/
+import type { BlockEditProps, BlockInstance } from '@wordpress/blocks';
import { LazyExoticComponent } from 'react';
+export type EditorBlock< T > = BlockInstance< T > & BlockEditProps< T >;
+
export type RegisteredBlockComponent =
| LazyExoticComponent< React.ComponentType< unknown > >
| ( () => JSX.Element | null )
diff --git a/bin/hook-docs/data/actions.json b/bin/hook-docs/data/actions.json
index 6ec1005eb..b6d0904fd 100644
--- a/bin/hook-docs/data/actions.json
+++ b/bin/hook-docs/data/actions.json
@@ -1,805 +1,743 @@
{
- "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.0/schema.json",
- "hooks": [
- {
- "name": "woocommerce_add_to_cart",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "action",
- "doc": {
- "description": "Fires when an item is added to the cart.",
- "long_description": "This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.",
- "tags": [
- {
- "name": "internal",
- "content": "Matches action name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "ID of the item in the cart.",
- "types": [
- "string"
- ],
- "variable": "$cart_id"
- },
- {
- "name": "param",
- "content": "ID of the product added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$product_id"
- },
- {
- "name": "param",
- "content": "Quantity of the item added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$request_quantity"
- },
- {
- "name": "param",
- "content": "Variation ID of the product added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$variation_id"
- },
- {
- "name": "param",
- "content": "Array of variation data.",
- "types": [
- "array"
- ],
- "variable": "$variation"
- },
- {
- "name": "param",
- "content": "Array of other cart item data.",
- "types": [
- "array"
- ],
- "variable": "$cart_item_data"
- }
- ],
- "long_description_html": "This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.
"
- },
- "args": 6
- },
- {
- "name": "woocommerce_after_main_content",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "action",
- "doc": {
- "description": "Hook: woocommerce_after_main_content",
- "long_description": "Called after rendering the main content for a product.",
- "tags": [
- {
- "name": "see",
- "content": "Outputs closing DIV for the content (priority 10)",
- "refers": "woocommerce_output_content_wrapper_end()"
- }
- ],
- "long_description_html": "Called after rendering the main content for a product.
"
- },
- "args": 0
- },
- {
- "name": "woocommerce_after_main_content",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "action",
- "doc": {
- "description": "Hook: woocommerce_after_main_content",
- "long_description": "Called after rendering the main content for a product.",
- "tags": [
- {
- "name": "see",
- "content": "Outputs closing DIV for the content (priority 10)",
- "refers": "woocommerce_output_content_wrapper_end()"
- }
- ],
- "long_description_html": "Called after rendering the main content for a product.
"
- },
- "args": 0
- },
- {
- "name": "woocommerce_after_shop_loop",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "action",
- "doc": {
- "description": "Hook: woocommerce_after_shop_loop.",
- "long_description": "",
- "tags": [
- {
- "name": "see",
- "content": "Renders pagination (priority 10)",
- "refers": "woocommerce_pagination()"
- }
- ],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_applied_coupon",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "action",
- "doc": {
- "description": "Fires after a coupon has been applied to the cart.",
- "long_description": "",
- "tags": [
- {
- "name": "internal",
- "content": "Matches action name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "The coupon code that was applied.",
- "types": [
- "string"
- ],
- "variable": "$coupon_code"
- }
- ],
- "long_description_html": ""
- },
- "args": 1
- },
- {
- "name": "woocommerce_archive_description",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "action",
- "doc": {
- "description": "Hook: woocommerce_archive_description.",
- "long_description": "",
- "tags": [
- {
- "name": "see",
- "content": "Renders the taxonomy archive description (priority 10)",
- "refers": "woocommerce_taxonomy_archive_description()"
- },
- {
- "name": "see",
- "content": "Renders the product archive description (priority 10)",
- "refers": "woocommerce_product_archive_description()"
- }
- ],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_before_main_content",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "action",
- "doc": {
- "description": "Hook: woocommerce_before_main_content",
- "long_description": "Called before rendering the main content for a product.",
- "tags": [
- {
- "name": "see",
- "content": "Outputs opening DIV for the content (priority 10)",
- "refers": "woocommerce_output_content_wrapper()"
- },
- {
- "name": "see",
- "content": "Outputs breadcrumb trail to the current product (priority 20)",
- "refers": "woocommerce_breadcrumb()"
- },
- {
- "name": "see",
- "content": "Outputs schema markup (priority 30)",
- "refers": "WC_Structured_Data::generate_website_data()"
- }
- ],
- "long_description_html": "Called before rendering the main content for a product.
"
- },
- "args": 0
- },
- {
- "name": "woocommerce_before_main_content",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "action",
- "doc": {
- "description": "Hook: woocommerce_before_main_content",
- "long_description": "Called before rendering the main content for a product.",
- "tags": [
- {
- "name": "see",
- "content": "Outputs opening DIV for the content (priority 10)",
- "refers": "woocommerce_output_content_wrapper()"
- },
- {
- "name": "see",
- "content": "Outputs breadcrumb trail to the current product (priority 20)",
- "refers": "woocommerce_breadcrumb()"
- },
- {
- "name": "see",
- "content": "Outputs schema markup (priority 30)",
- "refers": "WC_Structured_Data::generate_website_data()"
- }
- ],
- "long_description_html": "Called before rendering the main content for a product.
"
- },
- "args": 0
- },
- {
- "name": "woocommerce_before_shop_loop",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "action",
- "doc": {
- "description": "Hook: woocommerce_before_shop_loop.",
- "long_description": "",
- "tags": [
- {
- "name": "see",
- "content": "Render error notices (priority 10)",
- "refers": "woocommerce_output_all_notices()"
- },
- {
- "name": "see",
- "content": "Show number of results found (priority 20)",
- "refers": "woocommerce_result_count()"
- },
- {
- "name": "see",
- "content": "Show form to control sort order (priority 30)",
- "refers": "woocommerce_catalog_ordering()"
- }
- ],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_blocks_cart_enqueue_data",
- "file": "BlockTypes/Cart.php",
- "type": "action",
- "doc": {
- "description": "Fires after cart block data is registered.",
- "long_description": "",
- "tags": [],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_blocks_cart_enqueue_data",
- "file": "BlockTypes/MiniCart.php",
- "type": "action",
- "doc": {
- "description": "Fires after cart block data is registered.",
- "long_description": "",
- "tags": [],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_blocks_checkout_enqueue_data",
- "file": "BlockTypes/Checkout.php",
- "type": "action",
- "doc": {
- "description": "Fires after checkout block data is registered.",
- "long_description": "",
- "tags": [],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_blocks_enqueue_cart_block_scripts_after",
- "file": "BlockTypes/Cart.php",
- "type": "action",
- "doc": {
- "description": "Fires after cart block scripts are enqueued.",
- "long_description": "",
- "tags": [],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_blocks_enqueue_cart_block_scripts_before",
- "file": "BlockTypes/Cart.php",
- "type": "action",
- "doc": {
- "description": "Fires before cart block scripts are enqueued.",
- "long_description": "",
- "tags": [],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_blocks_enqueue_checkout_block_scripts_after",
- "file": "BlockTypes/Checkout.php",
- "type": "action",
- "doc": {
- "description": "Fires after checkout block scripts are enqueued.",
- "long_description": "",
- "tags": [],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_blocks_enqueue_checkout_block_scripts_before",
- "file": "BlockTypes/Checkout.php",
- "type": "action",
- "doc": {
- "description": "Fires before checkout block scripts are enqueued.",
- "long_description": "",
- "tags": [],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_blocks_{$this->registry_identifier}_registration",
- "file": "Integrations/IntegrationRegistry.php",
- "type": "action",
- "doc": {
- "description": "Fires when the IntegrationRegistry is initialized.",
- "long_description": "Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.",
- "tags": [
- {
- "name": "param",
- "content": "Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method.",
- "types": [
- "\\Automattic\\WooCommerce\\Blocks\\Integrations\\IntegrationRegistry"
- ],
- "variable": "$this"
- }
- ],
- "long_description_html": "Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.
"
- },
- "args": 1
- },
- {
- "name": "woocommerce_check_cart_items",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "action",
- "doc": {
- "description": "Fires when cart items are being validated.",
- "long_description": "Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.",
- "tags": [
- {
- "name": "deprecated",
- "content": ""
- },
- {
- "name": "internal",
- "content": "Matches action name in WooCommerce core."
- }
- ],
- "long_description_html": "Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.
"
- },
- "args": 0
- },
- {
- "name": "woocommerce_created_customer",
- "file": "StoreApi/Routes/V1/Checkout.php",
- "type": "action",
- "doc": {
- "description": "Fires after a customer account has been registered.",
- "long_description": "This hook fires after customer accounts are created and passes the customer data.",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "New customer (user) ID.",
- "types": [
- "integer"
- ],
- "variable": "$customer_id"
- },
- {
- "name": "param",
- "content": "Array of customer (user) data.",
- "types": [
- "array"
- ],
- "variable": "$new_customer_data"
- },
- {
- "name": "param",
- "content": "The generated password for the account.",
- "types": [
- "string"
- ],
- "variable": "$password_generated"
- }
- ],
- "long_description_html": "This hook fires after customer accounts are created and passes the customer data.
"
- },
- "args": 3
- },
- {
- "name": "woocommerce_no_products_found",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "action",
- "doc": {
- "description": "Hook: woocommerce_no_products_found.",
- "long_description": "",
- "tags": [
- {
- "name": "see",
- "content": "Default no products found content (priority 10)",
- "refers": "wc_no_products_found()"
- }
- ],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_register_post",
- "file": "StoreApi/Routes/V1/Checkout.php",
- "type": "action",
- "doc": {
- "description": "Fires before a customer account is registered.",
- "long_description": "This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.\n This could be used to add extra validation logic and append errors to the array.",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Customer username.",
- "types": [
- "string"
- ],
- "variable": "$username"
- },
- {
- "name": "param",
- "content": "Customer email address.",
- "types": [
- "string"
- ],
- "variable": "$user_email"
- },
- {
- "name": "param",
- "content": "Error object.",
- "types": [
- "\\WP_Error"
- ],
- "variable": "$errors"
- }
- ],
- "long_description_html": "This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.
This could be used to add extra validation logic and append errors to the array.
"
- },
- "args": 3
- },
- {
- "name": "woocommerce_rest_checkout_process_payment_with_context",
- "file": "StoreApi/Routes/V1/Checkout.php",
- "type": "action_reference",
- "doc": {
- "description": "Process payment with context.",
- "long_description": "",
- "tags": [
- {
- "name": "hook",
- "content": "woocommerce_rest_checkout_process_payment_with_context"
- },
- {
- "name": "throws",
- "content": "If there is an error taking payment, an \\Exception object can be thrown with an error message.",
- "types": [
- "\\Exception"
- ]
- },
- {
- "name": "param",
- "content": "Holds context for the payment, including order ID and payment method.",
- "types": [
- "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentContext"
- ],
- "variable": "$context"
- },
- {
- "name": "param",
- "content": "Result object for the transaction.",
- "types": [
- "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentResult"
- ],
- "variable": "$payment_result"
- }
- ],
- "long_description_html": ""
- },
- "args": 1
- },
- {
- "name": "woocommerce_shop_loop",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "action",
- "doc": {
- "description": "Hook: woocommerce_shop_loop.",
- "long_description": "",
- "tags": [],
- "long_description_html": ""
- },
- "args": 0
- },
- {
- "name": "woocommerce_store_api_cart_errors",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "action",
- "doc": {
- "description": "Fires an action to validate the cart.",
- "long_description": "Functions hooking into this should add custom errors using the provided WP_Error instance.",
- "tags": [
- {
- "name": "example",
- "content": "docs/examples/validate-cart.md"
- },
- {
- "name": "param",
- "content": "WP_Error object.",
- "types": [
- "\\WP_Error"
- ],
- "variable": "$errors"
- },
- {
- "name": "param",
- "content": "Cart object.",
- "types": [
- "\\WC_Cart"
- ],
- "variable": "$cart"
- }
- ],
- "long_description_html": "Functions hooking into this should add custom errors using the provided WP_Error instance.
"
- },
- "args": 2
- },
- {
- "name": "woocommerce_store_api_cart_update_customer_from_request",
- "file": "StoreApi/Routes/V1/CartUpdateCustomer.php",
- "type": "action",
- "doc": {
- "description": "Fires when the Checkout Block/Store API updates a customer from the API request data.",
- "long_description": "",
- "tags": [
- {
- "name": "param",
- "content": "Customer object.",
- "types": [
- "\\WC_Customer"
- ],
- "variable": "$customer"
- },
- {
- "name": "param",
- "content": "Full details about the request.",
- "types": [
- "\\WP_REST_Request"
- ],
- "variable": "$request"
- }
- ],
- "long_description_html": ""
- },
- "args": 2
- },
- {
- "name": "woocommerce_store_api_cart_update_order_from_request",
- "file": "StoreApi/Routes/V1/AbstractCartRoute.php",
- "type": "action",
- "doc": {
- "description": "Fires when the order is synced with cart data from a cart route.",
- "long_description": "",
- "tags": [
- {
- "name": "param",
- "content": "Order object.",
- "types": [
- "\\WC_Order"
- ],
- "variable": "$draft_order"
- },
- {
- "name": "param",
- "content": "Customer object.",
- "types": [
- "\\WC_Customer"
- ],
- "variable": "$customer"
- },
- {
- "name": "param",
- "content": "Full details about the request.",
- "types": [
- "\\WP_REST_Request"
- ],
- "variable": "$request"
- }
- ],
- "long_description_html": ""
- },
- "args": 2
- },
- {
- "name": "woocommerce_store_api_checkout_order_processed",
- "file": "StoreApi/Routes/V1/Checkout.php",
- "type": "action",
- "doc": {
- "description": "Fires before an order is processed by the Checkout Block/Store API.",
- "long_description": "This hook informs extensions that $order has completed processing and is ready for payment.\n This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.",
- "tags": [
- {
- "name": "see",
- "content": "",
- "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238"
- },
- {
- "name": "example",
- "content": "docs/examples/checkout-order-processed.md"
- },
- {
- "name": "param",
- "content": "Order object.",
- "types": [
- "\\WC_Order"
- ],
- "variable": "$order"
- }
- ],
- "long_description_html": "This hook informs extensions that $order has completed processing and is ready for payment.
This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action:
To keep the interface focused (only pass $order, not passing request data). This also explicitly indicates these orders are from checkout block/StoreAPI. "
- },
- "args": 1
- },
- {
- "name": "woocommerce_store_api_checkout_update_customer_from_request",
- "file": "StoreApi/Routes/V1/Checkout.php",
- "type": "action",
- "doc": {
- "description": "Fires when the Checkout Block/Store API updates a customer from the API request data.",
- "long_description": "",
- "tags": [
- {
- "name": "param",
- "content": "Customer object.",
- "types": [
- "\\WC_Customer"
- ],
- "variable": "$customer"
- },
- {
- "name": "param",
- "content": "Full details about the request.",
- "types": [
- "\\WP_REST_Request"
- ],
- "variable": "$request"
- }
- ],
- "long_description_html": ""
- },
- "args": 2
- },
- {
- "name": "woocommerce_store_api_checkout_update_order_from_request",
- "file": "StoreApi/Routes/V1/Checkout.php",
- "type": "action",
- "doc": {
- "description": "Fires when the Checkout Block/Store API updates an order's from the API request data.",
- "long_description": "This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.",
- "tags": [
- {
- "name": "param",
- "content": "Order object.",
- "types": [
- "\\WC_Order"
- ],
- "variable": "$order"
- },
- {
- "name": "param",
- "content": "Full details about the request.",
- "types": [
- "\\WP_REST_Request"
- ],
- "variable": "$request"
- }
- ],
- "long_description_html": "This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.
"
- },
- "args": 2
- },
- {
- "name": "woocommerce_store_api_checkout_update_order_meta",
- "file": "StoreApi/Routes/V1/Checkout.php",
- "type": "action",
- "doc": {
- "description": "Fires when the Checkout Block/Store API updates an order's meta data.",
- "long_description": "This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.\n This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.",
- "tags": [
- {
- "name": "see",
- "content": "",
- "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686"
- },
- {
- "name": "param",
- "content": "Order object.",
- "types": [
- "\\WC_Order"
- ],
- "variable": "$order"
- }
- ],
- "long_description_html": "This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.
This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action:
To keep the interface focused (only pass $order, not passing request data). This also explicitly indicates these orders are from checkout block/StoreAPI. "
- },
- "args": 1
- },
- {
- "name": "woocommerce_store_api_validate_add_to_cart",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "action",
- "doc": {
- "description": "Fires during validation when adding an item to the cart via the Store API.",
- "long_description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.",
- "tags": [
- {
- "name": "param",
- "content": "Product object being added to the cart.",
- "types": [
- "\\WC_Product"
- ],
- "variable": "$product"
- },
- {
- "name": "param",
- "content": "Add to cart request params including id, quantity, and variation attributes.",
- "types": [
- "array"
- ],
- "variable": "$request"
- }
- ],
- "long_description_html": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.
"
- },
- "args": 2
- },
- {
- "name": "woocommerce_store_api_validate_cart_item",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "action",
- "doc": {
- "description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from occurring.",
- "long_description": "",
- "tags": [
- {
- "name": "param",
- "content": "Product object being added to the cart.",
- "types": [
- "\\WC_Product"
- ],
- "variable": "$product"
- },
- {
- "name": "param",
- "content": "Cart item array.",
- "types": [
- "array"
- ],
- "variable": "$cart_item"
- }
- ],
- "long_description_html": ""
- },
- "args": 2
- }
- ]
-}
\ No newline at end of file
+ "$schema": "https://raw.githubusercontent.com/wp-hooks/generator/0.9.0/schema.json",
+ "hooks": [
+ {
+ "name": "woocommerce_add_to_cart",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires when an item is added to the cart.",
+ "long_description": "This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches action name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "ID of the item in the cart.",
+ "types": [ "string" ],
+ "variable": "$cart_id"
+ },
+ {
+ "name": "param",
+ "content": "ID of the product added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$product_id"
+ },
+ {
+ "name": "param",
+ "content": "Quantity of the item added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$request_quantity"
+ },
+ {
+ "name": "param",
+ "content": "Variation ID of the product added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$variation_id"
+ },
+ {
+ "name": "param",
+ "content": "Array of variation data.",
+ "types": [ "array" ],
+ "variable": "$variation"
+ },
+ {
+ "name": "param",
+ "content": "Array of other cart item data.",
+ "types": [ "array" ],
+ "variable": "$cart_item_data"
+ }
+ ],
+ "long_description_html": "This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.
"
+ },
+ "args": 6
+ },
+ {
+ "name": "woocommerce_after_main_content",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "action",
+ "doc": {
+ "description": "Hook: woocommerce_after_main_content",
+ "long_description": "Called after rendering the main content for a product.",
+ "tags": [
+ {
+ "name": "see",
+ "content": "Outputs closing DIV for the content (priority 10)",
+ "refers": "woocommerce_output_content_wrapper_end()"
+ }
+ ],
+ "long_description_html": "Called after rendering the main content for a product.
"
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_after_main_content",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "action",
+ "doc": {
+ "description": "Hook: woocommerce_after_main_content",
+ "long_description": "Called after rendering the main content for a product.",
+ "tags": [
+ {
+ "name": "see",
+ "content": "Outputs closing DIV for the content (priority 10)",
+ "refers": "woocommerce_output_content_wrapper_end()"
+ }
+ ],
+ "long_description_html": "Called after rendering the main content for a product.
"
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_after_shop_loop",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "action",
+ "doc": {
+ "description": "Hook: woocommerce_after_shop_loop.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "see",
+ "content": "Renders pagination (priority 10)",
+ "refers": "woocommerce_pagination()"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_applied_coupon",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires after a coupon has been applied to the cart.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches action name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "The coupon code that was applied.",
+ "types": [ "string" ],
+ "variable": "$coupon_code"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_archive_description",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "action",
+ "doc": {
+ "description": "Hook: woocommerce_archive_description.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "see",
+ "content": "Renders the taxonomy archive description (priority 10)",
+ "refers": "woocommerce_taxonomy_archive_description()"
+ },
+ {
+ "name": "see",
+ "content": "Renders the product archive description (priority 10)",
+ "refers": "woocommerce_product_archive_description()"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_before_main_content",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "action",
+ "doc": {
+ "description": "Hook: woocommerce_before_main_content",
+ "long_description": "Called before rendering the main content for a product.",
+ "tags": [
+ {
+ "name": "see",
+ "content": "Outputs opening DIV for the content (priority 10)",
+ "refers": "woocommerce_output_content_wrapper()"
+ },
+ {
+ "name": "see",
+ "content": "Outputs breadcrumb trail to the current product (priority 20)",
+ "refers": "woocommerce_breadcrumb()"
+ },
+ {
+ "name": "see",
+ "content": "Outputs schema markup (priority 30)",
+ "refers": "WC_Structured_Data::generate_website_data()"
+ }
+ ],
+ "long_description_html": "Called before rendering the main content for a product.
"
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_before_main_content",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "action",
+ "doc": {
+ "description": "Hook: woocommerce_before_main_content",
+ "long_description": "Called before rendering the main content for a product.",
+ "tags": [
+ {
+ "name": "see",
+ "content": "Outputs opening DIV for the content (priority 10)",
+ "refers": "woocommerce_output_content_wrapper()"
+ },
+ {
+ "name": "see",
+ "content": "Outputs breadcrumb trail to the current product (priority 20)",
+ "refers": "woocommerce_breadcrumb()"
+ },
+ {
+ "name": "see",
+ "content": "Outputs schema markup (priority 30)",
+ "refers": "WC_Structured_Data::generate_website_data()"
+ }
+ ],
+ "long_description_html": "Called before rendering the main content for a product.
"
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_before_shop_loop",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "action",
+ "doc": {
+ "description": "Hook: woocommerce_before_shop_loop.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "see",
+ "content": "Render error notices (priority 10)",
+ "refers": "woocommerce_output_all_notices()"
+ },
+ {
+ "name": "see",
+ "content": "Show number of results found (priority 20)",
+ "refers": "woocommerce_result_count()"
+ },
+ {
+ "name": "see",
+ "content": "Show form to control sort order (priority 30)",
+ "refers": "woocommerce_catalog_ordering()"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_blocks_cart_enqueue_data",
+ "file": "BlockTypes/Cart.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires after cart block data is registered.",
+ "long_description": "",
+ "tags": [],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_blocks_cart_enqueue_data",
+ "file": "BlockTypes/MiniCart.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires after cart block data is registered.",
+ "long_description": "",
+ "tags": [],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_blocks_checkout_enqueue_data",
+ "file": "BlockTypes/Checkout.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires after checkout block data is registered.",
+ "long_description": "",
+ "tags": [],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_blocks_enqueue_cart_block_scripts_after",
+ "file": "BlockTypes/Cart.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires after cart block scripts are enqueued.",
+ "long_description": "",
+ "tags": [],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_blocks_enqueue_cart_block_scripts_before",
+ "file": "BlockTypes/Cart.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires before cart block scripts are enqueued.",
+ "long_description": "",
+ "tags": [],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_blocks_enqueue_checkout_block_scripts_after",
+ "file": "BlockTypes/Checkout.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires after checkout block scripts are enqueued.",
+ "long_description": "",
+ "tags": [],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_blocks_enqueue_checkout_block_scripts_before",
+ "file": "BlockTypes/Checkout.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires before checkout block scripts are enqueued.",
+ "long_description": "",
+ "tags": [],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_blocks_{$this->registry_identifier}_registration",
+ "file": "Integrations/IntegrationRegistry.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires when the IntegrationRegistry is initialized.",
+ "long_description": "Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.",
+ "tags": [
+ {
+ "name": "param",
+ "content": "Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method.",
+ "types": [
+ "\\Automattic\\WooCommerce\\Blocks\\Integrations\\IntegrationRegistry"
+ ],
+ "variable": "$this"
+ }
+ ],
+ "long_description_html": "Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.
"
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_check_cart_items",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires when cart items are being validated.",
+ "long_description": "Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.",
+ "tags": [
+ {
+ "name": "deprecated",
+ "content": ""
+ },
+ {
+ "name": "internal",
+ "content": "Matches action name in WooCommerce core."
+ }
+ ],
+ "long_description_html": "Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.
"
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_created_customer",
+ "file": "StoreApi/Routes/V1/Checkout.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires after a customer account has been registered.",
+ "long_description": "This hook fires after customer accounts are created and passes the customer data.",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "New customer (user) ID.",
+ "types": [ "integer" ],
+ "variable": "$customer_id"
+ },
+ {
+ "name": "param",
+ "content": "Array of customer (user) data.",
+ "types": [ "array" ],
+ "variable": "$new_customer_data"
+ },
+ {
+ "name": "param",
+ "content": "The generated password for the account.",
+ "types": [ "string" ],
+ "variable": "$password_generated"
+ }
+ ],
+ "long_description_html": "This hook fires after customer accounts are created and passes the customer data.
"
+ },
+ "args": 3
+ },
+ {
+ "name": "woocommerce_no_products_found",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "action",
+ "doc": {
+ "description": "Hook: woocommerce_no_products_found.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "see",
+ "content": "Default no products found content (priority 10)",
+ "refers": "wc_no_products_found()"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_register_post",
+ "file": "StoreApi/Routes/V1/Checkout.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires before a customer account is registered.",
+ "long_description": "This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.\n This could be used to add extra validation logic and append errors to the array.",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Customer username.",
+ "types": [ "string" ],
+ "variable": "$username"
+ },
+ {
+ "name": "param",
+ "content": "Customer email address.",
+ "types": [ "string" ],
+ "variable": "$user_email"
+ },
+ {
+ "name": "param",
+ "content": "Error object.",
+ "types": [ "\\WP_Error" ],
+ "variable": "$errors"
+ }
+ ],
+ "long_description_html": "This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.
This could be used to add extra validation logic and append errors to the array.
"
+ },
+ "args": 3
+ },
+ {
+ "name": "woocommerce_rest_checkout_process_payment_with_context",
+ "file": "StoreApi/Routes/V1/Checkout.php",
+ "type": "action_reference",
+ "doc": {
+ "description": "Process payment with context.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "hook",
+ "content": "woocommerce_rest_checkout_process_payment_with_context"
+ },
+ {
+ "name": "throws",
+ "content": "If there is an error taking payment, an \\Exception object can be thrown with an error message.",
+ "types": [ "\\Exception" ]
+ },
+ {
+ "name": "param",
+ "content": "Holds context for the payment, including order ID and payment method.",
+ "types": [
+ "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentContext"
+ ],
+ "variable": "$context"
+ },
+ {
+ "name": "param",
+ "content": "Result object for the transaction.",
+ "types": [
+ "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentResult"
+ ],
+ "variable": "$payment_result"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_shop_loop",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "action",
+ "doc": {
+ "description": "Hook: woocommerce_shop_loop.",
+ "long_description": "",
+ "tags": [],
+ "long_description_html": ""
+ },
+ "args": 0
+ },
+ {
+ "name": "woocommerce_store_api_cart_errors",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires an action to validate the cart.",
+ "long_description": "Functions hooking into this should add custom errors using the provided WP_Error instance.",
+ "tags": [
+ {
+ "name": "example",
+ "content": "docs/examples/validate-cart.md"
+ },
+ {
+ "name": "param",
+ "content": "WP_Error object.",
+ "types": [ "\\WP_Error" ],
+ "variable": "$errors"
+ },
+ {
+ "name": "param",
+ "content": "Cart object.",
+ "types": [ "\\WC_Cart" ],
+ "variable": "$cart"
+ }
+ ],
+ "long_description_html": "Functions hooking into this should add custom errors using the provided WP_Error instance.
"
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_store_api_cart_update_customer_from_request",
+ "file": "StoreApi/Routes/V1/CartUpdateCustomer.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires when the Checkout Block/Store API updates a customer from the API request data.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "param",
+ "content": "Customer object.",
+ "types": [ "\\WC_Customer" ],
+ "variable": "$customer"
+ },
+ {
+ "name": "param",
+ "content": "Full details about the request.",
+ "types": [ "\\WP_REST_Request" ],
+ "variable": "$request"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_store_api_cart_update_order_from_request",
+ "file": "StoreApi/Routes/V1/AbstractCartRoute.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires when the order is synced with cart data from a cart route.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "param",
+ "content": "Order object.",
+ "types": [ "\\WC_Order" ],
+ "variable": "$draft_order"
+ },
+ {
+ "name": "param",
+ "content": "Customer object.",
+ "types": [ "\\WC_Customer" ],
+ "variable": "$customer"
+ },
+ {
+ "name": "param",
+ "content": "Full details about the request.",
+ "types": [ "\\WP_REST_Request" ],
+ "variable": "$request"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_store_api_checkout_order_processed",
+ "file": "StoreApi/Routes/V1/Checkout.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires before an order is processed by the Checkout Block/Store API.",
+ "long_description": "This hook informs extensions that $order has completed processing and is ready for payment.\n This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.",
+ "tags": [
+ {
+ "name": "see",
+ "content": "",
+ "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238"
+ },
+ {
+ "name": "example",
+ "content": "docs/examples/checkout-order-processed.md"
+ },
+ {
+ "name": "param",
+ "content": "Order object.",
+ "types": [ "\\WC_Order" ],
+ "variable": "$order"
+ }
+ ],
+ "long_description_html": "This hook informs extensions that $order has completed processing and is ready for payment.
This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action:
To keep the interface focused (only pass $order, not passing request data). This also explicitly indicates these orders are from checkout block/StoreAPI. "
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_store_api_checkout_update_customer_from_request",
+ "file": "StoreApi/Routes/V1/Checkout.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires when the Checkout Block/Store API updates a customer from the API request data.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "param",
+ "content": "Customer object.",
+ "types": [ "\\WC_Customer" ],
+ "variable": "$customer"
+ },
+ {
+ "name": "param",
+ "content": "Full details about the request.",
+ "types": [ "\\WP_REST_Request" ],
+ "variable": "$request"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_store_api_checkout_update_order_from_request",
+ "file": "StoreApi/Routes/V1/Checkout.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires when the Checkout Block/Store API updates an order's from the API request data.",
+ "long_description": "This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.",
+ "tags": [
+ {
+ "name": "param",
+ "content": "Order object.",
+ "types": [ "\\WC_Order" ],
+ "variable": "$order"
+ },
+ {
+ "name": "param",
+ "content": "Full details about the request.",
+ "types": [ "\\WP_REST_Request" ],
+ "variable": "$request"
+ }
+ ],
+ "long_description_html": "This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.
"
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_store_api_checkout_update_order_meta",
+ "file": "StoreApi/Routes/V1/Checkout.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires when the Checkout Block/Store API updates an order's meta data.",
+ "long_description": "This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.\n This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.",
+ "tags": [
+ {
+ "name": "see",
+ "content": "",
+ "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686"
+ },
+ {
+ "name": "param",
+ "content": "Order object.",
+ "types": [ "\\WC_Order" ],
+ "variable": "$order"
+ }
+ ],
+ "long_description_html": "This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.
This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action:
To keep the interface focused (only pass $order, not passing request data). This also explicitly indicates these orders are from checkout block/StoreAPI. "
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_store_api_validate_add_to_cart",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "action",
+ "doc": {
+ "description": "Fires during validation when adding an item to the cart via the Store API.",
+ "long_description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.",
+ "tags": [
+ {
+ "name": "param",
+ "content": "Product object being added to the cart.",
+ "types": [ "\\WC_Product" ],
+ "variable": "$product"
+ },
+ {
+ "name": "param",
+ "content": "Add to cart request params including id, quantity, and variation attributes.",
+ "types": [ "array" ],
+ "variable": "$request"
+ }
+ ],
+ "long_description_html": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.
"
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_store_api_validate_cart_item",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "action",
+ "doc": {
+ "description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from occurring.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "param",
+ "content": "Product object being added to the cart.",
+ "types": [ "\\WC_Product" ],
+ "variable": "$product"
+ },
+ {
+ "name": "param",
+ "content": "Cart item array.",
+ "types": [ "array" ],
+ "variable": "$cart_item"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 2
+ }
+ ]
+}
diff --git a/bin/hook-docs/data/filters.json b/bin/hook-docs/data/filters.json
index 5b7991c02..786a644fd 100644
--- a/bin/hook-docs/data/filters.json
+++ b/bin/hook-docs/data/filters.json
@@ -1,1011 +1,842 @@
{
- "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.0/schema.json",
- "hooks": [
- {
- "name": "__experimental_woocommerce_blocks_add_data_attributes_to_block",
- "file": "BlockTypesController.php",
- "type": "filter",
- "doc": {
- "description": "Filters the list of allowed Block Names",
- "long_description": "This hook defines which block names should have block name and attribute data- attributes appended on render.",
- "tags": [
- {
- "name": "param",
- "content": "List of namespaces.",
- "types": [
- "array"
- ],
- "variable": "$allowed_namespaces"
- }
- ],
- "long_description_html": "This hook defines which block names should have block name and attribute data- attributes appended on render.
"
- },
- "args": 1
- },
- {
- "name": "__experimental_woocommerce_blocks_add_data_attributes_to_namespace",
- "file": "BlockTypesController.php",
- "type": "filter",
- "doc": {
- "description": "Filters the list of allowed block namespaces.",
- "long_description": "This hook defines which block namespaces should have block name and attribute `data-` attributes appended on render.",
- "tags": [
- {
- "name": "param",
- "content": "List of namespaces.",
- "types": [
- "array"
- ],
- "variable": "$allowed_namespaces"
- }
- ],
- "long_description_html": "This hook defines which block namespaces should have block name and attribute data-
attributes appended on render.
"
- },
- "args": 1
- },
- {
- "name": "__experimental_woocommerce_blocks_payment_gateway_features_list",
- "file": "Payments/Integrations/PayPal.php",
- "type": "filter",
- "doc": {
- "description": "Filter to control what features are available for each payment gateway.",
- "long_description": "",
- "tags": [
- {
- "name": "example",
- "content": "docs/examples/payment-gateways-features-list.md"
- },
- {
- "name": "param",
- "content": "List of supported features.",
- "types": [
- "array"
- ],
- "variable": "$features"
- },
- {
- "name": "param",
- "content": "Gateway name.",
- "types": [
- "string"
- ],
- "variable": "$name"
- },
- {
- "name": "return",
- "content": "Updated list of supported features.",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 2
- },
- {
- "name": "woocommerce_add_cart_item",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "filter",
- "doc": {
- "description": "Filters the item being added to the cart.",
- "long_description": "",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Array of cart item data being added to the cart.",
- "types": [
- "array"
- ],
- "variable": "$cart_item_data"
- },
- {
- "name": "param",
- "content": "Id of the item in the cart.",
- "types": [
- "string"
- ],
- "variable": "$cart_id"
- },
- {
- "name": "return",
- "content": "Updated cart item data.",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 2
- },
- {
- "name": "woocommerce_add_cart_item_data",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "filter",
- "doc": {
- "description": "Filter cart item data for add to cart requests.",
- "long_description": "",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Array of other cart item data.",
- "types": [
- "array"
- ],
- "variable": "$cart_item_data"
- },
- {
- "name": "param",
- "content": "ID of the product added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$product_id"
- },
- {
- "name": "param",
- "content": "Variation ID of the product added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$variation_id"
- },
- {
- "name": "param",
- "content": "Quantity of the item added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$quantity"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 4
- },
- {
- "name": "woocommerce_add_to_cart_sold_individually_quantity",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "filter",
- "doc": {
- "description": "Filter sold individually quantity for add to cart requests.",
- "long_description": "",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Defaults to 1.",
- "types": [
- "integer"
- ],
- "variable": "$sold_individually_quantity"
- },
- {
- "name": "param",
- "content": "Quantity of the item added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$quantity"
- },
- {
- "name": "param",
- "content": "ID of the product added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$product_id"
- },
- {
- "name": "param",
- "content": "Variation ID of the product added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$variation_id"
- },
- {
- "name": "param",
- "content": "Array of other cart item data.",
- "types": [
- "array"
- ],
- "variable": "$cart_item_data"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "integer"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 5
- },
- {
- "name": "woocommerce_add_to_cart_validation",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "filter",
- "doc": {
- "description": "Filters if an item being added to the cart passed validation checks.",
- "long_description": "Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.",
- "tags": [
- {
- "name": "deprecated",
- "content": ""
- },
- {
- "name": "param",
- "content": "True if the item passed validation.",
- "types": [
- "boolean"
- ],
- "variable": "$passed_validation"
- },
- {
- "name": "param",
- "content": "Product ID being validated.",
- "types": [
- "integer"
- ],
- "variable": "$product_id"
- },
- {
- "name": "param",
- "content": "Quantity added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$quantity"
- },
- {
- "name": "param",
- "content": "Variation ID being added to the cart.",
- "types": [
- "integer"
- ],
- "variable": "$variation_id"
- },
- {
- "name": "param",
- "content": "Variation data.",
- "types": [
- "array"
- ],
- "variable": "$variation"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "boolean"
- ]
- }
- ],
- "long_description_html": "Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.
"
- },
- "args": 5
- },
- {
- "name": "woocommerce_adjust_non_base_location_prices",
- "file": "StoreApi/Utilities/ProductQuery.php",
- "type": "filter",
- "doc": {
- "description": "Filters if taxes should be removed from locations outside the store base location.",
- "long_description": "The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "True by default.",
- "types": [
- "boolean"
- ],
- "variable": "$adjust_non_base_location_prices"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "boolean"
- ]
- }
- ],
- "long_description_html": "The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.
"
- },
- "args": 1
- },
- {
- "name": "woocommerce_admin_disabled",
- "file": "InboxNotifications.php",
- "type": "filter",
- "doc": {
- "description": "",
- "long_description": "",
- "tags": [],
- "long_description_html": ""
- },
- "args": 1
- },
- {
- "name": "woocommerce_apply_individual_use_coupon",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "filter",
- "doc": {
- "description": "Filter coupons to remove when applying an individual use coupon.",
- "long_description": "",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Array of coupons to remove from the cart.",
- "types": [
- "array"
- ],
- "variable": "$coupons"
- },
- {
- "name": "param",
- "content": "Coupon object applied to the cart.",
- "types": [
- "\\WC_Coupon"
- ],
- "variable": "$coupon"
- },
- {
- "name": "param",
- "content": "Array of applied coupons already applied to the cart.",
- "types": [
- "array"
- ],
- "variable": "$applied_coupons"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 3
- },
- {
- "name": "woocommerce_apply_with_individual_use_coupon",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "filter",
- "doc": {
- "description": "Filters if a coupon can be applied alongside other individual use coupons.",
- "long_description": "",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Defaults to false.",
- "types": [
- "boolean"
- ],
- "variable": "$apply_with_individual_use_coupon"
- },
- {
- "name": "param",
- "content": "Coupon object applied to the cart.",
- "types": [
- "\\WC_Coupon"
- ],
- "variable": "$coupon"
- },
- {
- "name": "param",
- "content": "Individual use coupon already applied to the cart.",
- "types": [
- "\\WC_Coupon"
- ],
- "variable": "$individual_use_coupon"
- },
- {
- "name": "param",
- "content": "Array of applied coupons already applied to the cart.",
- "types": [
- "array"
- ],
- "variable": "$applied_coupons"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "boolean"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 4
- },
- {
- "name": "woocommerce_blocks_product_grid_is_cacheable",
- "file": "BlockTypes/AbstractProductGrid.php",
- "type": "filter",
- "doc": {
- "description": "Filters whether or not the product grid is cacheable.",
- "long_description": "",
- "tags": [
- {
- "name": "param",
- "content": "The list of script dependencies.",
- "types": [
- "boolean"
- ],
- "variable": "$is_cacheable"
- },
- {
- "name": "param",
- "content": "Query args for the products query passed to BlocksWpQuery.",
- "types": [
- "array"
- ],
- "variable": "$query_args"
- },
- {
- "name": "return",
- "content": "True to enable cache, false to disable cache.",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 2
- },
- {
- "name": "woocommerce_blocks_product_grid_item_html",
- "file": "BlockTypes/AbstractProductGrid.php",
- "type": "filter",
- "doc": {
- "description": "Filters the HTML for products in the grid.",
- "long_description": "",
- "tags": [
- {
- "name": "param",
- "content": "Product grid item HTML.",
- "types": [
- "string"
- ],
- "variable": "$html"
- },
- {
- "name": "param",
- "content": "Product data passed to the template.",
- "types": [
- "array"
- ],
- "variable": "$data"
- },
- {
- "name": "param",
- "content": "Product object.",
- "types": [
- "\\WC_Product"
- ],
- "variable": "$product"
- },
- {
- "name": "return",
- "content": "Updated product grid item HTML.",
- "types": [
- "string"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 3
- },
- {
- "name": "woocommerce_blocks_register_script_dependencies",
- "file": "Assets/Api.php",
- "type": "filter",
- "doc": {
- "description": "Filters the list of script dependencies.",
- "long_description": "",
- "tags": [
- {
- "name": "param",
- "content": "The list of script dependencies.",
- "types": [
- "array"
- ],
- "variable": "$dependencies"
- },
- {
- "name": "param",
- "content": "The script's handle.",
- "types": [
- "string"
- ],
- "variable": "$handle"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 2
- },
- {
- "name": "woocommerce_cart_contents_changed",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "filter",
- "doc": {
- "description": "Filters the entire cart contents when the cart changes.",
- "long_description": "",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Array of all cart items.",
- "types": [
- "array"
- ],
- "variable": "$cart_contents"
- },
- {
- "name": "return",
- "content": "Updated array of all cart items.",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 1
- },
- {
- "name": "woocommerce_ga_disable_tracking",
- "file": "Domain/Services/GoogleAnalytics.php",
- "type": "filter",
- "doc": {
- "description": "Filter to disable Google Analytics tracking.",
- "long_description": "",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in GA extension."
- },
- {
- "name": "param",
- "content": "If true, tracking will be disabled.",
- "types": [
- "boolean"
- ],
- "variable": "$disable_tracking"
- }
- ],
- "long_description_html": ""
- },
- "args": 1
- },
- {
- "name": "woocommerce_get_item_data",
- "file": "StoreApi/Schemas/V1/CartItemSchema.php",
- "type": "filter",
- "doc": {
- "description": "Filters cart item data.",
- "long_description": "Filters the variation option name for custom option slugs.",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Cart item data. Empty by default.",
- "types": [
- "array"
- ],
- "variable": "$item_data"
- },
- {
- "name": "param",
- "content": "Cart item array.",
- "types": [
- "array"
- ],
- "variable": "$cart_item"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": "Filters the variation option name for custom option slugs.
"
- },
- "args": 2
- },
- {
- "name": "woocommerce_new_customer_data",
- "file": "StoreApi/Routes/V1/Checkout.php",
- "type": "filter",
- "doc": {
- "description": "Filters customer data before a customer account is registered.",
- "long_description": "This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.",
- "tags": [
- {
- "name": "param",
- "content": "An array of customer (user) data.",
- "types": [
- "array"
- ],
- "variable": "$customer_data"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": "This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.
"
- },
- "args": 1
- },
- {
- "name": "woocommerce_registration_errors",
- "file": "StoreApi/Routes/V1/Checkout.php",
- "type": "filter",
- "doc": {
- "description": "Filters registration errors before a customer account is registered.",
- "long_description": "This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Error object.",
- "types": [
- "\\WP_Error"
- ],
- "variable": "$errors"
- },
- {
- "name": "param",
- "content": "Customer username.",
- "types": [
- "string"
- ],
- "variable": "$username"
- },
- {
- "name": "param",
- "content": "Customer email address.",
- "types": [
- "string"
- ],
- "variable": "$user_email"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "\\WP_Error"
- ]
- }
- ],
- "long_description_html": "This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.
"
- },
- "args": 3
- },
- {
- "name": "woocommerce_shared_settings",
- "file": "Assets/AssetDataRegistry.php",
- "type": "filter",
- "doc": {
- "description": "Filters the array of shared settings.",
- "long_description": "Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:\n ```php Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value ) ```",
- "tags": [
- {
- "name": "deprecated",
- "content": ""
- },
- {
- "name": "param",
- "content": "Settings data.",
- "types": [
- "array"
- ],
- "variable": "$data"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "array"
- ]
- }
- ],
- "long_description_html": "Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:
Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value )
"
- },
- "args": 1
- },
- {
- "name": "woocommerce_shipping_package_name",
- "file": "StoreApi/Utilities/CartController.php",
- "type": "filter",
- "doc": {
- "description": "Filters the shipping package name.",
- "long_description": "",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "Shipping package name.",
- "types": [
- "string"
- ],
- "variable": "$shipping_package_name"
- },
- {
- "name": "param",
- "content": "Shipping package ID.",
- "types": [
- "string"
- ],
- "variable": "$package_id"
- },
- {
- "name": "param",
- "content": "Shipping package from WooCommerce.",
- "types": [
- "array"
- ],
- "variable": "$package"
- },
- {
- "name": "return",
- "content": "Shipping package name.",
- "types": [
- "string"
- ]
- }
- ],
- "long_description_html": ""
- },
- "args": 3
- },
- {
- "name": "woocommerce_show_page_title",
- "file": "BlockTypes/ClassicTemplate.php",
- "type": "filter",
- "doc": {
- "description": "We need to load the scripts here because when using block templates wp_head() gets run after the block template. As a result we are trying to enqueue required scripts before we have even registered them.",
- "long_description": "",
- "tags": [
- {
- "name": "see",
- "content": "",
- "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5328#issuecomment-989013447"
- }
- ],
- "long_description_html": ""
- },
- "args": 1
- },
- {
- "name": "woocommerce_store_api_disable_nonce_check",
- "file": "StoreApi/Routes/V1/AbstractCartRoute.php",
- "type": "filter",
- "doc": {
- "description": "Filters the Store API nonce check.",
- "long_description": "This can be used to disable the nonce check when testing API endpoints via a REST API client.",
- "tags": [
- {
- "name": "param",
- "content": "If true, nonce checks will be disabled.",
- "types": [
- "boolean"
- ],
- "variable": "$disable_nonce_check"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "boolean"
- ]
- }
- ],
- "long_description_html": "This can be used to disable the nonce check when testing API endpoints via a REST API client.
"
- },
- "args": 1
- },
- {
- "name": "woocommerce_store_api_product_quantity_limit",
- "file": "StoreApi/Utilities/QuantityLimits.php",
- "type": "filter",
- "doc": {
- "description": "Filters the quantity limit for a product being added to the cart via the Store API.",
- "long_description": "Filters the variation option name for custom option slugs.",
- "tags": [
- {
- "name": "param",
- "content": "Quantity limit which defaults to 9999 unless sold individually.",
- "types": [
- "integer"
- ],
- "variable": "$quantity_limit"
- },
- {
- "name": "param",
- "content": "Product instance.",
- "types": [
- "\\WC_Product"
- ],
- "variable": "$product"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "integer"
- ]
- }
- ],
- "long_description_html": "Filters the variation option name for custom option slugs.
"
- },
- "args": 2
- },
- {
- "name": "woocommerce_store_api_product_quantity_{$value_type}",
- "file": "StoreApi/Utilities/QuantityLimits.php",
- "type": "filter",
- "doc": {
- "description": "Filters the quantity minimum for a cart item in Store API. This allows extensions to control the minimum qty of items already within the cart.",
- "long_description": "The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.",
- "tags": [
- {
- "name": "param",
- "content": "The value being filtered.",
- "types": [
- "mixed"
- ],
- "variable": "$value"
- },
- {
- "name": "param",
- "content": "The product object.",
- "types": [
- "\\WC_Product"
- ],
- "variable": "$product"
- },
- {
- "name": "param",
- "content": "The cart item if the product exists in the cart, or null.",
- "types": [
- "array",
- "null"
- ],
- "variable": "$cart_item"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "mixed"
- ]
- }
- ],
- "long_description_html": "The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.
"
- },
- "args": 3
- },
- {
- "name": "woocommerce_variation_option_name",
- "file": "StoreApi/Schemas/V1/CartItemSchema.php",
- "type": "filter",
- "doc": {
- "description": "Filters the variation option name.",
- "long_description": "Filters the variation option name for custom option slugs.",
- "tags": [
- {
- "name": "internal",
- "content": "Matches filter name in WooCommerce core."
- },
- {
- "name": "param",
- "content": "The name to display.",
- "types": [
- "string"
- ],
- "variable": "$value"
- },
- {
- "name": "param",
- "content": "Unused because this is not a variation taxonomy.",
- "types": [
- "null"
- ],
- "variable": "$unused"
- },
- {
- "name": "param",
- "content": "Taxonomy or product attribute name.",
- "types": [
- "string"
- ],
- "variable": "$taxonomy"
- },
- {
- "name": "param",
- "content": "Product data.",
- "types": [
- "\\WC_Product"
- ],
- "variable": "$product"
- },
- {
- "name": "return",
- "content": "",
- "types": [
- "string"
- ]
- }
- ],
- "long_description_html": "Filters the variation option name for custom option slugs.
"
- },
- "args": 4
- }
- ]
-}
\ No newline at end of file
+ "$schema": "https://raw.githubusercontent.com/wp-hooks/generator/0.9.0/schema.json",
+ "hooks": [
+ {
+ "name": "__experimental_woocommerce_blocks_add_data_attributes_to_block",
+ "file": "BlockTypesController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the list of allowed Block Names",
+ "long_description": "This hook defines which block names should have block name and attribute data- attributes appended on render.",
+ "tags": [
+ {
+ "name": "param",
+ "content": "List of namespaces.",
+ "types": [ "array" ],
+ "variable": "$allowed_namespaces"
+ }
+ ],
+ "long_description_html": "This hook defines which block names should have block name and attribute data- attributes appended on render.
"
+ },
+ "args": 1
+ },
+ {
+ "name": "__experimental_woocommerce_blocks_add_data_attributes_to_namespace",
+ "file": "BlockTypesController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the list of allowed block namespaces.",
+ "long_description": "This hook defines which block namespaces should have block name and attribute `data-` attributes appended on render.",
+ "tags": [
+ {
+ "name": "param",
+ "content": "List of namespaces.",
+ "types": [ "array" ],
+ "variable": "$allowed_namespaces"
+ }
+ ],
+ "long_description_html": "This hook defines which block namespaces should have block name and attribute data-
attributes appended on render.
"
+ },
+ "args": 1
+ },
+ {
+ "name": "__experimental_woocommerce_blocks_payment_gateway_features_list",
+ "file": "Payments/Integrations/PayPal.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filter to control what features are available for each payment gateway.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "example",
+ "content": "docs/examples/payment-gateways-features-list.md"
+ },
+ {
+ "name": "param",
+ "content": "List of supported features.",
+ "types": [ "array" ],
+ "variable": "$features"
+ },
+ {
+ "name": "param",
+ "content": "Gateway name.",
+ "types": [ "string" ],
+ "variable": "$name"
+ },
+ {
+ "name": "return",
+ "content": "Updated list of supported features.",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_add_cart_item",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the item being added to the cart.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Array of cart item data being added to the cart.",
+ "types": [ "array" ],
+ "variable": "$cart_item_data"
+ },
+ {
+ "name": "param",
+ "content": "Id of the item in the cart.",
+ "types": [ "string" ],
+ "variable": "$cart_id"
+ },
+ {
+ "name": "return",
+ "content": "Updated cart item data.",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_add_cart_item_data",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filter cart item data for add to cart requests.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Array of other cart item data.",
+ "types": [ "array" ],
+ "variable": "$cart_item_data"
+ },
+ {
+ "name": "param",
+ "content": "ID of the product added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$product_id"
+ },
+ {
+ "name": "param",
+ "content": "Variation ID of the product added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$variation_id"
+ },
+ {
+ "name": "param",
+ "content": "Quantity of the item added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$quantity"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 4
+ },
+ {
+ "name": "woocommerce_add_to_cart_sold_individually_quantity",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filter sold individually quantity for add to cart requests.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Defaults to 1.",
+ "types": [ "integer" ],
+ "variable": "$sold_individually_quantity"
+ },
+ {
+ "name": "param",
+ "content": "Quantity of the item added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$quantity"
+ },
+ {
+ "name": "param",
+ "content": "ID of the product added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$product_id"
+ },
+ {
+ "name": "param",
+ "content": "Variation ID of the product added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$variation_id"
+ },
+ {
+ "name": "param",
+ "content": "Array of other cart item data.",
+ "types": [ "array" ],
+ "variable": "$cart_item_data"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "integer" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 5
+ },
+ {
+ "name": "woocommerce_add_to_cart_validation",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters if an item being added to the cart passed validation checks.",
+ "long_description": "Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.",
+ "tags": [
+ {
+ "name": "deprecated",
+ "content": ""
+ },
+ {
+ "name": "param",
+ "content": "True if the item passed validation.",
+ "types": [ "boolean" ],
+ "variable": "$passed_validation"
+ },
+ {
+ "name": "param",
+ "content": "Product ID being validated.",
+ "types": [ "integer" ],
+ "variable": "$product_id"
+ },
+ {
+ "name": "param",
+ "content": "Quantity added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$quantity"
+ },
+ {
+ "name": "param",
+ "content": "Variation ID being added to the cart.",
+ "types": [ "integer" ],
+ "variable": "$variation_id"
+ },
+ {
+ "name": "param",
+ "content": "Variation data.",
+ "types": [ "array" ],
+ "variable": "$variation"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "boolean" ]
+ }
+ ],
+ "long_description_html": "Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.
"
+ },
+ "args": 5
+ },
+ {
+ "name": "woocommerce_adjust_non_base_location_prices",
+ "file": "StoreApi/Utilities/ProductQuery.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters if taxes should be removed from locations outside the store base location.",
+ "long_description": "The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "True by default.",
+ "types": [ "boolean" ],
+ "variable": "$adjust_non_base_location_prices"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "boolean" ]
+ }
+ ],
+ "long_description_html": "The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.
"
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_apply_individual_use_coupon",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filter coupons to remove when applying an individual use coupon.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Array of coupons to remove from the cart.",
+ "types": [ "array" ],
+ "variable": "$coupons"
+ },
+ {
+ "name": "param",
+ "content": "Coupon object applied to the cart.",
+ "types": [ "\\WC_Coupon" ],
+ "variable": "$coupon"
+ },
+ {
+ "name": "param",
+ "content": "Array of applied coupons already applied to the cart.",
+ "types": [ "array" ],
+ "variable": "$applied_coupons"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 3
+ },
+ {
+ "name": "woocommerce_apply_with_individual_use_coupon",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters if a coupon can be applied alongside other individual use coupons.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Defaults to false.",
+ "types": [ "boolean" ],
+ "variable": "$apply_with_individual_use_coupon"
+ },
+ {
+ "name": "param",
+ "content": "Coupon object applied to the cart.",
+ "types": [ "\\WC_Coupon" ],
+ "variable": "$coupon"
+ },
+ {
+ "name": "param",
+ "content": "Individual use coupon already applied to the cart.",
+ "types": [ "\\WC_Coupon" ],
+ "variable": "$individual_use_coupon"
+ },
+ {
+ "name": "param",
+ "content": "Array of applied coupons already applied to the cart.",
+ "types": [ "array" ],
+ "variable": "$applied_coupons"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "boolean" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 4
+ },
+ {
+ "name": "woocommerce_blocks_product_grid_is_cacheable",
+ "file": "BlockTypes/AbstractProductGrid.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters whether or not the product grid is cacheable.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "param",
+ "content": "The list of script dependencies.",
+ "types": [ "boolean" ],
+ "variable": "$is_cacheable"
+ },
+ {
+ "name": "param",
+ "content": "Query args for the products query passed to BlocksWpQuery.",
+ "types": [ "array" ],
+ "variable": "$query_args"
+ },
+ {
+ "name": "return",
+ "content": "True to enable cache, false to disable cache.",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_blocks_product_grid_item_html",
+ "file": "BlockTypes/AbstractProductGrid.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the HTML for products in the grid.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "param",
+ "content": "Product grid item HTML.",
+ "types": [ "string" ],
+ "variable": "$html"
+ },
+ {
+ "name": "param",
+ "content": "Product data passed to the template.",
+ "types": [ "array" ],
+ "variable": "$data"
+ },
+ {
+ "name": "param",
+ "content": "Product object.",
+ "types": [ "\\WC_Product" ],
+ "variable": "$product"
+ },
+ {
+ "name": "return",
+ "content": "Updated product grid item HTML.",
+ "types": [ "string" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 3
+ },
+ {
+ "name": "woocommerce_blocks_register_script_dependencies",
+ "file": "Assets/Api.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the list of script dependencies.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "param",
+ "content": "The list of script dependencies.",
+ "types": [ "array" ],
+ "variable": "$dependencies"
+ },
+ {
+ "name": "param",
+ "content": "The script's handle.",
+ "types": [ "string" ],
+ "variable": "$handle"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_cart_contents_changed",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the entire cart contents when the cart changes.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Array of all cart items.",
+ "types": [ "array" ],
+ "variable": "$cart_contents"
+ },
+ {
+ "name": "return",
+ "content": "Updated array of all cart items.",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_ga_disable_tracking",
+ "file": "Domain/Services/GoogleAnalytics.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filter to disable Google Analytics tracking.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in GA extension."
+ },
+ {
+ "name": "param",
+ "content": "If true, tracking will be disabled.",
+ "types": [ "boolean" ],
+ "variable": "$disable_tracking"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_get_item_data",
+ "file": "StoreApi/Schemas/V1/CartItemSchema.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters cart item data.",
+ "long_description": "Filters the variation option name for custom option slugs.",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Cart item data. Empty by default.",
+ "types": [ "array" ],
+ "variable": "$item_data"
+ },
+ {
+ "name": "param",
+ "content": "Cart item array.",
+ "types": [ "array" ],
+ "variable": "$cart_item"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": "Filters the variation option name for custom option slugs.
"
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_new_customer_data",
+ "file": "StoreApi/Routes/V1/Checkout.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters customer data before a customer account is registered.",
+ "long_description": "This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.",
+ "tags": [
+ {
+ "name": "param",
+ "content": "An array of customer (user) data.",
+ "types": [ "array" ],
+ "variable": "$customer_data"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": "This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.
"
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_registration_errors",
+ "file": "StoreApi/Routes/V1/Checkout.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters registration errors before a customer account is registered.",
+ "long_description": "This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Error object.",
+ "types": [ "\\WP_Error" ],
+ "variable": "$errors"
+ },
+ {
+ "name": "param",
+ "content": "Customer username.",
+ "types": [ "string" ],
+ "variable": "$username"
+ },
+ {
+ "name": "param",
+ "content": "Customer email address.",
+ "types": [ "string" ],
+ "variable": "$user_email"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "\\WP_Error" ]
+ }
+ ],
+ "long_description_html": "This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.
"
+ },
+ "args": 3
+ },
+ {
+ "name": "woocommerce_shared_settings",
+ "file": "Assets/AssetDataRegistry.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the array of shared settings.",
+ "long_description": "Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:\n ```php Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value ) ```",
+ "tags": [
+ {
+ "name": "deprecated",
+ "content": ""
+ },
+ {
+ "name": "param",
+ "content": "Settings data.",
+ "types": [ "array" ],
+ "variable": "$data"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "array" ]
+ }
+ ],
+ "long_description_html": "Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:
Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value )
"
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_shipping_package_name",
+ "file": "StoreApi/Utilities/CartController.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the shipping package name.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "Shipping package name.",
+ "types": [ "string" ],
+ "variable": "$shipping_package_name"
+ },
+ {
+ "name": "param",
+ "content": "Shipping package ID.",
+ "types": [ "string" ],
+ "variable": "$package_id"
+ },
+ {
+ "name": "param",
+ "content": "Shipping package from WooCommerce.",
+ "types": [ "array" ],
+ "variable": "$package"
+ },
+ {
+ "name": "return",
+ "content": "Shipping package name.",
+ "types": [ "string" ]
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 3
+ },
+ {
+ "name": "woocommerce_show_page_title",
+ "file": "BlockTypes/ClassicTemplate.php",
+ "type": "filter",
+ "doc": {
+ "description": "We need to load the scripts here because when using block templates wp_head() gets run after the block template. As a result we are trying to enqueue required scripts before we have even registered them.",
+ "long_description": "",
+ "tags": [
+ {
+ "name": "see",
+ "content": "",
+ "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5328#issuecomment-989013447"
+ }
+ ],
+ "long_description_html": ""
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_store_api_disable_nonce_check",
+ "file": "StoreApi/Routes/V1/AbstractCartRoute.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the Store API nonce check.",
+ "long_description": "This can be used to disable the nonce check when testing API endpoints via a REST API client.",
+ "tags": [
+ {
+ "name": "param",
+ "content": "If true, nonce checks will be disabled.",
+ "types": [ "boolean" ],
+ "variable": "$disable_nonce_check"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "boolean" ]
+ }
+ ],
+ "long_description_html": "This can be used to disable the nonce check when testing API endpoints via a REST API client.
"
+ },
+ "args": 1
+ },
+ {
+ "name": "woocommerce_store_api_product_quantity_limit",
+ "file": "StoreApi/Utilities/QuantityLimits.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the quantity limit for a product being added to the cart via the Store API.",
+ "long_description": "Filters the variation option name for custom option slugs.",
+ "tags": [
+ {
+ "name": "param",
+ "content": "Quantity limit which defaults to 9999 unless sold individually.",
+ "types": [ "integer" ],
+ "variable": "$quantity_limit"
+ },
+ {
+ "name": "param",
+ "content": "Product instance.",
+ "types": [ "\\WC_Product" ],
+ "variable": "$product"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "integer" ]
+ }
+ ],
+ "long_description_html": "Filters the variation option name for custom option slugs.
"
+ },
+ "args": 2
+ },
+ {
+ "name": "woocommerce_store_api_product_quantity_{$value_type}",
+ "file": "StoreApi/Utilities/QuantityLimits.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the quantity minimum for a cart item in Store API. This allows extensions to control the minimum qty of items already within the cart.",
+ "long_description": "The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.",
+ "tags": [
+ {
+ "name": "param",
+ "content": "The value being filtered.",
+ "types": [ "mixed" ],
+ "variable": "$value"
+ },
+ {
+ "name": "param",
+ "content": "The product object.",
+ "types": [ "\\WC_Product" ],
+ "variable": "$product"
+ },
+ {
+ "name": "param",
+ "content": "The cart item if the product exists in the cart, or null.",
+ "types": [ "array", "null" ],
+ "variable": "$cart_item"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "mixed" ]
+ }
+ ],
+ "long_description_html": "The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.
"
+ },
+ "args": 3
+ },
+ {
+ "name": "woocommerce_variation_option_name",
+ "file": "StoreApi/Schemas/V1/CartItemSchema.php",
+ "type": "filter",
+ "doc": {
+ "description": "Filters the variation option name.",
+ "long_description": "Filters the variation option name for custom option slugs.",
+ "tags": [
+ {
+ "name": "internal",
+ "content": "Matches filter name in WooCommerce core."
+ },
+ {
+ "name": "param",
+ "content": "The name to display.",
+ "types": [ "string" ],
+ "variable": "$value"
+ },
+ {
+ "name": "param",
+ "content": "Unused because this is not a variation taxonomy.",
+ "types": [ "null" ],
+ "variable": "$unused"
+ },
+ {
+ "name": "param",
+ "content": "Taxonomy or product attribute name.",
+ "types": [ "string" ],
+ "variable": "$taxonomy"
+ },
+ {
+ "name": "param",
+ "content": "Product data.",
+ "types": [ "\\WC_Product" ],
+ "variable": "$product"
+ },
+ {
+ "name": "return",
+ "content": "",
+ "types": [ "string" ]
+ }
+ ],
+ "long_description_html": "Filters the variation option name for custom option slugs.
"
+ },
+ "args": 4
+ }
+ ]
+}
diff --git a/bin/hook-docs/format-hook-doc/files.js b/bin/hook-docs/format-hook-doc/files.js
index e7282f630..8a4825c25 100644
--- a/bin/hook-docs/format-hook-doc/files.js
+++ b/bin/hook-docs/format-hook-doc/files.js
@@ -2,7 +2,7 @@ const files = ( sources ) => {
return sources && sources.length
? {
ul: sources.map( ( file ) => {
- return `[${ file }](../../src/${ file })`;
+ return `[${ file }](../../../../src/${ file })`;
} ),
}
: null;
diff --git a/bin/webpack-configs.js b/bin/webpack-configs.js
index 9f16254af..4c91754bf 100644
--- a/bin/webpack-configs.js
+++ b/bin/webpack-configs.js
@@ -261,7 +261,7 @@ const getMainConfig = ( options = {} ) => {
new CopyWebpackPlugin( {
patterns: [
{
- from: './assets/js/blocks/**/block.json',
+ from: './assets/js/**/block.json',
to( { absoluteFilename } ) {
/**
* Getting the block name from the JSON metadata is less error prone
diff --git a/bin/webpack-entries.js b/bin/webpack-entries.js
index 714dc0646..4e717d948 100644
--- a/bin/webpack-entries.js
+++ b/bin/webpack-entries.js
@@ -57,6 +57,9 @@ const blocks = {
'legacy-template': {
customDir: 'classic-template',
},
+ 'product-query': {
+ isExperimental: true,
+ },
};
// Returns the entries for each block given a relative path (ie: `index.js`,
diff --git a/bin/webpack-helpers.js b/bin/webpack-helpers.js
index b1fd4697b..0448fed65 100644
--- a/bin/webpack-helpers.js
+++ b/bin/webpack-helpers.js
@@ -16,6 +16,7 @@ const wcDepMap = {
'@woocommerce/blocks-registry': [ 'wc', 'wcBlocksRegistry' ],
'@woocommerce/settings': [ 'wc', 'wcSettings' ],
'@woocommerce/block-data': [ 'wc', 'wcBlocksData' ],
+ '@woocommerce/data': [ 'wc', 'data' ],
'@woocommerce/shared-context': [ 'wc', 'wcBlocksSharedContext' ],
'@woocommerce/shared-hocs': [ 'wc', 'wcBlocksSharedHocs' ],
'@woocommerce/price-format': [ 'wc', 'priceFormat' ],
@@ -27,6 +28,7 @@ const wcHandleMap = {
'@woocommerce/settings': 'wc-settings',
'@woocommerce/block-settings': 'wc-settings',
'@woocommerce/block-data': 'wc-blocks-data-store',
+ '@woocommerce/data': 'wc-store-data',
'@woocommerce/shared-context': 'wc-blocks-shared-context',
'@woocommerce/shared-hocs': 'wc-blocks-shared-hocs',
'@woocommerce/price-format': 'wc-price-format',
diff --git a/composer.lock b/composer.lock
index 1a0acfea8..52c349887 100644
--- a/composer.lock
+++ b/composer.lock
@@ -8,23 +8,23 @@
"packages": [
{
"name": "automattic/jetpack-autoloader",
- "version": "v2.11.6",
+ "version": "v2.11.7",
"source": {
"type": "git",
"url": "https://github.com/Automattic/jetpack-autoloader.git",
- "reference": "a22f41ff845b8bd4591a933b282270f57dd5bc1d"
+ "reference": "65170ab358aa5a8efd9de96666a46b74dc74513d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/a22f41ff845b8bd4591a933b282270f57dd5bc1d",
- "reference": "a22f41ff845b8bd4591a933b282270f57dd5bc1d",
+ "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/65170ab358aa5a8efd9de96666a46b74dc74513d",
+ "reference": "65170ab358aa5a8efd9de96666a46b74dc74513d",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.1 || ^2.0"
},
"require-dev": {
- "automattic/jetpack-changelogger": "^3.1",
+ "automattic/jetpack-changelogger": "^3.2",
"yoast/phpunit-polyfills": "1.0.3"
},
"type": "composer-plugin",
@@ -53,9 +53,9 @@
],
"description": "Creates a custom autoloader for a plugin or theme.",
"support": {
- "source": "https://github.com/Automattic/jetpack-autoloader/tree/v2.11.6"
+ "source": "https://github.com/Automattic/jetpack-autoloader/tree/v2.11.7"
},
- "time": "2022-06-21T07:32:07+00:00"
+ "time": "2022-07-26T13:41:25+00:00"
},
{
"name": "composer/installers",
@@ -2715,16 +2715,16 @@
},
{
"name": "wp-phpunit/wp-phpunit",
- "version": "6.0.1",
+ "version": "6.0.2",
"source": {
"type": "git",
"url": "https://github.com/wp-phpunit/wp-phpunit.git",
- "reference": "d4082280dd59add7c42d0a67400f8eb26cd790de"
+ "reference": "88c786f68c6abe1061f9e40f5e8b299e41a50287"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/wp-phpunit/wp-phpunit/zipball/d4082280dd59add7c42d0a67400f8eb26cd790de",
- "reference": "d4082280dd59add7c42d0a67400f8eb26cd790de",
+ "url": "https://api.github.com/repos/wp-phpunit/wp-phpunit/zipball/88c786f68c6abe1061f9e40f5e8b299e41a50287",
+ "reference": "88c786f68c6abe1061f9e40f5e8b299e41a50287",
"shasum": ""
},
"type": "library",
@@ -2759,7 +2759,7 @@
"issues": "https://github.com/wp-phpunit/issues",
"source": "https://github.com/wp-phpunit/wp-phpunit"
},
- "time": "2022-07-12T22:10:08+00:00"
+ "time": "2022-08-30T21:14:52+00:00"
},
{
"name": "yoast/phpunit-polyfills",
diff --git a/docs/README.md b/docs/README.md
index c9d8cdfc9..bc9899303 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -146,7 +146,7 @@ The following tutorials from [developer.woocommerce.com](https://developer.wooco
[We're hiring!](https://woocommerce.com/careers/) Come work with us!
-🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/readme.md)
+🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/README.md)
diff --git a/docs/contributors/README.md b/docs/contributors/README.md
index 2991aa4bb..a2836e09b 100644
--- a/docs/contributors/README.md
+++ b/docs/contributors/README.md
@@ -2,15 +2,15 @@
This folder contains documentation for developers and contributors looking to get started with WooCommerce Block Development.
-| Document | Description |
-| ---------------------------------------------------- | ---------------------------------------------------------------------------------------- |
-| [Getting Started](getting-started.md) | This doc covers tooling and creating builds during development. |
-| [Coding Guidelines](coding-guidelines.md) | This doc covers development best practices. |
-| [JavaScript Testing](javascript-testing.md) | This doc explains how to run automated JavaScript tests. |
-| [Developing Components (& Storybook)](components.md) | This doc outlines where our reusable components live, and how to test them in Storybook. |
-| [Block Script Assets](block-assets.md) | This doc explains how Block Script Assets are loaded and used. |
-| [JS build system](js-build-system.md) | This doc explains how JavaScript files are built. |
-| [CSS build system](css-build-system.md) | This doc explains how CSS is built. |
+| Document | Description |
+|------------------------------------------------------------| ---------------------------------------------------------------------------------------- |
+| [Getting Started](contributing/getting-started.md) | This doc covers tooling and creating builds during development. |
+| [Coding Guidelines](contributing/coding-guidelines.md) | This doc covers development best practices. |
+| [JavaScript Testing](contributing/javascript-testing.md) | This doc explains how to run automated JavaScript tests. |
+| [Developing Components (& Storybook)](components.md) | This doc outlines where our reusable components live, and how to test them in Storybook. |
+| [Block Script Assets](contributing/block-assets.md) | This doc explains how Block Script Assets are loaded and used. |
+| [JS build system](contributing/javascript-build-system.md) | This doc explains how JavaScript files are built. |
+| [CSS build system](contributing/css-build-system.md) | This doc explains how CSS is built. |
diff --git a/docs/contributors/components.md b/docs/contributors/components.md
index a24e19770..71081ad36 100644
--- a/docs/contributors/components.md
+++ b/docs/contributors/components.md
@@ -2,17 +2,15 @@
This repo includes [Storybook](https://storybook.js.org) tooling so we can test and develop components in isolation.
-The storybook is automatically built and published to [GitHub pages](https://woocommerce.github.io/woocommerce-gutenberg-products-block/) on every push to the main branch. See [travis.yml](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/.travis.yml) for details.
-
-
+The storybook is automatically built and published to [GitHub pages](https://woocommerce.github.io/woocommerce-blocks/) on every push to the main branch.
## Where are our components?
We have components in a few folders, for different contexts.
-- [`assets/js/base/components`](https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/trunk/assets/js/base/components)
-- [`assets/js/editor-components`](https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/trunk/assets/js/editor-components)
-- [`assets/js/icons`](https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/trunk/assets/js/icons)
+- [`assets/js/base/components`](../../assets/js/base/components)
+- [`assets/js/editor-components`](../../assets/js/editor-components)
+- [`assets/js/icons`](../../assets/js/icons)
**`assets/js/base/components`** are used in front-end code, as well as editor & admin.
These components help us build consistent interfaces across the front end (shopper) experience and elsewhere.
@@ -27,7 +25,7 @@ They allow us to build a consistent and powerful UI for merchants for authoring
**`assets/js/icons`** is a suite of icons and SVG images that we use in our interfaces.
-For more info about individual components, refer to [Storybook](https://woocommerce.github.io/woocommerce-gutenberg-products-block/) or individual readme files.
+For more info about individual components, refer to [Storybook](https://woocommerce.github.io/woocommerce-blocks/) or individual readme files.
## How to run Storybook locally and test components
diff --git a/docs/contributors/contributing/folder-structure.md b/docs/contributors/contributing/folder-structure.md
index e3adfe01a..a54bb5cfd 100644
--- a/docs/contributors/contributing/folder-structure.md
+++ b/docs/contributors/contributing/folder-structure.md
@@ -2,6 +2,7 @@
The following snippet explains how the WooCommerce Blocks repository is structured omitting irrelevant or obvious items with further explanations:
+```text
│
├── LICENSE
├── README.md
@@ -184,6 +185,7 @@ The following snippet explains how the WooCommerce Blocks repository is structur
├── tests/utils
│ Utilities for the test cases.
│
+```
## Credits
diff --git a/docs/contributors/contributing/getting-started.md b/docs/contributors/contributing/getting-started.md
index be57c1c43..16dbfc6f0 100644
--- a/docs/contributors/contributing/getting-started.md
+++ b/docs/contributors/contributing/getting-started.md
@@ -2,19 +2,19 @@
## Table of contents
-- [Cloning the Git Repository](#cloning-the-git-repository)
-- [Configuring your WordPress site](#configuring-your-wordpress-site)
-- [Installing dependencies](#installing-dependencies)
-- [Building the plugin files](#building-the-plugin-files)
- - [Legacy builds](#legacy-builds)
-- [Create a plugin package in ZIP format](#create-a-plugin-package-in-zip-format)
-- [Linting](#linting)
-- [Running the Blocks plugin](#running-the-blocks-plugin)
-- [Developer Tools (Visual Studio Code)](#developer-tools-visual-studio-code)
- - [EditorConfig](#editorconfig)
- - [ESLint](#eslint)
- - [Prettier](#prettier)
-- [Testing](#testing)
+- [Cloning the Git Repository](#cloning-the-git-repository)
+- [Configuring your WordPress site](#configuring-your-wordpress-site)
+- [Installing dependencies](#installing-dependencies)
+- [Building the plugin files](#building-the-plugin-files)
+ - [Legacy builds](#legacy-builds)
+- [Create a plugin package in ZIP format](#create-a-plugin-package-in-zip-format)
+- [Linting](#linting)
+- [Running the Blocks plugin](#running-the-blocks-plugin)
+- [Developer Tools (Visual Studio Code)](#developer-tools-visual-studio-code)
+ - [EditorConfig](#editorconfig)
+ - [ESLint](#eslint)
+ - [Prettier](#prettier)
+- [Testing](#testing)
Before you can begin contributing to the Blocks plugin there are several steps and tools required to setup your local development environment.
@@ -52,7 +52,7 @@ To install dependencies, you will need the following tools installed on your mac
- [`npm` and `node.js`](https://nodejs.org)
- [`composer`](https://getcomposer.org)
-See [`package.json` `engines`](../../package.json) for details of required versions.
+See [`package.json` `engines`](../../../package.json) for details of required versions.
Once you have `node` and `composer` setup, install the dependencies from the command line:
@@ -79,7 +79,7 @@ This plugin supports two type of builds:
The legacy builds are loaded in a site environment where the WordPress version doesn't meet minimum requirements for a component used in a set build.
-You can read more about legacy builds in the [this doc](./assets/js/legacy/README.md).
+You can read more about legacy builds in the [this doc](../../../assets/js/legacy/README.md).
## Create a plugin package in ZIP format
@@ -96,9 +96,9 @@ Run `$ npm run lint` to check code against our linting rules.
This script runs 3 sub-commands: `lint:php`, `lint:css`, `lint:js`. Use these to run linters across the codebase (linters check for valid syntax).
-- `lint:php` runs phpcs via composer, which uses the [phpcs.xml](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/phpcs.xml) rule set.
-- `lint:css` runs stylelint over all the scss code in `assets/css`, using the rules in [.stylelintrc.json.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/.stylelintrc.json)
-- `lint:js` runs eslint over all the JavaScript, using the rules in [.eslintrc.js.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/.eslintrc.js)
+- `lint:php` runs phpcs via composer, which uses the [phpcs.xml](../../../phpcs.xml) rule set.
+- `lint:css` runs stylelint over all the scss code in `assets/css`, using the rules in [.stylelintrc.json.](../../../.stylelintrc.json)
+- `lint:js` runs eslint over all the JavaScript, using the rules in [.eslintrc.js.](../../../.eslintrc.js)
Note; linters are also ran before commits via Git. If there are any violations, you will not be able to commit your changes until they are fixed, unless you add the `--no-verify` flag to your commit command.
@@ -148,7 +148,7 @@ You’ll find a handful of scripts in `package.json` that performs the automated
- JS tests: `npm run test`
- Run `npm run wp-env` command to setup the development environment in Docker.
-To find out more about how to run automated JavaScript tests, check out the documentation on [JavaScript Testing](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/contributors/javascript-testing.md).
+To find out more about how to run automated JavaScript tests, check out the documentation on [JavaScript Testing](../../contributors/contributing/javascript-testing.md).
diff --git a/docs/contributors/contributing/storybook-and-components.md b/docs/contributors/contributing/storybook-and-components.md
index ba2721027..6bb83184c 100644
--- a/docs/contributors/contributing/storybook-and-components.md
+++ b/docs/contributors/contributing/storybook-and-components.md
@@ -6,15 +6,15 @@
- [How to run Storybook locally and test components](#how-to-run-storybook-locally-and-test-components)
- [How to add a story for a component](#how-to-add-a-story-for-a-component)
-This repo includes [Storybook](https://storybook.js.org) tooling so we can test and develop components in isolation. The storybook is automatically built and published to [GitHub pages](https://woocommerce.github.io/woocommerce-gutenberg-products-block/) on every push to the main branch. See [travis.yml](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/.travis.yml) for details.
+This repo includes [Storybook](https://storybook.js.org) tooling so we can test and develop components in isolation. The storybook is automatically built and published to [GitHub pages](https://woocommerce.github.io/woocommerce-blocks/) on every push to the main branch.
## Where are our components?
We have components in a few folders, for different contexts.
-- [`assets/js/base/components`](https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/trunk/assets/js/base/components)
-- [`assets/js/editor-components`](https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/trunk/assets/js/editor-components)
-- [`assets/js/icons`](https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/trunk/assets/js/icons)
+- [`assets/js/base/components`](../../../assets/js/base/components)
+- [`assets/js/editor-components`](../../../assets/js/editor-components)
+- [`assets/js/icons`](../../../assets/js/icons)
**`assets/js/base/components`** are used in front-end code, as well as editor & admin.
These components help us build consistent interfaces across the front end (shopper) experience and elsewhere.
@@ -29,7 +29,7 @@ They allow us to build a consistent and powerful UI for merchants for authoring
**`assets/js/icons`** is a suite of icons and SVG images that we use in our interfaces.
-For more info about individual components, refer to [Storybook](https://woocommerce.github.io/woocommerce-gutenberg-products-block/) or individual readme files.
+For more info about individual components, refer to [Storybook](https://woocommerce.github.io/woocommerce-blocks/) or individual readme files.
## How to run Storybook locally and test components
diff --git a/docs/designers/theming/README.md b/docs/designers/theming/README.md
index a24fec9e9..7cdd93e6f 100644
--- a/docs/designers/theming/README.md
+++ b/docs/designers/theming/README.md
@@ -6,7 +6,7 @@ This page includes all documentation regarding WooCommerce Blocks and themes.
### Block and component class names
-WooCommerce Blocks follows BEM for class names, as [stated in our coding guidelines](../contributors/coding-guidelines.md). All classes start with one of these two prefixes:
+WooCommerce Blocks follows BEM for class names, as [stated in our coding guidelines](../../contributors/contributing/coding-guidelines.md). All classes start with one of these two prefixes:
- `.wc-block-`: class names specific to a single block.
- `.wc-block-components-`: class names specific to a component. The component might be reused by different blocks.
diff --git a/docs/designers/theming/all-products-and-filters.md b/docs/designers/theming/all-products-and-filters.md
index c13f5efe6..222cbe403 100644
--- a/docs/designers/theming/all-products-and-filters.md
+++ b/docs/designers/theming/all-products-and-filters.md
@@ -2,7 +2,7 @@
## Price slider accent color
-The Filter Products by Price block includes a price slider which uses an accent color to show the selected range.
+The Filter by Price block includes a price slider which uses an accent color to show the selected range.
![Price filter screenshot](https://user-images.githubusercontent.com/3616980/96570001-2053f900-12ca-11eb-8a75-8a54f243bda3.png)
diff --git a/docs/internal-developers/automations/README.md b/docs/internal-developers/automations/README.md
new file mode 100644
index 000000000..6c5b0cff4
--- /dev/null
+++ b/docs/internal-developers/automations/README.md
@@ -0,0 +1,19 @@
+# Automatations
+
+This directory contains documentation for all the automations configured in this repository.
+
+| Document | Description |
+| -------------------------------------- | ------------------------------------- |
+| [Dependabot](dependabot.md) | This doc explains how Dependabot works. |
+
+
+
+
+---
+
+[We're hiring!](https://woocommerce.com/careers/) Come work with us!
+
+🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/block-client-apis/README.md)
+
+
+
diff --git a/docs/internal-developers/automations/dependabot.md b/docs/internal-developers/automations/dependabot.md
new file mode 100644
index 000000000..4bf761399
--- /dev/null
+++ b/docs/internal-developers/automations/dependabot.md
@@ -0,0 +1,10 @@
+
+# Dependabot
+
+This repository uses [`Dependabot`](https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates) to help with keeping all the package dependencies (NPM, Composer, GitHub Actions) up to date. Without this in place, it's very easy to let the package versions we're using go stale and end up with a backlog of chores for updating those in the future. It is essential to keep dependencies updated to avoid security problems and lower overall upgrade costs.
+The process is automated: Dependabot creates a branch and a PR with a package bump in package.json. A new package-lock.json is created. Automated tests are executed. Also, Dependabot will create a maximum of 10 PRs for each ecosystem (NPM, Composer, GitHub Actions).
+
+It is the responsibility of the porter to review these PRs weekly and merge/reject them.
+
+Dependabot's configuration is located at [`.github/dependabot.yml` path](https://github.com/woocommerce/woocommerce-blocks/blob/trunk/.github/dependabot.yml).
+
diff --git a/docs/internal-developers/block-client-apis/README.md b/docs/internal-developers/block-client-apis/README.md
index e7f2d9a1a..dda5813c9 100644
--- a/docs/internal-developers/block-client-apis/README.md
+++ b/docs/internal-developers/block-client-apis/README.md
@@ -2,13 +2,13 @@
This folder contains documentation for API interfaces for Blocks. In _most cases_, these docs describe APIs and interfaces that are _internal_ only, and thus are provided to assist with developing the blocks in this repository. Documentation will tend to focus on high level overviews.
-For more details about extensibility points in the blocks, you can reference the [extensibility docs](../extensibility/README.md).
+For more details about extensibility points in the blocks, you can reference the [extensibility docs](../../third-party-developers/extensibility/README.md).
-| Document | Description |
-| -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
-| [Checkout API interface](checkout/checkout-api.md) | This doc goes into some detail about some of the API specifics for the checkout block architecture. |
-| [Checkout Flow and Events](../../third-party-developers/extensibility/checkout-flow-and-events.md) | All about the checkout flow in the checkout block and the various emitted events that can be subscribed to. |
-| [Notices](notices.md) | Explains how the notices system works and which methods are available to add an remove them. |
+| Document | Description |
+| ------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------- |
+| [Checkout API interface](checkout/checkout-api.md) | This doc goes into some detail about some of the API specifics for the checkout block architecture. |
+| [Checkout Flow and Events](../../internal-developers/block-client-apis/checkout/checkout-flow-and-events.md) | All about the checkout flow in the checkout block and the various emitted events that can be subscribed to. |
+| [Notices](notices.md) | Explains how the notices system works and which methods are available to add an remove them. |
diff --git a/docs/internal-developers/block-client-apis/checkout/checkout-api.md b/docs/internal-developers/block-client-apis/checkout/checkout-api.md
index 3a91eab66..ff4e9996b 100644
--- a/docs/internal-developers/block-client-apis/checkout/checkout-api.md
+++ b/docs/internal-developers/block-client-apis/checkout/checkout-api.md
@@ -2,22 +2,22 @@
## Table of contents
-- [Contexts](#contexts)
- - [Notices Context](#notices-context)
- - [Customer Data Context](#customer-data-context)
- - [Shipping Method Data context](#shipping-method-data-context)
- - [Payment Method Data Context](#payment-method-data-context)
- - [Checkout Context](#checkout-context)
-- [Hooks](#hooks)
- - [`usePaymentMethodInterface`](#usepaymentmethodinterface)
+- [Contexts](#contexts)
+ - [Notices Context](#notices-context)
+ - [Customer Data Context](#customer-data-context)
+ - [Shipping Method Data context](#shipping-method-data-context)
+ - [Payment Method Data Context](#payment-method-data-context)
+ - [Checkout Context](#checkout-context)
+- [Hooks](#hooks)
+ - [`usePaymentMethodInterface`](#usepaymentmethodinterface)
-This document gives an overview of some of the major architectural components/APIs for the checkout block. If you haven't already, you may also want to read about the [Checkout Flow and Events](../../extensibility/checkout-flow-and-events.md).
+This document gives an overview of some of the major architectural components/APIs for the checkout block. If you haven't already, you may also want to read about the [Checkout Flow and Events](../../../internal-developers/block-client-apis/checkout/checkout-flow-and-events.md).
## Contexts
Much of the data and api interface for components in the Checkout Block are constructed and exposed via [usage of `React.Context`](https://reactjs.org/docs/context.html). In some cases the context maintains the "tree" state within the context itself (via `useReducer`) and in others it interacts with a global `wp.data` store (for data that communicates with the server).
-You can find type definitions (`typedef`) for contexts in [this file](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/assets/js/types/type-defs/contexts.js).
+You can find type definitions (`typedef`) for contexts in [this file](../../../../assets/js/types/type-defs/contexts.js).
### Notices Context
@@ -108,7 +108,7 @@ These docs currently don't go into detail for all the hooks as that is fairly st
### `usePaymentMethodInterface`
-This hook is used to expose all the interfaces for the registered payment method components to utilize. Essentially the result from this hook is fed in as props on the registered payment components when they are setup by checkout. You can use the typedef ([`PaymentMethodInterface`](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/assets/js/type-defs/payment-method-interface.ts)) to see what is fed to payment methods as props from this hook.
+This hook is used to expose all the interfaces for the registered payment method components to utilize. Essentially the result from this hook is fed in as props on the registered payment components when they are setup by checkout. You can use the typedef ([`PaymentMethodInterface`](../../../../assets/js/types/type-defs/payment-method-interface.ts)) to see what is fed to payment methods as props from this hook.
_Why don't payment methods just implement this hook_?
diff --git a/docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md b/docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md
index 90c1cd653..1b66f393b 100644
--- a/docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md
+++ b/docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md
@@ -2,24 +2,24 @@
## Table of Contents
-- [General Concepts](#general-concepts)
- - [Tracking flow through status](#tracking-flow-through-status)
- - [`CheckoutProvider` Exposed Statuses](#checkoutprovider-exposed-statuses)
- - [Special States:](#special-states)
- - [`ShippingProvider` Exposed Statuses](#shippingprovider-exposed-statuses)
- - [`PaymentMethodDataProvider` Exposed Statuses](#paymentmethoddataprovider-exposed-statuses)
- - [Emitting Events](#emitting-events)
- - [`onCheckoutValidationBeforeProcessing`](#oncheckoutvalidationbeforeprocessing)
- - [`onPaymentProcessing`](#onpaymentprocessing)
- - [Success](#success)
- - [Fail](#fail)
- - [Error](#error)
- - [`onCheckoutAfterProcessingWithSuccess`](#oncheckoutafterprocessingwithsuccess)
- - [`onCheckoutAfterProcessingWithError`](#oncheckoutafterprocessingwitherror)
- - [`onShippingRateSuccess`](#onshippingratesuccess)
- - [`onShippingRateFail`](#onshippingratefail)
- - [`onShippingRateSelectSuccess`](#onshippingrateselectsuccess)
- - [`onShippingRateSelectFail`](#onshippingrateselectfail)
+- [General Concepts](#general-concepts)
+ - [Tracking flow through status](#tracking-flow-through-status)
+ - [`CheckoutProvider` Exposed Statuses](#checkoutprovider-exposed-statuses)
+ - [Special States:](#special-states)
+ - [`ShippingProvider` Exposed Statuses](#shippingprovider-exposed-statuses)
+ - [`PaymentMethodDataProvider` Exposed Statuses](#paymentmethoddataprovider-exposed-statuses)
+ - [Emitting Events](#emitting-events)
+ - [`onCheckoutValidationBeforeProcessing`](#oncheckoutvalidationbeforeprocessing)
+ - [`onPaymentProcessing`](#onpaymentprocessing)
+ - [Success](#success)
+ - [Fail](#fail)
+ - [Error](#error)
+ - [`onCheckoutAfterProcessingWithSuccess`](#oncheckoutafterprocessingwithsuccess)
+ - [`onCheckoutAfterProcessingWithError`](#oncheckoutafterprocessingwitherror)
+ - [`onShippingRateSuccess`](#onshippingratesuccess)
+ - [`onShippingRateFail`](#onshippingratefail)
+ - [`onShippingRateSelectSuccess`](#onshippingrateselectsuccess)
+ - [`onShippingRateSelectFail`](#onshippingrateselectfail)
This document gives an overview of the flow for the checkout in the WooCommerce checkout block, and some general architectural overviews.
@@ -99,7 +99,7 @@ The status is exposed on the `currentErrorStatus` object provided by the `useShi
### `PaymentMethodDataProvider` Exposed Statuses
-This context provider exposes everything related to payment method data and registered payment methods. The statuses exposed via this provider help inform the current state of _client side_ processing for payment methods and are updated via the payment method data event emitters. _Client side_ means the state of processing any payments by registered and active payment methods when the checkout form is submitted via those payment methods registered client side components. It's still possible that payment methods might have additional server side processing when the order is being processed but that is not reflected by these statuses (more in the [payment method integration doc](./payment-method-integration.md)).
+This context provider exposes everything related to payment method data and registered payment methods. The statuses exposed via this provider help inform the current state of _client side_ processing for payment methods and are updated via the payment method data event emitters. _Client side_ means the state of processing any payments by registered and active payment methods when the checkout form is submitted via those payment methods registered client side components. It's still possible that payment methods might have additional server side processing when the order is being processed but that is not reflected by these statuses (more in the [payment method integration doc](../../../third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md)).
The possible _internal_ statuses that may be set are:
@@ -266,7 +266,7 @@ const successResponse = { type: 'success' };
When a success response is returned, the payment method context status will be changed to `SUCCESS`. In addition, including any of the additional properties will result in extra actions:
- `paymentMethodData`: The contents of this object will be included as the value for `payment_data` when checkout sends a request to the checkout endpoint for processing the order. This is useful if a payment method does additional server side processing.
-- `billingData`: This allows payment methods to update any billing data information in the checkout (typically used by Express payment methods) so it's included in the checkout processing request to the server. This data should be in the [shape outlined here](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/assets/js/type-defs/billing.js).
+- `billingData`: This allows payment methods to update any billing data information in the checkout (typically used by Express payment methods) so it's included in the checkout processing request to the server. This data should be in the [shape outlined here](../../../../assets/js/types/type-defs/billing.js).
- `shippingData`: This allows payment methods to update any shipping data information for the order (typically used by Express payment methods) so it's included in the checkout processing request to the server. This data should be in the [shape outlined here](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/34e17c3622637dbe8b02fac47b5c9b9ebf9e3596/assets/js/type-defs/cart.js#L20-L32).
If `billingData` or `shippingData` properties aren't in the response object, then the state for the data is left alone.
diff --git a/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md b/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md
index 7612c4bf8..29c2b4364 100644
--- a/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md
+++ b/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md
@@ -2,19 +2,19 @@
## Table of contents
-- [Blocks behind flags](#blocks-behind-flags)
- - [Feature plugin flag](#feature-plugin-flag)
- - [Experimental flag](#experimental-flag)
-- [Features behind flags](#features-behind-flags)
- - [Feature plugin flag](#feature-plugin-flag-1)
- - [Experimental plugin flag](#experimental-plugin-flag)
-- [Processes and commands that use a flag](#processes-and-commands-that-use-a-flag)
-- [Usages of `__experimental` prefix](#usages-of-__experimental-prefix)
- - [PHP filters and actions](#php-filters-and-actions)
- - [JS methods](#js-methods)
- - [Slots](#slots)
- - [Misc](#misc)
-- [Usages of `experimental` prefix](#usages-of-experimental-prefix)
+- [Blocks behind flags](#blocks-behind-flags)
+ - [Feature plugin flag](#feature-plugin-flag)
+ - [Experimental flag](#experimental-flag)
+- [Features behind flags](#features-behind-flags)
+ - [Feature plugin flag](#feature-plugin-flag-1)
+ - [Experimental plugin flag](#experimental-plugin-flag)
+- [Processes and commands that use a flag](#processes-and-commands-that-use-a-flag)
+- [Usages of `__experimental` prefix](#usages-of-__experimental-prefix)
+ - [PHP filters and actions](#php-filters-and-actions)
+ - [JS methods](#js-methods)
+ - [Slots](#slots)
+ - [Misc](#misc)
+- [Usages of `experimental` prefix](#usages-of-experimental-prefix)
We have feature gating system setup in our plugin that defines what is accessible to the public and what is not, it has three phases:
@@ -33,32 +33,8 @@ The majority of our feature flagging is blocks, this is a list of them:
### Feature plugin flag
-- Cart block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/f76c7e46ce63d88059d8ce8b05d9409b78988e5f/assets/js/blocks/cart-checkout/cart/index.js#L51) | [PHP flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/4a1ee97eb97011458174e93e44a9b7ad2f10ca36/src/BlockTypesController.php#L177)).
-- Checkout block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/89b5d3032aa9d8b7368ba4edd3da222d076fbcaa/assets/js/blocks/cart-checkout/checkout/index.js#L86) | [PHP flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/4a1ee97eb97011458174e93e44a9b7ad2f10ca36/src/BlockTypesController.php#L176)).
-- Checkout Actions block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/78e2de7a3ddfd3a554273fd6c2ff68478e9692ad/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-actions-block/index.tsx#14)).
-- Checkout Billing Address block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/78e2de7a3ddfd3a554273fd6c2ff68478e9692ad/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-billing-address-block/index.tsx#14)).
-- Checkout Contact Information block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/78e2de7a3ddfd3a554273fd6c2ff68478e9692ad/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-contact-information-block/index.tsx#14)).
-- Checkout Express Payment block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/1cf7823eab9ccc974312fb806af7d8b77da8969e/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-express-payment-block/index.tsx#12)).
-- Checkout Fields block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/78e2de7a3ddfd3a554273fd6c2ff68478e9692ad/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-fields-block/index.tsx#13)).
-- Checkout Order Note block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/1cf7823eab9ccc974312fb806af7d8b77da8969e/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-order-note-block/index.tsx#13)).
-- Checkout Order Summary block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/78e2de7a3ddfd3a554273fd6c2ff68478e9692ad/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-order-summary-block/index.tsx#14)).
-- Checkout Payment block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/78e2de7a3ddfd3a554273fd6c2ff68478e9692ad/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-payment-block/index.tsx#14)).
-- Checkout Shipping Address block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/78e2de7a3ddfd3a554273fd6c2ff68478e9692ad/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-shipping-address-block/index.tsx#14)).
-- Checkout Shipping Methods block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/78e2de7a3ddfd3a554273fd6c2ff68478e9692ad/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-shipping-methods-block/index.tsx#14)).
-- Checkout Terms block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/89b5d3032aa9d8b7368ba4edd3da222d076fbcaa/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-terms-block/index.tsx#13)).
-- Checkout Totals block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/78e2de7a3ddfd3a554273fd6c2ff68478e9692ad/assets/js/blocks/cart-checkout/checkout-i2/inner-blocks/checkout-totals-block/index.tsx#L13)).
-
### Experimental flag
-- Cart block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8516e87bddee6c07a080c934f3d8cc0683adef06/assets/js/blocks/cart-checkout/cart-i2/index.js#L44) | [PHP flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/961c0c476d4228a218859c658c42f9b6eebfdec4/src/BlockTypesController.php#L182)).
-- Cart Express Checkout block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8516e87bddee6c07a080c934f3d8cc0683adef06/assets/js/blocks/cart-checkout/cart-i2/inner-blocks/cart-express-payment-block/index.tsx#L13)).
-- Cart Items block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8516e87bddee6c07a080c934f3d8cc0683adef06/assets/js/blocks/cart-checkout/cart-i2/inner-blocks/cart-items-block/index.tsx#L13)).
-- Cart Line Items block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8516e87bddee6c07a080c934f3d8cc0683adef06/assets/js/blocks/cart-checkout/cart-i2/inner-blocks/cart-line-items-block/index.tsx#L13)).
-- Cart Order Summary block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8516e87bddee6c07a080c934f3d8cc0683adef06/assets/js/blocks/cart-checkout/cart-i2/inner-blocks/cart-order-summary-block/index.tsx#L14)).
-- Cart Totals block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8516e87bddee6c07a080c934f3d8cc0683adef06/assets/js/blocks/cart-checkout/cart-i2/inner-blocks/cart-totals-block/index.tsx#L13)).
-- Empty Cart block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8516e87bddee6c07a080c934f3d8cc0683adef06/assets/js/blocks/cart-checkout/cart-i2/inner-blocks/empty-cart-block/index.tsx#L13)).
-- Filled Cart block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8516e87bddee6c07a080c934f3d8cc0683adef06/assets/js/blocks/cart-checkout/cart-i2/inner-blocks/filled-cart-block/index.tsx#L13)).
-- Cart Proceed to checkout block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8516e87bddee6c07a080c934f3d8cc0683adef06/assets/js/blocks/cart-checkout/cart-i2/inner-blocks/proceed-to-checkout-block/index.tsx#L14)).
- Single Product block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/9b76ea7a1680e68cc20bfee01078e43ccfc996bd/assets/js/blocks/single-product/index.js#L43) | [PHP flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/4a1ee97eb97011458174e93e44a9b7ad2f10ca36/src/BlockTypesController.php#L181) | [webpack flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/341be1f56071fbd4b5ff975e8788d65a09512df2/bin/webpack-entries.js#L57-L59)).
- ⚛️ Add to cart ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/add-to-cart/index.js#L29-L32)).
- ⚛️ Product category list ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/category-list/index.js#L29-L32)).
@@ -72,16 +48,9 @@ We also have individual features or code blocks behind a feature flag, this is a
### Feature plugin flag
-- Payment API ([PHP flag 1](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/07387889ec3a03769eb490821ee608d4e741e942/src/Domain/Bootstrap.php#L92-L94) | [PHP flag 2](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/07387889ec3a03769eb490821ee608d4e741e942/src/Domain/Bootstrap.php#L245-L254)).
- ⚛️ Product Price new controls ([JS flag 1](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/price/attributes.js#L13-L44) | [JS flag 2-1](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8d2f0ad8ade2c7217769b431f93de76d6cfacf6e/assets/js/atomic/blocks/product-elements/price/block.js#L116) | [JS flag 2-2](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8d2f0ad8ade2c7217769b431f93de76d6cfacf6e/assets/js/atomic/blocks/product-elements/price/block.js#L114) | [JS flag 2-3](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8d2f0ad8ade2c7217769b431f93de76d6cfacf6e/assets/js/atomic/blocks/product-elements/price/block.js#L91) | [JS flag 2-4](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8d2f0ad8ade2c7217769b431f93de76d6cfacf6e/assets/js/atomic/blocks/product-elements/price/block.js#L95) | [JS flag 2-5](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/8d2f0ad8ade2c7217769b431f93de76d6cfacf6e/assets/js/atomic/blocks/product-elements/price/block.js#L106) | [JS flag 3-1](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/price/edit.js#L59-L108) | [JS flag 3-2](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/price/edit.js#L114-L131)).
- ⚛️ Product Title new controls ([JS flag 1](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/title/attributes.js#L21-L40) | [JS flag 2-1](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/title/block.js#L70-L72) | [JS flag 2-2](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/title/block.js#L94-L95) | [JS flag 2-3](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/title/block.js#L104) | [JS flag 3-1](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/title/edit.js#L47-L54) | [JS flag 3-2](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/title/edit.js#L77-L107) | [JS flag 3-3](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b3a9753d8b7dae18b36025d09fbff835b8365de0/assets/js/atomic/blocks/product-elements/title/edit.js#L116-L129)).
- Utility function to pass styles to a block ([JS flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/9ebddbc5d21eb3cc67fedddbccbd86453313eb64/assets/js/atomic/utils/block-styling.js#L6-L12)).
-- Feature to create an account from the Checkout block ([PHP flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/4cedb65367be0d1c4c1f9dd9c016e3b1325cf92e/src/Domain/Services/CreateAccount.php#L40)).
-- Checkout package ([PHP Flag](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/6da64165025e7a2afc1782e4b278d72536e7b754/src/AssetsController.php#L62-L64)) which contains:
- - SlotFills used in Cart and Checkout.
- - Checkout Filters.
- - Inner Blocks registry for Cart & Checkout i2.
- - Components exposed to 3PD.
### Experimental plugin flag
@@ -108,8 +77,8 @@ We also have individual features or code blocks behind a feature flag, this is a
### JS methods
-- `__experimentalDeRegisterPaymentMethod` function used to deregister a payment method, only used in tests ([experimental function](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b07883b8b76feeb439d655b255507b24fc59e091/assets/js/blocks-registry/payment-methods/registry.ts#L114)).
-- `__experimentalDeRegisterExpressPaymentMethod` function used to deregister an express payment method, only used in tests ([experimental function](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/b07883b8b76feeb439d655b255507b24fc59e091/assets/js/blocks-registry/payment-methods/registry.ts#L120)).
+- `__experimentalDeRegisterPaymentMethod` function used to deregister a payment method, only used in tests ([experimental function](https://github.com/woocommerce/woocommerce-blocks/blob/f27456dd00fa0b21b29a935943defb18351edf48/assets/js/blocks-registry/payment-methods/registry.ts#L110-L114)).
+- `__experimentalDeRegisterExpressPaymentMethod` function used to deregister an express payment method, only used in tests ([experimental function](https://github.com/woocommerce/woocommerce-blocks/blob/f27456dd00fa0b21b29a935943defb18351edf48/assets/js/blocks-registry/payment-methods/registry.ts#L116-L120)).
- `__experimentalRegisterCheckoutFilters` and `__experimentalApplyCheckoutFilter` methods included with `@woocommerce/blocks-checkout` package. They allow registering and applying a filter to certain parts of the Cart and Checkout blocks ([experimental method 1](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/3e59ec9842464f783f6e087947e717fa0b0a7b1b/packages/checkout/registry/index.js#L2) | [experimental method 2](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/3e59ec9842464f783f6e087947e717fa0b0a7b1b/packages/checkout/registry/index.js#L17)).
### Slots
diff --git a/docs/internal-developers/testing/releases/260.md b/docs/internal-developers/testing/releases/260.md
index b3bc55c65..e5feb8a19 100644
--- a/docs/internal-developers/testing/releases/260.md
+++ b/docs/internal-developers/testing/releases/260.md
@@ -5,7 +5,7 @@
## Cart and Checkout Blocks
-[See testing notes here](https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/trunk/docs/testing/cart-checkout)
+[See testing notes here](../cart-checkout/)
## All Products
diff --git a/docs/internal-developers/testing/releases/270.md b/docs/internal-developers/testing/releases/270.md
index 227778a23..65f11fc50 100644
--- a/docs/internal-developers/testing/releases/270.md
+++ b/docs/internal-developers/testing/releases/270.md
@@ -11,7 +11,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
![Checkout heading styles](https://user-images.githubusercontent.com/3616980/84032118-1e327300-a997-11ea-8c06-363ac2bd78b3.png)
- In Checkout, the item quantity badges are visible with dark backgrounds (with Storefront, you can change the background color in Appearance > Customize > Background) (#2619). \
![Item quantity badges](https://user-images.githubusercontent.com/3616980/84031988-ed523e00-a996-11ea-8545-339111e31f5f.png)
- - Try adding the code snippet from the [Cart and Checkout theming](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/theming/cart-and-checkout.md#item-quantity-badge) docs (you can do it via a child theme or directly in the browser devtools) and verify the item quantity badge styles update accordingly.
+ - Try adding the code snippet from the [Cart and Checkout theming](../../../designers/theming/cart-and-checkout.md#item-quantity-badge) docs (you can do it via a child theme or directly in the browser devtools) and verify the item quantity badge styles update accordingly.
- In general, verify there were no regressions introduced after 2.6.0.
- The Cart block title should be `Your cart (X items)` (#2615). \
![Cart block title](https://user-images.githubusercontent.com/3616980/84032294-66ea2c00-a997-11ea-8d6d-929668cb702b.png)
@@ -30,10 +30,10 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
![Select in Hello theme](https://user-images.githubusercontent.com/3616980/84032650-f4c61700-a997-11ea-969d-6427d1e221bb.png)
- Twenty Twenty:
- Add the All Products block and the Hand-picked Products block in a page and verify (#2573): - That with the All Products block you can add the On Sale badge and it's correctly aligned in the editor and the frontend (before, it was always shown on top of the image). \
- ![All Products in Twenty Twenty](https://user-images.githubusercontent.com/3616980/83013870-fef22800-a01d-11ea-8ea8-21229285d10a.png)
+ ![All Products in Twenty Twenty](https://user-images.githubusercontent.com/3616980/83013870-fef22800-a01d-11ea-8ea8-21229285d10a.png)
- The Hand-picked Products block discounted prices are not underlined. \
![Hand-picked Products in Twenty Twenty](https://user-images.githubusercontent.com/3616980/83013599-8e4b0b80-a01d-11ea-88ab-a1537110c4e2.png)
-- Go to the Checkout block and verify font sizes look correct (they are inherited from the theme) (#2533).
+- Go to the Checkout block and verify font sizes look correct (they are inherited from the theme) (#2533).
## Cart and Checkout error flow (#2655)
@@ -94,7 +94,7 @@ You'll need to be logged in with a user that has saved payment methods.
- Add the All Products block and a PHP-based product grids block (Hand-picked Products, for example) and verify: - Both of them have the same styles for prices. - Both of them scale up the small image.
_Hand-picked Products on top, All Products below:_ \
![Product grid blocks by default](https://user-images.githubusercontent.com/3616980/83166453-3d1b4480-a10f-11ea-813f-2515b26dedac.png)
-- Add the [code snippets](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/theming/product-grid-270.md#product-grid-blocks-style-update-in-270) from the theming docs to undo the changes and verify: - Hand-picked Products block doesn't scale up the image anymore. - All Products block shows discounted prices in two lines.
+- Add the [code snippets](../../../designers/theming/product-grid-270.md#product-grid-blocks-style-update-in-270) from the theming docs to undo the changes and verify: - Hand-picked Products block doesn't scale up the image anymore. - All Products block shows discounted prices in two lines.
_Hand-picked Products on top, All Products below:_ \
![Product grid blocks with the code snippets applied](https://user-images.githubusercontent.com/3616980/83164436-828a4280-a10c-11ea-81c1-b9a62cdf52b5.png)
diff --git a/docs/internal-developers/testing/releases/790.md b/docs/internal-developers/testing/releases/790.md
index fa3182f28..fe958ea06 100644
--- a/docs/internal-developers/testing/releases/790.md
+++ b/docs/internal-developers/testing/releases/790.md
@@ -18,8 +18,8 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
### Fix images hidden by default in Product grid blocks. ([6599](https://github.com/woocommerce/woocommerce-blocks/pull/6599))
-| Before | After |
-| ------ | ----- |
+| Before | After |
+| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| ![imatge](https://user-images.githubusercontent.com/3616980/174588765-7e570a5b-d428-4604-b2af-6534e388b550.png) | ![imatge](https://user-images.githubusercontent.com/3616980/174588822-9cdb7813-05d1-4f97-ae55-1d4392c9f65a.png) |
1. With WC core 6.5.1 and WC Blocks disabled, add a Handpicked Products block to a post or page.
@@ -31,14 +31,13 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
7. Verify images are visible by default.
8. Verify you can still toggle the images.
-### Fix: Scrolling issue of the Filled Mini Cart Contents block. ([6565](https://github.com/woocommerce/woocommerce-blocks/pull/6565))
+### Fix: Scrolling issue of the Filled Mini Cart view block. ([6565](https://github.com/woocommerce/woocommerce-blocks/pull/6565))
-| Before | After |
-| ------ | ----- |
-| ![Before](https://user-images.githubusercontent.com/5423135/173493967-1009d322-351e-451c-a10c-c6456ec08f52.png) | ![After](https://user-images.githubusercontent.com/5423135/173533745-41cda7ed-a068-4d5d-b948-7e2038f3d21c.png) |
+| Before | After |
+| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
+| ![Before](https://user-images.githubusercontent.com/5423135/173493967-1009d322-351e-451c-a10c-c6456ec08f52.png) | ![After](https://user-images.githubusercontent.com/5423135/173533745-41cda7ed-a068-4d5d-b948-7e2038f3d21c.png) |
| | |
-
1. With a block theme like 2022. Edit the Mini Cart template part.
2. Add some blocks to the Mini Cart Items section to make the content overflow.
3. See the footer inside the viewport, and the Mini Cart Items block is now scrollable to view the underneath content.
@@ -48,13 +47,11 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
### Added descriptions to the FSE WooCommerce Templates in the Editor UI. ([6345](https://github.com/woocommerce/woocommerce-blocks/pull/6345))
+| Before | After |
+| ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
+| ![bifor_fixed](https://user-images.githubusercontent.com/905781/165815026-408dccff-ea16-4766-8a65-9696866e6f92.jpg) | ![after_-_fixed](https://user-images.githubusercontent.com/905781/165815040-723bb981-5cc2-4787-a38d-d9dee3e12757.jpg) |
-|Before|After|
-|-|-|
-|![bifor_fixed](https://user-images.githubusercontent.com/905781/165815026-408dccff-ea16-4766-8a65-9696866e6f92.jpg)|![after_-_fixed](https://user-images.githubusercontent.com/905781/165815040-723bb981-5cc2-4787-a38d-d9dee3e12757.jpg)|
-
-
-#### Testing template descriptions**
+#### Testing template descriptions\*\*
1. Activate a **block** theme, like Twenty Twenty Two
2. Open the **Appearance > Editor (Beta)**
@@ -63,14 +60,12 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
5. Open a template (like Mini cart)
6. make sure you can edit and save the content.
-
-#### Testing the search template**
+#### Testing the search template\*\*
1. Activate a **block** theme, like Twenty Twenty Two
2. Make sure there's at least 1 product added
3. Run a product search: `?s={keyword}&post_type=product` and make sure the products are being displayed correctly in a grid (using the search template, instead of the default one).
-
## Feature plugin only
### Prevent warnings appearing when using some plugins for managing shipping packages. ([6470](https://github.com/woocommerce/woocommerce-blocks/pull/6470))
@@ -81,7 +76,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
4. Add multiple items to your cart.
5. Go to the Checkout/Cart Block.
6. Ensure you see no errors.
-
+
---
@@ -90,4 +85,3 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/790.md)
-
diff --git a/docs/internal-developers/testing/releases/820.md b/docs/internal-developers/testing/releases/820.md
index 5df2aa206..4f0bf0674 100644
--- a/docs/internal-developers/testing/releases/820.md
+++ b/docs/internal-developers/testing/releases/820.md
@@ -19,9 +19,9 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
2. Navigate to **Appearance > Editor (Beta)** and add a Mini Cart block somewhere in your site.
3. Select the Mini Cart block in the editor and confirm the icon in the inserter and toolbar reflect the changes.
-| Before | After |
-| ------ | ----- |
-| ![CleanShot 2022-07-28 at 14 57 58](https://user-images.githubusercontent.com/481776/181622493-d618649c-e9ee-4649-9e10-a2aed6737fc5.png) | ![CleanShot 2022-07-28 at 15 31 41](https://user-images.githubusercontent.com/481776/181622516-4bade22f-944a-488e-aacc-6094afa97efe.png) |
+| Before | After |
+| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
+| ![CleanShot 2022-07-28 at 14 57 58](https://user-images.githubusercontent.com/481776/181622493-d618649c-e9ee-4649-9e10-a2aed6737fc5.png) | ![CleanShot 2022-07-28 at 15 31 41](https://user-images.githubusercontent.com/481776/181622516-4bade22f-944a-488e-aacc-6094afa97efe.png) |
### Fix: Replace DropdownSelector with FormTokenField from Gutenberg ([6647](https://github.com/woocommerce/woocommerce-blocks/pull/6647))
@@ -39,9 +39,9 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
5. Hover over one of the terms and click the `View` link of one of the attributes.
6. Check that the page is rendered with a header, a footer, and using a product grid.
-| Before | After |
-| ------ | ----- |
-| | ![Screenshot 2022-07-27 at 16 38 41](https://user-images.githubusercontent.com/186112/181275933-3b712c54-1c6f-4578-8a25-659052cde175.png)|
+| Before | After |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
+| | ![Screenshot 2022-07-27 at 16 38 41](https://user-images.githubusercontent.com/186112/181275933-3b712c54-1c6f-4578-8a25-659052cde175.png) |
### All Products block: Migrate to block.json ([6754](https://github.com/woocommerce/woocommerce-blocks/pull/6754))
@@ -97,10 +97,9 @@ Test that there are no regressions compared with the previous `Product Best Sell
3. Make sure all matching products appear on the list.
4. Make sure all items on the list preserve their original case.
-
-| Before | After |
-| ------ | ----- |
-| | ![Screenshot 2022-06-11 at 21 16 42](https://user-images.githubusercontent.com/1847066/173202019-aa3659e5-0dd4-454b-95bd-f2ead03ee40d.png) |
+| Before | After |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+| | ![Screenshot 2022-06-11 at 21 16 42](https://user-images.githubusercontent.com/1847066/173202019-aa3659e5-0dd4-454b-95bd-f2ead03ee40d.png) |
## Feature plugin
@@ -131,8 +130,8 @@ Test that there are no regressions compared with the previous `Product Best Sell
5. Go the checkout page and look at the shipping options, ensure there is a title for each one.
6. Disable the plugin and reload the Checkout Block, ensure the shipping section still looks OK.
-| Before | After |
-| ------ | ----- |
+| Before | After |
+| ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| | |
### Fix missing translations in inspector ([6737](https://github.com/woocommerce/woocommerce-blocks/pull/6737))
@@ -149,7 +148,6 @@ Test that there are no regressions compared with the previous `Product Best Sell
[We're hiring!](https://woocommerce.com/careers/) Come work with us!
-🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/810.md)
+🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/820.md)
-
diff --git a/docs/internal-developers/testing/releases/821.md b/docs/internal-developers/testing/releases/821.md
index bd77494dd..3fbc57eee 100644
--- a/docs/internal-developers/testing/releases/821.md
+++ b/docs/internal-developers/testing/releases/821.md
@@ -7,12 +7,12 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
### Ensure onChange is set for radio buttons in `SavedPaymentMethodOptions` ([6825](https://github.com/woocommerce/woocommerce-blocks/pull/6825))
1. Install Stripe, set it up so you can use it at Checkout.
-2. Add items to your cart and go to checkout. Add a credit/debit card via stripe and choose `Save payment information to my account for future purchases.`
-3. Check out. Repeat step 2 once more with a different card number. **Ensure the new card you use ends in four different numbers than the first one!** You can see test cards here:
-4. Add items to your cart and go to checkout a third time. This time ensure you can switch between saved cards.
-
-5. Check out successfully, and then go to the back end of your site. Go to the orders you made (WooCommerce -> Orders) and for each order check the payment method used (you'll need to follow this through to Stripe), and ensure the card number used matches the one you chose in the Checkout block. (Click the link on the order page)
-
+2. Add items to your cart and go to checkout. Add a credit/debit card via stripe and choose `Save payment information to my account for future purchases.`
+3. Check out. Repeat step 2 once more with a different card number. **Ensure the new card you use ends in four different numbers than the first one!** You can see test cards here:
+4. Add items to your cart and go to checkout a third time. This time ensure you can switch between saved cards.
+
+5. Check out successfully, and then go to the back end of your site. Go to the orders you made (WooCommerce -> Orders) and for each order check the payment method used (you'll need to follow this through to Stripe), and ensure the card number used matches the one you chose in the Checkout block. (Click the link on the order page)
+
@@ -20,7 +20,6 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.
[We're hiring!](https://woocommerce.com/careers/) Come work with us!
-🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/810.md)
+🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/821.md)
-
diff --git a/docs/internal-developers/testing/releases/830.md b/docs/internal-developers/testing/releases/830.md
new file mode 100644
index 000000000..fe469c83d
--- /dev/null
+++ b/docs/internal-developers/testing/releases/830.md
@@ -0,0 +1,124 @@
+# Testing notes and ZIP for release 8.3.0
+
+Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/9350354/woocommerce-gutenberg-products-block.zip)
+
+## Feature plugin and package inclusion in WooCommerce
+
+### Enable the Cart and Checkout blocks when WooCommerce Blocks is bundled in WooCommerce Core. ([6805](https://github.com/woocommerce/woocommerce-blocks/pull/6805))
+
+**Cart Block**:
+
+1. In the Cart Block in the editor, ensure the shipping calculator is enabled.
+2. Enable coupons on your site (WooCommerce -> Settings -> General -> Enable the use of coupon codes) and add one.
+3. Add two shipping methods for different locations, e.g. two for USA and two for UK.
+4. Do not add items to your cart.
+5. Go to the Cart Block and ensure the empty cart is displayed.
+6. Add items to your cart and revisit the Cart Block.
+7. Enter your address in the shipping calculator, ensure the correct shipping prices are displayed based on your location.
+8. Enter a coupon and ensure it works, and the price is modified accordingly.
+9. Modify the quantities of items in your cart, ensure it works and the prices update properly.
+10. If you have express payments enabled and working, try checking out from the Cart Block using GPay or Apple pay.
+11. If you don't, hit proceed to checkout and ensure it works correctly.
+
+**Checkout Block**:
+
+1. Go to WooCommerce -> Settings -> Accounts & Privacy and enable ` Allow customers to create an account during checkout` and `Allow customers to log into an existing account during checkout`.
+2. Go to Checkout Block editor, select contact information block and enable `Allow shoppers to sign up for a user account during checkout`.
+3. Enable the Stripe payment method, COD, and cheque.
+4. Log out of the site then add items to your cart and go to the Checkout Block.
+5. Check the `create account` box when entering your details.
+6. Remove the coupon added in the Cart testing steps, and try re-adding it.
+7. Change shipping methods and ensure the prices update.
+8. Change address, ensure shipping prices update when the country changes.
+9. Leave some fields empty on the address form, ensure you get an error.
+10. Re-fill them and enter an invalid ZIP code. (Set country to UK and enter 234345 as the Postcode). Ensure you see an error at the top of the block.
+11. Correct the error (A valid one is `SW19 1AA` if in UK).
+12. Check out and ensure it works and the order is logged correctly.
+13. Ensure you received emails relating to your order (if using Local WP you can go to your site -> tools -> mailhog to check this).
+
+### Refactor Product Categories block to use block.json. ([6875](https://github.com/woocommerce/woocommerce-blocks/pull/6875))
+
+**WooCommerce Blocks**:
+
+1. Add Product Categories List block as a widget (Appearance → Widgets)
+2. Open block settings
+3. Test block controls, save, and review if it still renders correctly in the frontend
+
+**WPCOM**:
+
+1. Add Product Categories List block as a widget (Appearance → Widgets)
+2. Open block settings
+3. Open Advanced and click on "Add new rule" under Visibility
+
+### Add feedback box to the Cart & Checkout Inner Blocks in the inspector. ([6881](https://github.com/woocommerce/woocommerce-blocks/pull/6881))
+
+1. Go to the Cart and Checkout editor pages
+2. Select the Block and each of its inner blocks. You should notice the feedback box in the inspector.
+
+![image](https://user-images.githubusercontent.com/14235870/183031149-73a4bb4b-975a-4c9e-a82f-9241a61beb8a.png)
+
+### Add notice to Cart and Checkout blocks' inspector controls which links to the list of compatible plugins. ([6869](https://github.com/woocommerce/woocommerce-blocks/pull/6869))
+
+1. Go to the editor, insert the Checkout block.
+2. Select it, verify you see the notice. Click through each and every inner block and ensure the notice displays for it.
+3. Dismiss the notice, click back through the inner blocks and ensure the notice is gone. Reload the page, ensure the notice is still gone.
+4. Go to the editor, insert the Cart block.
+5. Select it, verify you see the notice. Click through each and every inner block and ensure the notice displays for it.
+6. Dismiss the notice, click back through the inner blocks and ensure the notice is gone. Reload the page, ensure the notice is still gone.
+7. Clear local storage again.
+8. Go back to the Cart and Checkout blocks and ensure the notice is back.
+9. Create a new page. Add the Checkout Block. Select it and verify the sidebar contains the default warning:
+ .
+Verify the wording says **checkout**.
+10. Add the Cart Block, ensure the same notice appears but ensure it says **cart**.
+
+### Add the ability to register patterns by adding them under the "patterns" folder and add the new "WooCommerce Filters" pattern. ([6861](https://github.com/woocommerce/woocommerce-blocks/pull/6861))
+
+1. Create a new page with the `All Products` block.
+2. Open the block inserter, go to the patterns tab, and select the WooCommerce category from the dropdown
+3. Make sure you see a pattern under that category named: `WooCommerce Filters`
+4. Click on it to insert it on the page.
+5. Check that all 4 filter blocks (by attribute, price, stock, and active filters) are added.
+6. Complete the filter by attribute by selecting one of them.
+7. Save the page and make sure all the filters are rendered on the front-end.
+
+### Override the description to prevent infinite loop. ([6849](https://github.com/woocommerce/woocommerce-blocks/pull/6849))
+
+1. Make sure you are using a block theme (ie: Twenty Twenty Two).
+2. Go to Appearance > Editor > Templates.
+3. Click on Add New and select Single Item: Product.
+4. Select any product from the list (ie: Hoodie).
+5. In the template, add the Hand-picked Products block and select the same product.
+6. Visit that product page in the frontend and notice the correct product is selected.
+
+### Update billing address when shipping address gets change in shipping calculator at Cart block. ([6823](https://github.com/woocommerce/woocommerce-blocks/pull/6823))
+
+1. Add a product to the cart and go to the Cart block.
+2. Add a new address with a valid zip code in the Shipping calculator, different from what you already used.
+3. Click on the Update button and wait for the update.
+4. Proceed to Checkout.
+5. In the Checkout block, see the new address for shipping being added to the Shipping address.
+6. Uncheck the checkbox for `Use same address for billing`.
+7. Look at the Billing address form and confirm it has the same address which was selected in the shipping calculator.
+
+## Feature plugin
+
+### Fix: Add font-weight controls to the Mini Cart block text. ([6760](https://github.com/woocommerce/woocommerce-blocks/pull/6760))
+
+1. Make sure you have a blocks theme active (like Twenty Twenty-Two).
+2. Navigate to Appearance > Editor (Beta) and add a Mini Cart block somewhere in your site.
+3. In the editor, select the Mini Cart block and, in the block settings, choose Font Weight under the Typography section.
+4. Adjust the font weight to something other than the Default.
+5. Confirm changes are present in the editor.
+6. Save changes and preview the frontend to confirm the changes have persisted.
+
+
+
+---
+
+[We're hiring!](https://woocommerce.com/careers/) Come work with us!
+
+🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/830.md)
+
+
+
diff --git a/docs/internal-developers/testing/releases/831.md b/docs/internal-developers/testing/releases/831.md
new file mode 100644
index 000000000..b2a269d90
--- /dev/null
+++ b/docs/internal-developers/testing/releases/831.md
@@ -0,0 +1,28 @@
+# Testing notes and ZIP for release 8.3.1
+
+Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/9358719/woocommerce-gutenberg-products-block.zip)
+
+## Feature plugin and package inclusion in WooCommerce
+
+### Prevent unnecessarily showing the item names in a shipping package if it's the only package. ([6899](https://github.com/woocommerce/woocommerce-blocks/pull/6899))
+
+1. Set up shipping zones so you have multiple methods for your country (flat rate and free is fine) and a single method for a different country.
+2. Install the ["Multiple Packages for WooCommerce" plugin](https://wordpress.org/plugins/multiple-packages-for-woocommerce/)
+3. Navigate to WooCommerce -> Settings -> Multiple Packages
+4. Adjust the settings to work based on "Per Product"
+5. Add two items that require shipping to your cart.
+6. Go to the Cart block. Ensure you see the item name listed under each package.
+7. Remove one of the items, ensure the list of shipping options updates and does not include the item name.
+8. Change your address to one that only has a single shipping method. Repeat steps 5-7.
+9. Repeat 5-7 on the Checkout block too.
+
+
+
+---
+
+[We're hiring!](https://woocommerce.com/careers/) Come work with us!
+
+🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/831.md)
+
+
+
diff --git a/docs/internal-developers/testing/releases/840.md b/docs/internal-developers/testing/releases/840.md
new file mode 100644
index 000000000..26a35ec5f
--- /dev/null
+++ b/docs/internal-developers/testing/releases/840.md
@@ -0,0 +1,139 @@
+# Testing notes and ZIP for release 8.4.0
+
+Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/9444105/woocommerce-gutenberg-products-block.zip)
+
+## Feature plugin and package inclusion in WooCommerce
+
+### Update the filter `Apply` buttons to match the new designs. ([6958](https://github.com/woocommerce/woocommerce-blocks/pull/6958))
+
+1. Create a new page and add the `All Products` block and the filter pattern containing all filter blocks.
+2. Save it and check the buttons look like the `After` screenshot on the editor and the frontend.
+
+| Before | After |
+| ------ | ----- |
+| | |
+
+### Update the design of the Filter Products by Attribute block. ([6920](https://github.com/woocommerce/woocommerce-blocks/pull/6920))
+
+1. Add the `Filter by Attribute` block to a page.
+2. Check that it looks like the new design in the editor and the front-end.
+3. Check that the `Reset` button appears when a checkbox is checked.
+4. Edit the page and change the Display Style to dropdown.
+5. Check that it looks like the new design in the editor and the front-end (it won't look exactly like the design, check [this conversation](p1660817888642199-slack-C02SGH7JBGS) for more context)
+
+| Before | After |
+| ------ | ----- |
+| | |
+| | |
+| | |
+
+### Update the design of the Filter by Attribute block settings panel. ([6912](https://github.com/woocommerce/woocommerce-blocks/pull/6912))
+
+1. Add the `Filter by Attribute` block to a page.
+2. Check the copy and the design matches with the new design.
+3. Check no regression has happened.
+
+### Terms and conditions, and Privacy policy links open in a new tab by default. ([6908](https://github.com/woocommerce/woocommerce-blocks/pull/6908))
+
+1. Insert Checkout page and save the page.
+2. On frontend, click on the terms or privacy links in the checkout block.
+3. They should open in a new tab.
+
+### Layout updates to the Active Filters block. ([6905](https://github.com/woocommerce/woocommerce-blocks/pull/6905))
+
+1. Add the Active Filters block alongside some other Filters blocks.
+2. Apply some filters to the page.
+3. Confirm the layout matches the **After** screenshot above.
+4. Confirm the **Remove Filter** buttons for each active filter have a hover state of an alternate shade of grey - also confirm they function as expected.
+
+| Before | After |
+| ------ | ----- |
+| | |
+| | |
+| | |
+
+### Update the design of the Filter Products by Stock block. ([6883](https://github.com/woocommerce/woocommerce-blocks/pull/6883))
+
+1. Add the Filter by Stock component to a page using the All Products block, and also a block template.
+2. Check that the control panel for this block looks like the design (minus Typography)
+3. On both the page and the template frontends select a checkbox and observe that it looks as it should do with the design.
+4. Check that a "Reset" button appears and clicking this resets the filter again.
+5. Now go to your Edit Page & Edit Template pages and enable "'Apply filters' button".
+6. On the frontends again, re-select your filter options and check that they are not applied immediately until you click "Apply"
+7. Check that when this block is used with the PHP template & the All Products block that regardless of whether the "Apply Filters" button is active, that clicking "Reset" immediately clears the selected filter options
+
+| Before | After |
+| ------ | ----- |
+| | |
+
+### Update the design of the Filter Products by Price block. ([6877](https://github.com/woocommerce/woocommerce-blocks/pull/6877))
+
+1. Add `Filter Products by Price` block to a page.
+2. Verify that the `Inline input fields` only shows when the `Price Range` is Editable.
+3. Toggle Inline input fields, see the block in the editor updates accordingly.
+4. Toggle Filter button, see the Reset and Apply button.
+5. Add the All Products block then save the page.
+6. On the front end, see the new style applied as in the editor.
+7. Change the price using the slider then click the Apply button.
+8. See the filter works as expected.
+9. Click on the Reset button, see the price filter is reset. (Even if the filter button is enabled, clicking on the reset button should reset the filter query).
+10. Tested again with PHP templates, ensure no regression.
+
+
+
+### Allow making the Cart/Checkout block page the default one from within the editor. ([6867](https://github.com/woocommerce/woocommerce-blocks/pull/6867))
+
+To test this feature you need the latest trunk of WooCommerce, or WooCommerce 6.9.0. For older versions of WC (pre 6.9.0), the notice would show the old text:
+
+
+
+1. Make sure you have a Cart and Checkout pages in WooCommerce -> Settings -> Advanced.
+2. Those pages urls can be `/cart` and `/checkout`.
+3. Open a new page, give it a title, insert Cart block.
+4. Select Cart block, you should see the notice, select an inner block, you should see the notice as well.
+5. Click on the notice, it will load for a couple of seconds, once it's green, visit your new page.
+6. Make sure it's on the previous url, so `/cart`.
+7. Go back to settings, make sure your new page is that value there.
+8. Do the same thing for Checkout block.
+9. Open a new page, add Cart block, save the page and publish it.
+10. Select the block or one of its inner blocks, start the flow again.
+11. It should work, confirm that by visiting the frontend.
+
+
+
+
+### Register product search as a core/search variation when available. ([6191](https://github.com/woocommerce/woocommerce-blocks/pull/6191))
+
+1. Ensure the Gutenberg version is ≥ 13.4 and it is deactivated.
+2. With a block theme (2022 for example), add the Product Search block to the header.
+3. See the Product Search is the independent block (as it is in `trunk`), not a variation of the Search block. See the block is editable in the editor and working as expected on the front end.
+4. Activate Gutenberg.
+5. On the front end, see the block is still working as expected and is still a WC block (notice the classes, and search icon).
+6. Edit the header, see the Deprecation notice, and a call to action button to upgrade the search block to search variation.
+7. Click on the CTA button to see if the block is converted to WC variation of the core search block.
+8. Save and see the block functions flawlessly on the front end.
+9. Edit the header again, try adding the Product Search block, only variation is available in the inserter. The legacy can't be found and inserted from the inserter.
+
+
+
+
+### Fixed a bug with a class name deriving from a translatable string. ([6914](https://github.com/woocommerce/woocommerce-blocks/pull/6914))
+
+1. Add an item to your cart that has multiple variants. E.g. Hoodie (Blue, Logo)
+2. Go to the Cart Block
+3. Inspect the text for one of the variants (e.g. Colour: Blue)
+4. Make sure there is a class called `wc-block-components-product-details__item` on the `` element. This should be a child of ``
+5. Change the language of your store
+6. Refresh the cart page
+7. Repeat steps 3 and 4. You should see the same result.
+
+
+
+---
+
+[We're hiring!](https://woocommerce.com/careers/) Come work with us!
+
+🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/840.md)
+
+
+
diff --git a/docs/internal-developers/testing/releases/850.md b/docs/internal-developers/testing/releases/850.md
new file mode 100644
index 000000000..51bb4daf6
--- /dev/null
+++ b/docs/internal-developers/testing/releases/850.md
@@ -0,0 +1,167 @@
+# Testing notes and ZIP for release 8.5.0
+
+Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/9554999/woocommerce-gutenberg-products-block.zip)
+
+## Feature plugin and package inclusion in WooCommerce
+
+### Improve the alignment of the Remove button in the Filter by Attribute block. ([7088](https://github.com/woocommerce/woocommerce-blocks/pull/7088))
+
+1. Create a page with the filter blocks and the All Products block. Make sure to add two Filter by Attribute blocks with display style set to dropdown. One allowing single selection and the other one allowing multiple selection.
+2. Add some attribute filters.
+3. Verify the remove icons are properly aligned.
+4. Try with different themes (e.g. Storefront and Twenty Twenty Two).
+
+| Before | After |
+| ------ | ----- |
+| | |
+
+### Enhance the display of the Active filters block changing the sizes of the text. ([7087](https://github.com/woocommerce/woocommerce-blocks/pull/7087))
+
+1. Create a page with the filter blocks and the All Products block.
+2. In the frontend add some filters.
+3. Verify the active filters texts have a size which doesn't seem broken compared to other filter blocks.
+4. Try changing the display style to chips and verify the same.
+5. Try with different themes (e.g. Storefront and Twenty Twenty Two).
+
+#### List
+
+| Before | After |
+| ------ | ----- |
+| | |
+
+#### Chips
+
+| Before | After |
+| ------ | ----- |
+| | |
+
+### Add loading placeholders to Active Filters block. ([7083](https://github.com/woocommerce/woocommerce-blocks/pull/7083))
+
+1. Enable TT2 theme. Create a new page with an `All Products` block and a `Active Filters` block with other filter blocks. Save the page.
+2. Open the page in the frontend and check that the `Active Filters` block shows like the screenshot while loading.
+3. Try different combinations of settings (show the `Apply` button, Chips vs List etc) and make sure the loading state makes sense and there are no regressions.
+4. Repeat steps 1-3 with the Storefront theme.
+
+| List | Chips |
+| ------ | ----- |
+|![Screenshot 2022-09-08 at 11 17 04](https://user-images.githubusercontent.com/8639742/189098324-940a2a66-9eb2-4025-9d6f-a770bb20c3a4.png) | ![Screenshot 2022-09-08 at 11 16 50](https://user-images.githubusercontent.com/8639742/189098368-f61594ff-6930-4b44-88df-8f5d06cacd2a.png) |
+
+
+### Featured Item Blocks: Remove inline default color so that custom colors from Global Styles are applied correctly. ([7036](https://github.com/woocommerce/woocommerce-blocks/pull/7036))
+
+1. Ensure you have a block theme active (i.e., Twenty Twenty-Two).
+2. Go to Appearance > Editor (Beta).
+3. Click on the Global Styles panel and select the Blocks section.
+4. Scroll down to the Featured Product or Featured Category block and edit the text and the background Global Styles.
+5. Confirm that both the text and background colors reflect the changes from the sidebar controls.
+
+| Before | After |
+| ------ | ----- |
+| ![CleanShot 2022-09-01 at 14 31 05](https://user-images.githubusercontent.com/481776/187987970-e86aebfd-f7ae-4eda-a6fb-622ef53f5899.png) | ![CleanShot 2022-09-01 at 14 35 45](https://user-images.githubusercontent.com/481776/187988035-f413cc44-3f39-48bb-bf68-597bb5d81394.png) |
+
+### Update "remove filter" icon on the Active Filters block to use Icon component in both layouts. ([7035](https://github.com/woocommerce/woocommerce-blocks/pull/7035))
+
+1. Add the Active Filters block, in List view alongside some other Filters blocks.
+3. Apply some filters to the page.
+4. Confirm the remove button matches the After screenshot above. Also confirm that the remove button is visually consistent with the remove button in Chips view.
+5. Confirm the remove buttons for each active filter have a hover state of an alternate shade of grey - also confirm they function as expected.
+6. Confirm no JS or PHP errors.
+
+| Before | After |
+| ------ | ----- |
+| ![CleanShot 2022-08-31 at 16 48 11](https://user-images.githubusercontent.com/481776/187812070-f2d2e861-8611-4fa9-9125-21e574635043.png) | ![CleanShot 2022-08-31 at 16 38 34](https://user-images.githubusercontent.com/481776/187812115-ac898c70-1b26-4f3f-ada3-fca71e170cf2.png) |
+
+### Update `filter by price` skeleton design. ([6997](https://github.com/woocommerce/woocommerce-blocks/pull/6997))
+
+1. Enable TT2 theme. Create a new page with an `All Products` block and a `Filter by price` block. Save the page.
+2. Open the page in the frontend and check that the `Filter by price` block shows like the screenshot while loading.
+3. Try different combinations of settings (show the `Apply` button, make the inputs inline, and make the range price not editable, etc) and make sure the loading state makes sense and there are no regressions.
+4. Repeat steps 1-3 with the Storefront theme.
+
+| Block | Loading |
+| ------ | ----- |
+| | |
+| | |
+
+### Update `filter by attribute` skeleton design. ([6990](https://github.com/woocommerce/woocommerce-blocks/pull/6990))
+
+1. Enable TT2 theme. Create a new page with an `All Products` block and a `Filter by attribute` block. Save the page.
+2. Open the page in the frontend and check that the `Filter by attribute` block shows like the screenshot while loading.
+3. Try different combinations of the block settings (dropdown, show apply button, etc) and make sure the loading state makes sense and there are no regressions.
+4. Repeat steps 1-3 with the Storefront theme.
+
+| Block | Loading |
+| ------ | ----- |
+| | |
+
+### Fix checkbox label when count is zero. ([7073](https://github.com/woocommerce/woocommerce-blocks/pull/7073))
+
+1. Make sure you don't have any product with `On backorder` status.
+2. Create a page with an `All products` block and a `Filter by stock` block.
+3. Save it, go to the page and append this param to the URL `?filter_stock_status=onbackorder`.
+4. Check that the on backorder label shows `On backorder (0)`.
+
+| Before | After |
+| ------ | ----- |
+| | |
+
+### Fix incompatible Classic Template block notice in the Editor for Woo specific templates. ([7033](https://github.com/woocommerce/woocommerce-blocks/pull/7033))
+
+1. Activate Gutenberg plugin.
+2. Go to Appearance > Editor > Add New to add a new template.
+3. Click "Single Item: Product" template and create a product specific template
+4. The block should render the placeholder for the Single Product.
+5. Make changes to this template, and save them. Make sure these are represented on the frontend. Then clear the customizations and do the same.
+6. Complete steps 3-5 again but instead create Product Category and Product Tag templates.
+
+### Update - remove __experimentalDuotone from Featured Product and Featured Category blocks. ([7000](https://github.com/woocommerce/woocommerce-blocks/pull/7000))
+
+1. Install a block theme (e.g., Twenty Twenty Two).
+2. Open Appearance > Editor (beta).
+3. Add a Featured Product and a Featured Category block.
+4. Customize the global styles for those blocks (click on the Styles button on the top toolbar and then the Blocks section towards the bottom - _see screenshots below_).
+5. Add some style adjustments and confirm they are reflected in the editor.
+6. Save your changes and view a page driven by the modified Template on the front-end.
+7. Confirm the adjusted styles are rendered to the front-end, as expected.
+
+| Global Styles Panel | Blocks Settings |
+| ------ | ----- |
+| ![CleanShot 2022-08-26 at 22 05 58](https://user-images.githubusercontent.com/481776/187010061-8c68fcb6-14f5-4509-99ce-2ad3bff43369.png) | ![CleanShot 2022-08-26 at 22 03 00](https://user-images.githubusercontent.com/481776/187009972-4c0bc853-4202-457e-8331-0f5b15d9f5e6.png) |
+
+_**Note:** the text color settings for this block are driven by inline styles that are added based on the Overlay and Color setting defaults. I imagine we want to keep those defaults in place so. To adjust this in the Editor, edit/remove those default settings on the block directly._
+
+
+### Add Apply button placeholders to filters and adjust title margins. ([7077](https://github.com/woocommerce/woocommerce-blocks/pull/7077))
+
+1. Create a page with the filter blocks and the `All Products` block. Make sure to enable the `Show Apply filter button` setting on all of them.
+2. Save and open the page on the front-end and make sure the placeholders show the apply button while loading and they look like the screenshot.
+
+| Before | After |
+| ------ | ----- |
+| | |
+
+### Fix pills in the Filter by Attribute block dropdown overlapping with the chevron. ([7039](https://github.com/woocommerce/woocommerce-blocks/pull/7039))
+
+1. Add the `Filter by Attribute` block and the `All Products` block to a page.
+2. Set the `Filter by Attribute` block display to dropdown and allow selecting multiple options.
+3. Play around with the window size and the options you select, and make sure the pills inside the input don't overlap the chevron.
+
+| Before | After |
+| ------ | ----- |
+| | |
+
+### Fix stock filter placeholder. ([7009](https://github.com/woocommerce/woocommerce-blocks/pull/7009))
+
+1. Create a new page with a 30/70 columns block, insert the `Filter by stock` block in the 30% column and the `All Products` block in the 70% columns. Save the page.
+2. Open the page in the frontend and check that the `Filter by stock` block shows like the screenshot above while loading.
+3. Remove all products in the store and refresh the page you created in step 1. Check that `Filter by stock` placeholder disappears if there are no products.
+
+| Before | After |
+| ------ | ----- |
+| | |
+| ![Screenshot 2022-08-30 at 12 06 52](https://user-images.githubusercontent.com/186112/187438707-ecafa77d-3915-4b78-8814-9f292d2e935f.png)| |
+
+
+
+
+
diff --git a/docs/internal-developers/testing/releases/README.md b/docs/internal-developers/testing/releases/README.md
index 9a00db51f..b065b3444 100644
--- a/docs/internal-developers/testing/releases/README.md
+++ b/docs/internal-developers/testing/releases/README.md
@@ -85,6 +85,10 @@ Every release includes specific testing instructions for new features and bug fi
- [8.1.0](./810.md)
- [8.2.0](./820.md)
- [8.2.1](./821.md)
+- [8.3.0](./830.md)
+- [8.3.1](./831.md)
+- [8.4.0](./840.md)
+- [8.5.0](./850.md)
@@ -95,4 +99,3 @@ Every release includes specific testing instructions for new features and bug fi
🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/README.md)
-
diff --git a/docs/internal-developers/translations/translation-loading.md b/docs/internal-developers/translations/translation-loading.md
index 60812cafa..d2d9b02eb 100644
--- a/docs/internal-developers/translations/translation-loading.md
+++ b/docs/internal-developers/translations/translation-loading.md
@@ -76,7 +76,7 @@ msgstr ""
#: assets/js/blocks/featured-product/block.json
#: build/featured-product/block.json
msgctxt "block description"
-msgid "Visually highlight a product or variation and encourage prompt action."
+msgid "Highlight a product or variation."
msgstr "Ein Produkt oder eine Variante visuell hervorheben und zum sofortigen Handeln auffordern."
#: assets/js/blocks/featured-product/block.json
diff --git a/docs/internal-developers/translations/translation-management.md b/docs/internal-developers/translations/translation-management.md
index e33a17d8f..f15bb7155 100644
--- a/docs/internal-developers/translations/translation-management.md
+++ b/docs/internal-developers/translations/translation-management.md
@@ -1,6 +1,6 @@
# Translation management
-As mentioned in [Translation basics](docs/translations/translation-basics.md), all translations are managed using [GlotPress](https://wordpress.org/plugins/glotpress/). The translations of the WooCommerce Blocks plugin can be found on .
+As mentioned in [Translation basics](../../internal-developers/translations/translation-basics.md), all translations are managed using [GlotPress](https://wordpress.org/plugins/glotpress/). The translations of the WooCommerce Blocks plugin can be found on .
## Roles
diff --git a/docs/internal-developers/translations/translations-in-FSE-templates.md b/docs/internal-developers/translations/translations-in-FSE-templates.md
index 97c83f303..ca0872474 100644
--- a/docs/internal-developers/translations/translations-in-FSE-templates.md
+++ b/docs/internal-developers/translations/translations-in-FSE-templates.md
@@ -1,6 +1,6 @@
# Translations in FSE templates
-To make the WooCommerce Blocks plugin inclusive, all user-facing strings should be translatable. Managing [Translations in PHP files](docs/translations/translations-in-PHP-files.md) and [Translations in JS/TS files](docs/translations/translations-in-JS-TS-files.md) is simple as PHP and JS/TS are languages are programming languages which contain translation function. In comparison, FSE-templates are using plain HTML. As HTML is a markup language and not a programming language, translation functions such as `__()` and `_n()` are not available in HTML. Therefore, translations within FSE-templates require a different approach.
+To make the WooCommerce Blocks plugin inclusive, all user-facing strings should be translatable. Managing [Translations in PHP files](../../internal-developers/translations/translations-in-PHP-files.md) and [Translations in JS/TS files](../../internal-developers/translations/translations-in-JS-TS-files.md) is simple as PHP and JS/TS are languages are programming languages which contain translation function. In comparison, FSE-templates are using plain HTML. As HTML is a markup language and not a programming language, translation functions such as `__()` and `_n()` are not available in HTML. Therefore, translations within FSE-templates require a different approach.
Let's take a look at `templates/parts/mini-cart.html`:
@@ -83,7 +83,7 @@ public function register_empty_cart_message_block_pattern() {
register_block_pattern(
'woocommerce/mini-cart-empty-cart-message',
array(
- 'title' => __( 'Mini Cart Empty Cart Message', 'woo-gutenberg-products-block' ),
+ 'title' => __( 'Empty Mini Cart Message', 'woo-gutenberg-products-block' ),
'inserter' => false,
'content' => '' . __( 'Your cart is currently empty!', 'woo-gutenberg-products-block' ) . '
',
)
diff --git a/docs/third-party-developers/extensibility/README.md b/docs/third-party-developers/extensibility/README.md
index c831ffecd..9f1ccb293 100644
--- a/docs/third-party-developers/extensibility/README.md
+++ b/docs/third-party-developers/extensibility/README.md
@@ -2,24 +2,24 @@
## Table of Contents
-- [Hooks (actions and filters)](#hooks-actions-and-filters)
-- [REST API](#rest-api)
-- [Checkout Payment Methods](#checkout-payment-methods)
-- [Checkout Block](#checkout-block)
+- [Hooks (actions and filters)](#hooks-actions-and-filters)
+- [REST API](#rest-api)
+- [Checkout Payment Methods](#checkout-payment-methods)
+- [Checkout Block](#checkout-block)
These documents are all dealing with extensibility in the various WooCommerce Blocks.
## Hooks (actions and filters)
-| Document | Description |
-| ----------------------- | ------------------------------------------------------- |
+| Document | Description |
+| ----------------------------- | ------------------------------------------------------- |
| [Actions](./hooks/actions.md) | Documentation covering action hooks on the server side. |
| [Filters](./hooks/filters.md) | Documentation covering filter hooks on the server side. |
## REST API
-| Document | Description |
-| ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
+| Document | Description |
+| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [Exposing your data in the Store API.](./rest-api/extend-rest-api-add-data.md) | Explains how you can add additional data to Store API endpoints. |
| [Available endpoints to extend with ExtendSchema](./rest-api/available-endpoints-to-extend.md) | A list of all available endpoints to extend. |
| [Adding an endpoint to ExtendSchema.](./rest-api/extend-rest-api-new-endpoint.md) | A step by step process for contributors to expose a new endpoint via ExtendSchema. |
@@ -27,23 +27,23 @@ These documents are all dealing with extensibility in the various WooCommerce Bl
## Checkout Payment Methods
-| Document | Description |
-| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
+| Document | Description |
+| -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| [Checkout Flow and Events](./checkout-payment-methods/checkout-flow-and-events.md) | All about the checkout flow in the checkout block and the various emitted events that can be subscribed to. |
| [Payment Method Integration](./checkout-payment-methods/payment-method-integration.md) | Information about implementing payment methods. |
| [Filtering Payment Methods](./checkout-payment-methods/filtering-payment-methods.md) | Information about filtering the payment methods available in the Checkout Block. |
## Checkout Block
-In addition to the reference material below, [please see the `block-checkout` package documentation](../../packages/checkout/README.md) which is used to extend checkout with Filters, Slot Fills, and Inner Blocks.
+In addition to the reference material below, [please see the `block-checkout` package documentation](../../../packages/checkout/README.md) which is used to extend checkout with Filters, Slot Fills, and Inner Blocks.
| Document | Description |
| ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
-| [IntegrationInterface](./checkout-block/integration-interface.md) | The `IntegrationInterface` class and how to use it to register scripts, styles, and data with WooCommerce Blocks. |
-| [Available Filters](./checkout-block/available-filters.md) | All about the filters that you may use to change values of certain elements of WooCommerce Blocks. |
-| [Slots and Fills](./checkout-block/slot-fills.md) | Explains Slot Fills and how to use them to render your own components in Cart and Checkout. |
-| [Available Slot Fills](./checkout-block/available-slot-fills.md) | Available Slots that you can use and their positions in Cart and Checkout. |
-| [DOM Events](./checkout-block/dom-events.md) | A list of DOM Events used by some blocks to communicate between them and with other parts of WooCommerce. |
+| [IntegrationInterface](./checkout-block/integration-interface.md) | The `IntegrationInterface` class and how to use it to register scripts, styles, and data with WooCommerce Blocks. |
+| [Available Filters](./checkout-block/available-filters.md) | All about the filters that you may use to change values of certain elements of WooCommerce Blocks. |
+| [Slots and Fills](./checkout-block/slot-fills.md) | Explains Slot Fills and how to use them to render your own components in Cart and Checkout. |
+| [Available Slot Fills](./checkout-block/available-slot-fills.md) | Available Slots that you can use and their positions in Cart and Checkout. |
+| [DOM Events](./checkout-block/dom-events.md) | A list of DOM Events used by some blocks to communicate between them and with other parts of WooCommerce. |
| [Filter Registry](../../../packages/checkout/filter-registry/README.md) | The filter registry allows callbacks to be registered to manipulate certain values. |
diff --git a/docs/third-party-developers/extensibility/checkout-block/available-filters.md b/docs/third-party-developers/extensibility/checkout-block/available-filters.md
index bf60fc758..001a89c1c 100644
--- a/docs/third-party-developers/extensibility/checkout-block/available-filters.md
+++ b/docs/third-party-developers/extensibility/checkout-block/available-filters.md
@@ -14,7 +14,7 @@
- [Hide a snackbar notice containing a certain string](#hide-a-snackbar-notice-containing-a-certain-string)
- [Troubleshooting](#troubleshooting)
-This document lists the filters that are currently available to extensions and offers usage information for each one of them. Information on registering filters can be found on the [Checkout - Filter Registry](../../packages/checkout/filter-registry/README.md) page.
+This document lists the filters that are currently available to extensions and offers usage information for each one of them. Information on registering filters can be found on the [Checkout - Filter Registry](../../../../packages/checkout/filter-registry/README.md) page.
## Cart Line Items
@@ -151,10 +151,7 @@ __experimentalRegisterCheckoutFilters( 'my-hypothetical-deposit-plugin', {
| Before | After |
| ------ | ----- |
-
-
-| ![Snackbar notices before](https://user-images.githubusercontent.com/5656702/117032889-cc56b200-acf9-11eb-9bf7-ae5f6a0b1538.png)
-| ![Snackbar notices after](https://user-images.githubusercontent.com/5656702/117033039-ec867100-acf9-11eb-95d5-50c06bf2923c.png) |
+| ![Snackbar notices before](https://user-images.githubusercontent.com/5656702/117032889-cc56b200-acf9-11eb-9bf7-ae5f6a0b1538.png) | ![Snackbar notices after](https://user-images.githubusercontent.com/5656702/117033039-ec867100-acf9-11eb-95d5-50c06bf2923c.png) |
## Changing the format of the item's single price
@@ -189,8 +186,6 @@ __experimentalRegisterCheckoutFilters( 'my-hypothetical-price-plugin', {
| Before | After |
| ------ | ----- |
-
-
| ![Changing the format of the item's single price before](https://user-images.githubusercontent.com/5656702/117035086-d5488300-acfb-11eb-9954-feb326916168.png) | ![Changing the format of the item's single price after](https://user-images.githubusercontent.com/5656702/117035616-70415d00-acfc-11eb-98d3-6c8096817e5b.png) |
## Change the name of a coupon
diff --git a/docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md b/docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md
index f0ce088a1..b4cc726f4 100644
--- a/docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md
+++ b/docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md
@@ -2,18 +2,18 @@
## Table of Contents
-- [ExperimentalOrderMeta](#experimentalordermeta)
- - [Passed parameters](#passed-parameters)
-- [ExperimentalOrderShippingPackages](#experimentalordershippingpackages)
- - [Passed parameters](#passed-parameters-1)
-- [ExperimentalDiscountsMeta](#experimentaldiscountsmeta)
- - [Passed paramters](#passed-paramters)
+- [ExperimentalOrderMeta](#experimentalordermeta)
+ - [Passed parameters](#passed-parameters)
+- [ExperimentalOrderShippingPackages](#experimentalordershippingpackages)
+ - [Passed parameters](#passed-parameters-1)
+- [ExperimentalDiscountsMeta](#experimentaldiscountsmeta)
+ - [Passed paramters](#passed-paramters)
This document presents the list of available Slots that you can use for adding your custom content (Fill).
-If you want to add a new SlotFill component, check the [Checkout - Slot Fill document](../../packages/checkout/slot/README.md). To read more about Slot and Fill, check the [Slot and Fill document](./slot-fills.md).
+If you want to add a new SlotFill component, check the [Checkout - Slot Fill document](../../../../packages/checkout/slot/README.md). To read more about Slot and Fill, check the [Slot and Fill document](./slot-fills.md).
-**Note About Naming:** Slots that are prefixed with `Experimental` are experimental and subject to change or remove. Once they graduate from the experimental stage, the naming would change and the `Experimental` prefix would be dropped. Check the [Feature Gating document](../blocks/feature-flags-and-experimental-interfaces.md) from more information.
+**Note About Naming:** Slots that are prefixed with `Experimental` are experimental and subject to change or remove. Once they graduate from the experimental stage, the naming would change and the `Experimental` prefix would be dropped. Check the [Feature Gating document](../../../internal-developers/blocks/feature-flags-and-experimental-interfaces.md) from more information.
## ExperimentalOrderMeta
diff --git a/docs/third-party-developers/extensibility/checkout-block/slot-fills.md b/docs/third-party-developers/extensibility/checkout-block/slot-fills.md
index ca58b301a..10a0525b0 100644
--- a/docs/third-party-developers/extensibility/checkout-block/slot-fills.md
+++ b/docs/third-party-developers/extensibility/checkout-block/slot-fills.md
@@ -2,15 +2,15 @@
## Table of Contents
-- [The problem](#the-problem)
-- [Solution](#solution)
-- [Basic Usage](#basic-usage)
-- [registerPlugin](#registerplugin)
-- [Requirements](#requirements)
+- [The problem](#the-problem)
+- [Solution](#solution)
+- [Basic Usage](#basic-usage)
+- [registerPlugin](#registerplugin)
+- [Requirements](#requirements)
## The problem
-You added custom data to the [Store API](./extend-rest-api-add-data.md). You changed several strings using [Checkout filters](./available-filters.md). Now you want to render your own components in specific places in the Cart and Checkout.
+You added custom data to the [Store API](../rest-api/extend-rest-api-add-data.md). You changed several strings using [Checkout filters](./available-filters.md). Now you want to render your own components in specific places in the Cart and Checkout.
## Solution
diff --git a/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md b/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md
index 3e772f4c5..c44667e47 100644
--- a/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md
+++ b/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md
@@ -1,10 +1,16 @@
# Checkout Flow and Events
-## Replaced classes
+To see the Checkout Flow and Events please consult the following document:
-| Removed | New class |
-| ----------------------------------- | ------------------------- |
-| `wc-block-components-checkout-form` | `wc-block-checkout__form` |
+[./docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md](../../../../docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md)
+
+---
+
+[We're hiring!](https://woocommerce.com/careers/) Come work with us!
+
+🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md)
+
+
diff --git a/docs/third-party-developers/extensibility/checkout-payment-methods/filtering-payment-methods.md b/docs/third-party-developers/extensibility/checkout-payment-methods/filtering-payment-methods.md
index a19e5fea0..ceba69605 100644
--- a/docs/third-party-developers/extensibility/checkout-payment-methods/filtering-payment-methods.md
+++ b/docs/third-party-developers/extensibility/checkout-payment-methods/filtering-payment-methods.md
@@ -2,20 +2,20 @@
## Table of Contents
-- [The problem](#the-problem)
- - [The solution](#the-solution)
- - [Importing](#importing)
- - [Aliased import](#aliased-import)
- - [`wc global`](#wc-global)
- - [Signature](#signature)
- - [Extension namespace collision](#extension-namespace-collision)
- - [Usage example](#usage-example)
- - [Callbacks registered for payment methods](#callbacks-registered-for-payment-methods)
-- [Filtering payment methods using requirements](#filtering-payment-methods-using-requirements)
- - [The problem](#the-problem-1)
- - [The solution](#the-solution-1)
- - [Basic usage](#basic-usage)
- - [Putting it all together](#putting-it-all-together)
+- [The problem](#the-problem)
+ - [The solution](#the-solution)
+ - [Importing](#importing)
+ - [Aliased import](#aliased-import)
+ - [`wc global`](#wc-global)
+ - [Signature](#signature)
+ - [Extension namespace collision](#extension-namespace-collision)
+ - [Usage example](#usage-example)
+ - [Callbacks registered for payment methods](#callbacks-registered-for-payment-methods)
+- [Filtering payment methods using requirements](#filtering-payment-methods-using-requirements)
+ - [The problem](#the-problem-1)
+ - [The solution](#the-solution-1)
+ - [Basic usage](#basic-usage)
+ - [Putting it all together](#putting-it-all-together)
## The problem
@@ -97,7 +97,7 @@ interface CanMakePaymentArgument {
}
```
-If you need data that is not available in the parameter received by the callback you can consider [exposing your data in the Store API](extend-rest-api-add-data.md).
+If you need data that is not available in the parameter received by the callback you can consider [exposing your data in the Store API](../rest-api/extend-rest-api-add-data.md).
## Filtering payment methods using requirements
@@ -113,7 +113,7 @@ To allow the shopper to check out without entering payment details, but still re
Using the `supports` configuration of payment methods it is possible to prevent other payment methods (such as credit card, PayPal etc.) from being used to check out, and only allow the one your extension has added to appear in the Checkout block.
-For more information on how to register a payment method with WooCommerce Blocks, please refer to the [Payment method integration](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/extensibility/payment-method-integration.md) documentation.
+For more information on how to register a payment method with WooCommerce Blocks, please refer to the [Payment method integration](../checkout-payment-methods/payment-method-integration.md) documentation.
### Basic usage
diff --git a/docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md b/docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md
index a031f7309..572da21e3 100644
--- a/docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md
+++ b/docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md
@@ -5,15 +5,15 @@ The checkout block has an API interface for payment methods to integrate that co
## Table of Contents
- [Client Side integration](#client-side-integration)
- - [Express payment methods - `registerExpressPaymentMethod( options )`](#express-payment-methods---registerexpresspaymentmethod-options-)
- - [`name` (required)](#name-required)
- - [`content` (required)](#content-required)
- - [`edit` (required)](#edit-required)
- - [`canMakePayment` (required):](#canmakepayment-required)
- - [`paymentMethodId`](#paymentmethodid)
- - [`supports:features`](#supportsfeatures)
- - [Payment Methods - `registerPaymentMethod( options )`](#payment-methods---registerpaymentmethod-options-)
- - [Props Fed to Payment Method Nodes](#props-fed-to-payment-method-nodes)
+ - [Express payment methods - `registerExpressPaymentMethod( options )`](#express-payment-methods---registerexpresspaymentmethod-options-)
+ - [`name` (required)](#name-required)
+ - [`content` (required)](#content-required)
+ - [`edit` (required)](#edit-required)
+ - [`canMakePayment` (required):](#canmakepayment-required)
+ - [`paymentMethodId`](#paymentmethodid)
+ - [`supports:features`](#supportsfeatures)
+ - [Payment Methods - `registerPaymentMethod( options )`](#payment-methods---registerpaymentmethod-options-)
+ - [Props Fed to Payment Method Nodes](#props-fed-to-payment-method-nodes)
- [Server Side Integration](#server-side-integration)
- [Processing Payment](#processing-payment)
- [Registering Assets](#registering-assets)
@@ -75,7 +75,7 @@ This should be a unique string (wise to try to pick something unique for your ga
#### `content` (required)
-This should be a React node that will output in the express payment method area when the block is rendered in the frontend. It will be cloned in the rendering process. When cloned, this React node will receive props passed in from the checkout payment method interface that will allow your component to interact with checkout data (more on [these props later](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/extensibility/payment-method-integration.md#props-fed-to-payment-method-nodes)).
+This should be a React node that will output in the express payment method area when the block is rendered in the frontend. It will be cloned in the rendering process. When cloned, this React node will receive props passed in from the checkout payment method interface that will allow your component to interact with checkout data (more on [these props later](./payment-method-integration.md#props-fed-to-payment-method-nodes)).
#### `edit` (required)
@@ -87,13 +87,13 @@ A callback to determine whether the payment method should be available as an opt
```ts
canMakePayment( {
- cart: Cart,
- cartTotals: CartTotals,
- cartNeedsShipping: boolean,
- shippingAddress: CartShippingAddress,
- billingData: BillingData,
- selectedShippingMethods: Record,
- paymentRequirements: string[],
+ cart: Cart,
+ cartTotals: CartTotals,
+ cartNeedsShipping: boolean,
+ shippingAddress: CartShippingAddress,
+ billingData: BillingData,
+ selectedShippingMethods: Record,
+ paymentRequirements: string[],
} )
```
@@ -149,19 +149,18 @@ The options you feed the configuration instance are the same as those for expres
### Props Fed to Payment Method Nodes
-A big part of the payment method integration is the interface that is exposed for payment methods to use via props when the node provided is cloned and rendered on block mount. While all the props are listed below, you can find more details about what the props reference, their types etc via the [typedefs described in this file](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/9bae7c3a4a0b6650686dd4a8876bd1d11a9259fd/assets/js/types/type-defs/payment-method-interface.ts).
+A big part of the payment method integration is the interface that is exposed for payment methods to use via props when the node provided is cloned and rendered on block mount. While all the props are listed below, you can find more details about what the props reference, their types etc via the [typedefs described in this file](../../../../assets/js/types/type-defs/payment-method-interface.ts).
-| Property | Type | Description | Values |
-| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `activePaymentMethod` | String | The slug of the current active payment method in the checkout. | - |
-| `billing` | Object | Contains everything related to billing. | `billingData`, `cartTotal`, `currency`, `cartTotalItems`, `displayPricesIncludingTax`, `appliedCoupons`, `customerId` |
-| `cartData` | Object | Data exposed from the cart including items, fees, and any registered extension data. Note that this data should be treated as immutable (should not be modified/mutated) or it will result in errors in your application. | `cartItems`, `cartFees`, `extensions` |
-| `checkoutStatus` | Object | The current checkout status exposed as various boolean state. | `isCalculating`, `isComplete`, `isIdle`, `isProcessing` |
+| Property | Type | Description | Values |
+| ------ | ------ | ------ | ------ |
+| `activePaymentMethod` | String | The slug of the current active payment method in the checkout. |
+| `billing` | Object | Contains everything related to billing. | `billingData`, `cartTotal`, `currency`, `cartTotalItems`, `displayPricesIncludingTax`, `appliedCoupons`, `customerId` |
+| `cartData` | Object | Data exposed from the cart including items, fees, and any registered extension data. Note that this data should be treated as immutable (should not be modified/mutated) or it will result in errors in your application. | `cartItems`, `cartFees`, `extensions` | `checkoutStatus` | Object | The current checkout status exposed as various boolean state. | `isCalculating`, `isComplete`, `isIdle`, `isProcessing` |
| `components` | Object | It exposes React components that can be implemented by your payment method for various common interface elements used by payment methods. | `ValidationInputError`: a container for holding validation errors which typically you'll include after any inputs [`PaymentMethodLabel`](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/e089ae17043fa525e8397d605f0f470959f2ae95/assets/js/payment-method-extensions/payment-methods/paypal/index.js#L37-L40): use this component for the payment method label, including an optional icon `PaymentMethodIcons`: a React component used for displaying payment method icons `LoadingMask`: a wrapper component that handles displaying a loading state when the isLoading prop is true. Exposes the [LoadingMask component](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/c9074a4941919987dbad16a80f358b960336a09d/assets/js/base/components/loading-mask/index.js) |
| `emitResponse` | Object | Contains some constants that can be helpful when using the event emitter. Read the _[Emitting Events](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/e267cd96a4329a4eeef816b2ef627e113ebb72a5/docs/extensibility/checkout-flow-and-events.md#emitting-events)_ section for more details. | `noticeContexts`: This is an object containing properties referencing areas where notices can be targeted in the checkout. The object has the following properties: `PAYMENTS`: This is a reference to the notice area in the payment methods step. `EXPRESS_PAYMENTS`: This is a reference to the notice area in the express payment methods step. `responseTypes`: This is an object containing properties referencing the various response types that can be returned by observers for some event emitters. It makes it easier for autocompleting the types and avoiding typos due to human error. The types are `SUCCESS`, `FAIL`, `ERROR`. The values for these types also correspond to the [payment status types](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/34e17c3622637dbe8b02fac47b5c9b9ebf9e3596/src/Payments/PaymentResult.php#L21) from the [checkout endpoint response from the server](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/34e17c3622637dbe8b02fac47b5c9b9ebf9e3596/src/RestApi/StoreApi/Schemas/CheckoutSchema.php#L103-L113). |
| `eventRegistration` | object | Contains all the checkout event emitter registration functions. These are functions the payment method can register observers on to interact with various points in the checkout flow (see [this doc](./checkout-flow-and-events.md) for more info). | `onCheckoutValidationBeforeProcessing`, `onCheckoutAfterProcessingWithSuccess`, `onCheckoutAfterProcessingWithError`, `onPaymentProcessing`, `onShippingRateSuccess`, `onShippingRateFail`, `onShippingRateSelectSuccess`, `onShippingRateSelectFail` |
-| `onClick` | Function | **Provided to express payment methods** that should be triggered when the payment method button is clicked (which will signal to checkout the payment method has taken over payment processing) | - | |
-| `onClose` | Function | **Provided to express payment methods** that should be triggered when the express payment method modal closes and control is returned to checkout. | - | |
+| `onClick` | Function | **Provided to express payment methods** that should be triggered when the payment method button is clicked (which will signal to checkout the payment method has taken over payment processing) | - | |
+| `onClose` | Function | **Provided to express payment methods** that should be triggered when the express payment method modal closes and control is returned to checkout. | - | |
| `onSubmit` | Function | Submits the checkout and begins processing | - |
| `paymentStatus` | Object | Various payment status helpers. Note, your payment method does not have to handle setting this status client side. Checkout will handle this via the responses your payment method gives from observers registered to [checkout event emitters](./checkout-flow-and-events.md). | `isPristine`, `isStarted`, `isProcessing`, `isFinished`, `hasError`, `hasFailed`, `isSuccessful` |
| `setExpressPaymentError` | Function | Receives a string and allows express payment methods to set an error notice for the express payment area on demand. This can be necessary because some express payment method processing might happen outside of checkout events. | - |
diff --git a/docs/third-party-developers/extensibility/hooks/actions.md b/docs/third-party-developers/extensibility/hooks/actions.md
index a5c684192..b8f99b637 100644
--- a/docs/third-party-developers/extensibility/hooks/actions.md
+++ b/docs/third-party-developers/extensibility/hooks/actions.md
@@ -6,49 +6,46 @@
## Table of Contents
-
- - [woocommerce_add_to_cart](#woocommerce_add_to_cart)
- - [woocommerce_after_main_content](#woocommerce_after_main_content)
- - [woocommerce_after_shop_loop](#woocommerce_after_shop_loop)
- - [woocommerce_applied_coupon](#woocommerce_applied_coupon)
- - [woocommerce_archive_description](#woocommerce_archive_description)
- - [woocommerce_before_main_content](#woocommerce_before_main_content)
- - [woocommerce_before_shop_loop](#woocommerce_before_shop_loop)
- - [woocommerce_blocks_cart_enqueue_data](#woocommerce_blocks_cart_enqueue_data)
- - [woocommerce_blocks_checkout_enqueue_data](#woocommerce_blocks_checkout_enqueue_data)
- - [woocommerce_blocks_enqueue_cart_block_scripts_after](#woocommerce_blocks_enqueue_cart_block_scripts_after)
- - [woocommerce_blocks_enqueue_cart_block_scripts_before](#woocommerce_blocks_enqueue_cart_block_scripts_before)
- - [woocommerce_blocks_enqueue_checkout_block_scripts_after](#woocommerce_blocks_enqueue_checkout_block_scripts_after)
- - [woocommerce_blocks_enqueue_checkout_block_scripts_before](#woocommerce_blocks_enqueue_checkout_block_scripts_before)
- - [woocommerce_blocks_{$this->registry_identifier}_registration](#woocommerce_blocks_-this--registry_identifier-_registration)
- - [woocommerce_check_cart_items](#-woocommerce_check_cart_items)
- - [woocommerce_created_customer](#woocommerce_created_customer)
- - [woocommerce_no_products_found](#woocommerce_no_products_found)
- - [woocommerce_register_post](#woocommerce_register_post)
- - [woocommerce_rest_checkout_process_payment_with_context](#woocommerce_rest_checkout_process_payment_with_context)
- - [woocommerce_shop_loop](#woocommerce_shop_loop)
- - [woocommerce_store_api_cart_errors](#woocommerce_store_api_cart_errors)
- - [woocommerce_store_api_cart_update_customer_from_request](#woocommerce_store_api_cart_update_customer_from_request)
- - [woocommerce_store_api_cart_update_order_from_request](#woocommerce_store_api_cart_update_order_from_request)
- - [woocommerce_store_api_checkout_order_processed](#woocommerce_store_api_checkout_order_processed)
- - [woocommerce_store_api_checkout_update_customer_from_request](#woocommerce_store_api_checkout_update_customer_from_request)
- - [woocommerce_store_api_checkout_update_order_from_request](#woocommerce_store_api_checkout_update_order_from_request)
- - [woocommerce_store_api_checkout_update_order_meta](#woocommerce_store_api_checkout_update_order_meta)
- - [woocommerce_store_api_validate_add_to_cart](#woocommerce_store_api_validate_add_to_cart)
- - [woocommerce_store_api_validate_cart_item](#woocommerce_store_api_validate_cart_item)
+- [woocommerce_add_to_cart](#woocommerce_add_to_cart)
+- [woocommerce_after_main_content](#woocommerce_after_main_content)
+- [woocommerce_after_shop_loop](#woocommerce_after_shop_loop)
+- [woocommerce_applied_coupon](#woocommerce_applied_coupon)
+- [woocommerce_archive_description](#woocommerce_archive_description)
+- [woocommerce_before_main_content](#woocommerce_before_main_content)
+- [woocommerce_before_shop_loop](#woocommerce_before_shop_loop)
+- [woocommerce_blocks_cart_enqueue_data](#woocommerce_blocks_cart_enqueue_data)
+- [woocommerce_blocks_checkout_enqueue_data](#woocommerce_blocks_checkout_enqueue_data)
+- [woocommerce_blocks_enqueue_cart_block_scripts_after](#woocommerce_blocks_enqueue_cart_block_scripts_after)
+- [woocommerce_blocks_enqueue_cart_block_scripts_before](#woocommerce_blocks_enqueue_cart_block_scripts_before)
+- [woocommerce_blocks_enqueue_checkout_block_scripts_after](#woocommerce_blocks_enqueue_checkout_block_scripts_after)
+- [woocommerce_blocks_enqueue_checkout_block_scripts_before](#woocommerce_blocks_enqueue_checkout_block_scripts_before)
+- [woocommerce*blocks*{$this->registry_identifier}\_registration](#woocommerce_blocks_-this--registry_identifier-_registration)
+- [woocommerce_check_cart_items](#-woocommerce_check_cart_items)
+- [woocommerce_created_customer](#woocommerce_created_customer)
+- [woocommerce_no_products_found](#woocommerce_no_products_found)
+- [woocommerce_register_post](#woocommerce_register_post)
+- [woocommerce_rest_checkout_process_payment_with_context](#woocommerce_rest_checkout_process_payment_with_context)
+- [woocommerce_shop_loop](#woocommerce_shop_loop)
+- [woocommerce_store_api_cart_errors](#woocommerce_store_api_cart_errors)
+- [woocommerce_store_api_cart_update_customer_from_request](#woocommerce_store_api_cart_update_customer_from_request)
+- [woocommerce_store_api_cart_update_order_from_request](#woocommerce_store_api_cart_update_order_from_request)
+- [woocommerce_store_api_checkout_order_processed](#woocommerce_store_api_checkout_order_processed)
+- [woocommerce_store_api_checkout_update_customer_from_request](#woocommerce_store_api_checkout_update_customer_from_request)
+- [woocommerce_store_api_checkout_update_order_from_request](#woocommerce_store_api_checkout_update_order_from_request)
+- [woocommerce_store_api_checkout_update_order_meta](#woocommerce_store_api_checkout_update_order_meta)
+- [woocommerce_store_api_validate_add_to_cart](#woocommerce_store_api_validate_add_to_cart)
+- [woocommerce_store_api_validate_cart_item](#woocommerce_store_api_validate_cart_item)
---
## woocommerce_add_to_cart
-
Fires when an item is added to the cart.
```php
do_action( 'woocommerce_add_to_cart', string $cart_id, integer $product_id, integer $request_quantity, integer $variation_id, array $variation, array $cart_item_data )
```
-
**Note: Matches action name in WooCommerce core.**
### Description
@@ -57,25 +54,23 @@ do_action( 'woocommerce_add_to_cart', string $cart_id, integer $product_id, inte
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $cart_id | string | ID of the item in the cart. |
-| $product_id | integer | ID of the product added to the cart. |
-| $request_quantity | integer | Quantity of the item added to the cart. |
-| $variation_id | integer | Variation ID of the product added to the cart. |
-| $variation | array | Array of variation data. |
-| $cart_item_data | array | Array of other cart item data. |
+| Argument | Type | Description |
+| ----------------- | ------- | ---------------------------------------------- |
+| $cart_id | string | ID of the item in the cart. |
+| $product_id | integer | ID of the product added to the cart. |
+| $request_quantity | integer | Quantity of the item added to the cart. |
+| $variation_id | integer | Variation ID of the product added to the cart. |
+| $variation | array | Array of variation data. |
+| $cart_item_data | array | Array of other cart item data. |
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_after_main_content
-
Hook: woocommerce_after_main_content
```php
@@ -88,20 +83,17 @@ do_action( 'woocommerce_after_main_content' )
### See
-
- - woocommerce_output_content_wrapper_end() - Outputs closing DIV for the content (priority 10)
+- woocommerce_output_content_wrapper_end() - Outputs closing DIV for the content (priority 10)
### Source
-
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
---
## woocommerce_after_shop_loop
-
Hook: woocommerce_after_shop_loop.
```php
@@ -110,44 +102,38 @@ do_action( 'woocommerce_after_shop_loop' )
### See
-
- - woocommerce_pagination() - Renders pagination (priority 10)
+- woocommerce_pagination() - Renders pagination (priority 10)
### Source
-
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
---
## woocommerce_applied_coupon
-
Fires after a coupon has been applied to the cart.
```php
do_action( 'woocommerce_applied_coupon', string $coupon_code )
```
-
**Note: Matches action name in WooCommerce core.**
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
+| Argument | Type | Description |
+| ------------ | ------ | --------------------------------- |
| $coupon_code | string | The coupon code that was applied. |
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_archive_description
-
Hook: woocommerce_archive_description.
```php
@@ -156,20 +142,17 @@ do_action( 'woocommerce_archive_description' )
### See
-
- - woocommerce_taxonomy_archive_description() - Renders the taxonomy archive description (priority 10)
- - woocommerce_product_archive_description() - Renders the product archive description (priority 10)
+- woocommerce_taxonomy_archive_description() - Renders the taxonomy archive description (priority 10)
+- woocommerce_product_archive_description() - Renders the product archive description (priority 10)
### Source
-
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
---
## woocommerce_before_main_content
-
Hook: woocommerce_before_main_content
```php
@@ -182,22 +165,19 @@ do_action( 'woocommerce_before_main_content' )
### See
-
- - woocommerce_output_content_wrapper() - Outputs opening DIV for the content (priority 10)
- - woocommerce_breadcrumb() - Outputs breadcrumb trail to the current product (priority 20)
- - WC_Structured_Data::generate_website_data() - Outputs schema markup (priority 30)
+- woocommerce_output_content_wrapper() - Outputs opening DIV for the content (priority 10)
+- woocommerce_breadcrumb() - Outputs breadcrumb trail to the current product (priority 20)
+- WC_Structured_Data::generate_website_data() - Outputs schema markup (priority 30)
### Source
-
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
---
## woocommerce_before_shop_loop
-
Hook: woocommerce_before_shop_loop.
```php
@@ -206,21 +186,18 @@ do_action( 'woocommerce_before_shop_loop' )
### See
-
- - woocommerce_output_all_notices() - Render error notices (priority 10)
- - woocommerce_result_count() - Show number of results found (priority 20)
- - woocommerce_catalog_ordering() - Show form to control sort order (priority 30)
+- woocommerce_output_all_notices() - Render error notices (priority 10)
+- woocommerce_result_count() - Show number of results found (priority 20)
+- woocommerce_catalog_ordering() - Show form to control sort order (priority 30)
### Source
-
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
---
## woocommerce_blocks_cart_enqueue_data
-
Fires after cart block data is registered.
```php
@@ -229,15 +206,13 @@ do_action( 'woocommerce_blocks_cart_enqueue_data' )
### Source
-
- - [BlockTypes/Cart.php](../../src/BlockTypes/Cart.php)
- - [BlockTypes/MiniCart.php](../../src/BlockTypes/MiniCart.php)
+- [BlockTypes/Cart.php](../../../../src/BlockTypes/Cart.php)
+- [BlockTypes/MiniCart.php](../../../../src/BlockTypes/MiniCart.php)
---
## woocommerce_blocks_checkout_enqueue_data
-
Fires after checkout block data is registered.
```php
@@ -246,14 +221,12 @@ do_action( 'woocommerce_blocks_checkout_enqueue_data' )
### Source
-
- - [BlockTypes/Checkout.php](../../src/BlockTypes/Checkout.php)
+- [BlockTypes/Checkout.php](../../../../src/BlockTypes/Checkout.php)
---
## woocommerce_blocks_enqueue_cart_block_scripts_after
-
Fires after cart block scripts are enqueued.
```php
@@ -262,14 +235,12 @@ do_action( 'woocommerce_blocks_enqueue_cart_block_scripts_after' )
### Source
-
- - [BlockTypes/Cart.php](../../src/BlockTypes/Cart.php)
+- [BlockTypes/Cart.php](../../../../src/BlockTypes/Cart.php)
---
## woocommerce_blocks_enqueue_cart_block_scripts_before
-
Fires before cart block scripts are enqueued.
```php
@@ -278,14 +249,12 @@ do_action( 'woocommerce_blocks_enqueue_cart_block_scripts_before' )
### Source
-
- - [BlockTypes/Cart.php](../../src/BlockTypes/Cart.php)
+- [BlockTypes/Cart.php](../../../../src/BlockTypes/Cart.php)
---
## woocommerce_blocks_enqueue_checkout_block_scripts_after
-
Fires after checkout block scripts are enqueued.
```php
@@ -294,14 +263,12 @@ do_action( 'woocommerce_blocks_enqueue_checkout_block_scripts_after' )
### Source
-
- - [BlockTypes/Checkout.php](../../src/BlockTypes/Checkout.php)
+- [BlockTypes/Checkout.php](../../../../src/BlockTypes/Checkout.php)
---
## woocommerce_blocks_enqueue_checkout_block_scripts_before
-
Fires before checkout block scripts are enqueued.
```php
@@ -310,13 +277,11 @@ do_action( 'woocommerce_blocks_enqueue_checkout_block_scripts_before' )
### Source
-
- - [BlockTypes/Checkout.php](../../src/BlockTypes/Checkout.php)
+- [BlockTypes/Checkout.php](../../../../src/BlockTypes/Checkout.php)
---
-## woocommerce_blocks_{$this->registry_identifier}_registration
-
+## woocommerce*blocks*{$this->registry_identifier}\_registration
Fires when the IntegrationRegistry is initialized.
@@ -330,30 +295,26 @@ do_action( 'woocommerce_blocks_{$this->registry_identifier}_registration', \Auto
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $this | \Automattic\WooCommerce\Blocks\Integrations\IntegrationRegistry | Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method. |
+| Argument | Type | Description |
+| -------- | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
+| $this | \Automattic\WooCommerce\Blocks\Integrations\IntegrationRegistry | Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method. |
### Source
-
- - [Integrations/IntegrationRegistry.php](../../src/Integrations/IntegrationRegistry.php)
+- [Integrations/IntegrationRegistry.php](../../../../src/Integrations/IntegrationRegistry.php)
---
## ~~woocommerce_check_cart_items~~
-
Fires when cart items are being validated.
```php
do_action( 'woocommerce_check_cart_items' )
```
-
**Deprecated: This hook is deprecated and will be removed**
-
**Note: Matches action name in WooCommerce core.**
### Description
@@ -362,21 +323,18 @@ do_action( 'woocommerce_check_cart_items' )
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_created_customer
-
Fires after a customer account has been registered.
```php
do_action( 'woocommerce_created_customer', integer $customer_id, array $new_customer_data, string $password_generated )
```
-
**Note: Matches filter name in WooCommerce core.**
### Description
@@ -385,22 +343,20 @@ do_action( 'woocommerce_created_customer', integer $customer_id, array $new_cust
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $customer_id | integer | New customer (user) ID. |
-| $new_customer_data | array | Array of customer (user) data. |
-| $password_generated | string | The generated password for the account. |
+| Argument | Type | Description |
+| ------------------- | ------- | --------------------------------------- |
+| $customer_id | integer | New customer (user) ID. |
+| $new_customer_data | array | Array of customer (user) data. |
+| $password_generated | string | The generated password for the account. |
### Source
-
- - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php)
+- [StoreApi/Routes/V1/Checkout.php](../../../../src/StoreApi/Routes/V1/Checkout.php)
---
## woocommerce_no_products_found
-
Hook: woocommerce_no_products_found.
```php
@@ -409,26 +365,22 @@ do_action( 'woocommerce_no_products_found' )
### See
-
- - wc_no_products_found() - Default no products found content (priority 10)
+- wc_no_products_found() - Default no products found content (priority 10)
### Source
-
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
---
## woocommerce_register_post
-
Fires before a customer account is registered.
```php
do_action( 'woocommerce_register_post', string $username, string $user_email, \WP_Error $errors )
```
-
**Note: Matches filter name in WooCommerce core.**
### Description
@@ -437,22 +389,20 @@ do_action( 'woocommerce_register_post', string $username, string $user_email, \W
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $username | string | Customer username. |
-| $user_email | string | Customer email address. |
-| $errors | \WP_Error | Error object. |
+| Argument | Type | Description |
+| ----------- | --------- | ----------------------- |
+| $username | string | Customer username. |
+| $user_email | string | Customer email address. |
+| $errors | \WP_Error | Error object. |
### Source
-
- - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php)
+- [StoreApi/Routes/V1/Checkout.php](../../../../src/StoreApi/Routes/V1/Checkout.php)
---
## woocommerce_rest_checkout_process_payment_with_context
-
Process payment with context.
```php
@@ -461,26 +411,23 @@ do_action_ref_array( 'woocommerce_rest_checkout_process_payment_with_context', [
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $context | \Automattic\WooCommerce\StoreApi\Payments\PaymentContext | Holds context for the payment, including order ID and payment method. |
-| $payment_result | \Automattic\WooCommerce\StoreApi\Payments\PaymentResult | Result object for the transaction. |
+| Argument | Type | Description |
+| --------------- | -------------------------------------------------------- | --------------------------------------------------------------------- |
+| $context | \Automattic\WooCommerce\StoreApi\Payments\PaymentContext | Holds context for the payment, including order ID and payment method. |
+| $payment_result | \Automattic\WooCommerce\StoreApi\Payments\PaymentResult | Result object for the transaction. |
### Exceptions
-
`\Exception` If there is an error taking payment, an \Exception object can be thrown with an error message.
### Source
-
- - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php)
+- [StoreApi/Routes/V1/Checkout.php](../../../../src/StoreApi/Routes/V1/Checkout.php)
---
## woocommerce_shop_loop
-
Hook: woocommerce_shop_loop.
```php
@@ -489,14 +436,12 @@ do_action( 'woocommerce_shop_loop' )
### Source
-
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
---
## woocommerce_store_api_cart_errors
-
Fires an action to validate the cart.
```php
@@ -509,10 +454,10 @@ do_action( 'woocommerce_store_api_cart_errors', \WP_Error $errors, \WC_Cart $car
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $errors | \WP_Error | WP_Error object. |
-| $cart | \WC_Cart | Cart object. |
+| Argument | Type | Description |
+| -------- | --------- | ---------------- |
+| $errors | \WP_Error | WP_Error object. |
+| $cart | \WC_Cart | Cart object. |
### Example
@@ -531,17 +476,14 @@ function my_function_callback( $errors, $cart ) {
add_action( 'woocommerce_store_api_cart_errors', 'my_function_callback', 10 );
```
-
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_store_api_cart_update_customer_from_request
-
Fires when the Checkout Block/Store API updates a customer from the API request data.
```php
@@ -550,21 +492,19 @@ do_action( 'woocommerce_store_api_cart_update_customer_from_request', \WC_Custom
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $customer | \WC_Customer | Customer object. |
-| $request | \WP_REST_Request | Full details about the request. |
+| Argument | Type | Description |
+| --------- | ---------------- | ------------------------------- |
+| $customer | \WC_Customer | Customer object. |
+| $request | \WP_REST_Request | Full details about the request. |
### Source
-
- - [StoreApi/Routes/V1/CartUpdateCustomer.php](../../src/StoreApi/Routes/V1/CartUpdateCustomer.php)
+- [StoreApi/Routes/V1/CartUpdateCustomer.php](../../../../src/StoreApi/Routes/V1/CartUpdateCustomer.php)
---
## woocommerce_store_api_cart_update_order_from_request
-
Fires when the order is synced with cart data from a cart route.
```php
@@ -573,22 +513,20 @@ do_action( 'woocommerce_store_api_cart_update_order_from_request', \WC_Order $dr
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $draft_order | \WC_Order | Order object. |
-| $customer | \WC_Customer | Customer object. |
-| $request | \WP_REST_Request | Full details about the request. |
+| Argument | Type | Description |
+| ------------ | ---------------- | ------------------------------- |
+| $draft_order | \WC_Order | Order object. |
+| $customer | \WC_Customer | Customer object. |
+| $request | \WP_REST_Request | Full details about the request. |
### Source
-
- - [StoreApi/Routes/V1/AbstractCartRoute.php](../../src/StoreApi/Routes/V1/AbstractCartRoute.php)
+- [StoreApi/Routes/V1/AbstractCartRoute.php](../../../../src/StoreApi/Routes/V1/AbstractCartRoute.php)
---
## woocommerce_store_api_checkout_order_processed
-
Fires before an order is processed by the Checkout Block/Store API.
```php
@@ -601,9 +539,9 @@ do_action( 'woocommerce_store_api_checkout_order_processed', \WC_Order $order )
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $order | \WC_Order | Order object. |
+| Argument | Type | Description |
+| -------- | --------- | ------------- |
+| $order | \WC_Order | Order object. |
### Example
@@ -619,22 +557,18 @@ function my_function_callback( $order ) {
add_action( 'woocommerce_blocks_checkout_order_processed', 'my_function_callback', 10 );
```
-
### See
-
- - https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238
+- https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238
### Source
-
- - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php)
+- [StoreApi/Routes/V1/Checkout.php](../../../../src/StoreApi/Routes/V1/Checkout.php)
---
## woocommerce_store_api_checkout_update_customer_from_request
-
Fires when the Checkout Block/Store API updates a customer from the API request data.
```php
@@ -643,21 +577,19 @@ do_action( 'woocommerce_store_api_checkout_update_customer_from_request', \WC_Cu
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $customer | \WC_Customer | Customer object. |
-| $request | \WP_REST_Request | Full details about the request. |
+| Argument | Type | Description |
+| --------- | ---------------- | ------------------------------- |
+| $customer | \WC_Customer | Customer object. |
+| $request | \WP_REST_Request | Full details about the request. |
### Source
-
- - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php)
+- [StoreApi/Routes/V1/Checkout.php](../../../../src/StoreApi/Routes/V1/Checkout.php)
---
## woocommerce_store_api_checkout_update_order_from_request
-
Fires when the Checkout Block/Store API updates an order's from the API request data.
```php
@@ -670,21 +602,19 @@ do_action( 'woocommerce_store_api_checkout_update_order_from_request', \WC_Order
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $order | \WC_Order | Order object. |
+| Argument | Type | Description |
+| -------- | ---------------- | ------------------------------- |
+| $order | \WC_Order | Order object. |
| $request | \WP_REST_Request | Full details about the request. |
### Source
-
- - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php)
+- [StoreApi/Routes/V1/Checkout.php](../../../../src/StoreApi/Routes/V1/Checkout.php)
---
## woocommerce_store_api_checkout_update_order_meta
-
Fires when the Checkout Block/Store API updates an order's meta data.
```php
@@ -697,25 +627,22 @@ do_action( 'woocommerce_store_api_checkout_update_order_meta', \WC_Order $order
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $order | \WC_Order | Order object. |
+| Argument | Type | Description |
+| -------- | --------- | ------------- |
+| $order | \WC_Order | Order object. |
### See
-
- - https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686
+- https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686
### Source
-
- - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php)
+- [StoreApi/Routes/V1/Checkout.php](../../../../src/StoreApi/Routes/V1/Checkout.php)
---
## woocommerce_store_api_validate_add_to_cart
-
Fires during validation when adding an item to the cart via the Store API.
```php
@@ -728,21 +655,19 @@ do_action( 'woocommerce_store_api_validate_add_to_cart', \WC_Product $product, a
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $product | \WC_Product | Product object being added to the cart. |
-| $request | array | Add to cart request params including id, quantity, and variation attributes. |
+| Argument | Type | Description |
+| -------- | ----------- | ---------------------------------------------------------------------------- |
+| $product | \WC_Product | Product object being added to the cart. |
+| $request | array | Add to cart request params including id, quantity, and variation attributes. |
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_store_api_validate_cart_item
-
Fire action to validate add to cart. Functions hooking into this should throw an \Exception to prevent add to cart from occurring.
```php
@@ -751,17 +676,17 @@ do_action( 'woocommerce_store_api_validate_cart_item', \WC_Product $product, arr
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $product | \WC_Product | Product object being added to the cart. |
-| $cart_item | array | Cart item array. |
+| Argument | Type | Description |
+| ---------- | ----------- | --------------------------------------- |
+| $product | \WC_Product | Product object being added to the cart. |
+| $cart_item | array | Cart item array. |
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
+
---
@@ -771,4 +696,3 @@ do_action( 'woocommerce_store_api_validate_cart_item', \WC_Product $product, arr
🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/hooks/actions.md)
-
diff --git a/docs/third-party-developers/extensibility/hooks/filters.md b/docs/third-party-developers/extensibility/hooks/filters.md
index 1c6546e12..343b4a8e0 100644
--- a/docs/third-party-developers/extensibility/hooks/filters.md
+++ b/docs/third-party-developers/extensibility/hooks/filters.md
@@ -6,38 +6,35 @@
## Table of Contents
-
- - [__experimental_woocommerce_blocks_add_data_attributes_to_block](#__experimental_woocommerce_blocks_add_data_attributes_to_block)
- - [__experimental_woocommerce_blocks_add_data_attributes_to_namespace](#__experimental_woocommerce_blocks_add_data_attributes_to_namespace)
- - [__experimental_woocommerce_blocks_payment_gateway_features_list](#__experimental_woocommerce_blocks_payment_gateway_features_list)
- - [woocommerce_add_cart_item](#woocommerce_add_cart_item)
- - [woocommerce_add_cart_item_data](#woocommerce_add_cart_item_data)
- - [woocommerce_add_to_cart_sold_individually_quantity](#woocommerce_add_to_cart_sold_individually_quantity)
- - [woocommerce_add_to_cart_validation](#-woocommerce_add_to_cart_validation)
- - [woocommerce_adjust_non_base_location_prices](#woocommerce_adjust_non_base_location_prices)
- - [woocommerce_admin_disabled](#woocommerce_admin_disabled)
- - [woocommerce_apply_individual_use_coupon](#woocommerce_apply_individual_use_coupon)
- - [woocommerce_apply_with_individual_use_coupon](#woocommerce_apply_with_individual_use_coupon)
- - [woocommerce_blocks_product_grid_is_cacheable](#woocommerce_blocks_product_grid_is_cacheable)
- - [woocommerce_blocks_product_grid_item_html](#woocommerce_blocks_product_grid_item_html)
- - [woocommerce_blocks_register_script_dependencies](#woocommerce_blocks_register_script_dependencies)
- - [woocommerce_cart_contents_changed](#woocommerce_cart_contents_changed)
- - [woocommerce_ga_disable_tracking](#woocommerce_ga_disable_tracking)
- - [woocommerce_get_item_data](#woocommerce_get_item_data)
- - [woocommerce_new_customer_data](#woocommerce_new_customer_data)
- - [woocommerce_registration_errors](#woocommerce_registration_errors)
- - [woocommerce_shared_settings](#-woocommerce_shared_settings)
- - [woocommerce_shipping_package_name](#woocommerce_shipping_package_name)
- - [woocommerce_show_page_title](#woocommerce_show_page_title)
- - [woocommerce_store_api_disable_nonce_check](#woocommerce_store_api_disable_nonce_check)
- - [woocommerce_store_api_product_quantity_limit](#woocommerce_store_api_product_quantity_limit)
- - [woocommerce_store_api_product_quantity_{$value_type}](#woocommerce_store_api_product_quantity_-value_type)
- - [woocommerce_variation_option_name](#woocommerce_variation_option_name)
+- [\_\_experimental_woocommerce_blocks_add_data_attributes_to_block](#__experimental_woocommerce_blocks_add_data_attributes_to_block)
+- [\_\_experimental_woocommerce_blocks_add_data_attributes_to_namespace](#__experimental_woocommerce_blocks_add_data_attributes_to_namespace)
+- [\_\_experimental_woocommerce_blocks_payment_gateway_features_list](#__experimental_woocommerce_blocks_payment_gateway_features_list)
+- [woocommerce_add_cart_item](#woocommerce_add_cart_item)
+- [woocommerce_add_cart_item_data](#woocommerce_add_cart_item_data)
+- [woocommerce_add_to_cart_sold_individually_quantity](#woocommerce_add_to_cart_sold_individually_quantity)
+- [woocommerce_add_to_cart_validation](#-woocommerce_add_to_cart_validation)
+- [woocommerce_adjust_non_base_location_prices](#woocommerce_adjust_non_base_location_prices)
+- [woocommerce_apply_individual_use_coupon](#woocommerce_apply_individual_use_coupon)
+- [woocommerce_apply_with_individual_use_coupon](#woocommerce_apply_with_individual_use_coupon)
+- [woocommerce_blocks_product_grid_is_cacheable](#woocommerce_blocks_product_grid_is_cacheable)
+- [woocommerce_blocks_product_grid_item_html](#woocommerce_blocks_product_grid_item_html)
+- [woocommerce_blocks_register_script_dependencies](#woocommerce_blocks_register_script_dependencies)
+- [woocommerce_cart_contents_changed](#woocommerce_cart_contents_changed)
+- [woocommerce_ga_disable_tracking](#woocommerce_ga_disable_tracking)
+- [woocommerce_get_item_data](#woocommerce_get_item_data)
+- [woocommerce_new_customer_data](#woocommerce_new_customer_data)
+- [woocommerce_registration_errors](#woocommerce_registration_errors)
+- [woocommerce_shared_settings](#-woocommerce_shared_settings)
+- [woocommerce_shipping_package_name](#woocommerce_shipping_package_name)
+- [woocommerce_show_page_title](#woocommerce_show_page_title)
+- [woocommerce_store_api_disable_nonce_check](#woocommerce_store_api_disable_nonce_check)
+- [woocommerce_store_api_product_quantity_limit](#woocommerce_store_api_product_quantity_limit)
+- [woocommerce*store_api_product_quantity*{$value_type}](#woocommerce_store_api_product_quantity_-value_type)
+- [woocommerce_variation_option_name](#woocommerce_variation_option_name)
---
-## __experimental_woocommerce_blocks_add_data_attributes_to_block
-
+## \_\_experimental_woocommerce_blocks_add_data_attributes_to_block
Filters the list of allowed Block Names
@@ -51,19 +48,17 @@ apply_filters( '__experimental_woocommerce_blocks_add_data_attributes_to_block',
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
+| Argument | Type | Description |
+| ------------------- | ----- | ------------------- |
| $allowed_namespaces | array | List of namespaces. |
### Source
-
- - [BlockTypesController.php](../../src/BlockTypesController.php)
+- [BlockTypesController.php](../../../../src/BlockTypesController.php)
---
-## __experimental_woocommerce_blocks_add_data_attributes_to_namespace
-
+## \_\_experimental_woocommerce_blocks_add_data_attributes_to_namespace
Filters the list of allowed block namespaces.
@@ -77,19 +72,17 @@ apply_filters( '__experimental_woocommerce_blocks_add_data_attributes_to_namespa
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
+| Argument | Type | Description |
+| ------------------- | ----- | ------------------- |
| $allowed_namespaces | array | List of namespaces. |
### Source
-
- - [BlockTypesController.php](../../src/BlockTypesController.php)
+- [BlockTypesController.php](../../../../src/BlockTypesController.php)
---
-## __experimental_woocommerce_blocks_payment_gateway_features_list
-
+## \_\_experimental_woocommerce_blocks_payment_gateway_features_list
Filter to control what features are available for each payment gateway.
@@ -99,14 +92,13 @@ apply_filters( '__experimental_woocommerce_blocks_payment_gateway_features_list'
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $features | array | List of supported features. |
-| $name | string | Gateway name. |
+| Argument | Type | Description |
+| --------- | ------ | --------------------------- |
+| $features | array | List of supported features. |
+| $name | string | Gateway name. |
### Returns
-
`array` Updated list of supported features.
### Example
@@ -126,122 +118,106 @@ function my_function_callback( $features, $gateway ) {
add_filter( '__experimental_woocommerce_blocks_payment_gateway_features_list', 'my_function_callback', 10, 2 );
```
-
### Source
-
- - [Payments/Integrations/PayPal.php](../../src/Payments/Integrations/PayPal.php)
+- [Payments/Integrations/PayPal.php](../../../../src/Payments/Integrations/PayPal.php)
---
## woocommerce_add_cart_item
-
Filters the item being added to the cart.
```php
apply_filters( 'woocommerce_add_cart_item', array $cart_item_data, string $cart_id )
```
-
**Note: Matches filter name in WooCommerce core.**
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $cart_item_data | array | Array of cart item data being added to the cart. |
-| $cart_id | string | Id of the item in the cart. |
+| Argument | Type | Description |
+| --------------- | ------ | ------------------------------------------------ |
+| $cart_item_data | array | Array of cart item data being added to the cart. |
+| $cart_id | string | Id of the item in the cart. |
### Returns
-
`array` Updated cart item data.
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_add_cart_item_data
-
Filter cart item data for add to cart requests.
```php
apply_filters( 'woocommerce_add_cart_item_data', array $cart_item_data, integer $product_id, integer $variation_id, integer $quantity )
```
-
**Note: Matches filter name in WooCommerce core.**
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $cart_item_data | array | Array of other cart item data. |
-| $product_id | integer | ID of the product added to the cart. |
-| $variation_id | integer | Variation ID of the product added to the cart. |
-| $quantity | integer | Quantity of the item added to the cart. |
+| Argument | Type | Description |
+| --------------- | ------- | ---------------------------------------------- |
+| $cart_item_data | array | Array of other cart item data. |
+| $product_id | integer | ID of the product added to the cart. |
+| $variation_id | integer | Variation ID of the product added to the cart. |
+| $quantity | integer | Quantity of the item added to the cart. |
### Returns
-
-`array`
+`array`
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_add_to_cart_sold_individually_quantity
-
Filter sold individually quantity for add to cart requests.
```php
apply_filters( 'woocommerce_add_to_cart_sold_individually_quantity', integer $sold_individually_quantity, integer $quantity, integer $product_id, integer $variation_id, array $cart_item_data )
```
-
**Note: Matches filter name in WooCommerce core.**
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $sold_individually_quantity | integer | Defaults to 1. |
-| $quantity | integer | Quantity of the item added to the cart. |
-| $product_id | integer | ID of the product added to the cart. |
-| $variation_id | integer | Variation ID of the product added to the cart. |
-| $cart_item_data | array | Array of other cart item data. |
+| Argument | Type | Description |
+| --------------------------- | ------- | ---------------------------------------------- |
+| $sold_individually_quantity | integer | Defaults to 1. |
+| $quantity | integer | Quantity of the item added to the cart. |
+| $product_id | integer | ID of the product added to the cart. |
+| $variation_id | integer | Variation ID of the product added to the cart. |
+| $cart_item_data | array | Array of other cart item data. |
### Returns
-
-`integer`
+`integer`
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## ~~woocommerce_add_to_cart_validation~~
-
Filters if an item being added to the cart passed validation checks.
```php
apply_filters( 'woocommerce_add_to_cart_validation', boolean $passed_validation, integer $product_id, integer $quantity, integer $variation_id, array $variation )
```
-
**Deprecated: This hook is deprecated and will be removed**
### Description
@@ -250,36 +226,32 @@ apply_filters( 'woocommerce_add_to_cart_validation', boolean $passed_validation,
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $passed_validation | boolean | True if the item passed validation. |
-| $product_id | integer | Product ID being validated. |
-| $quantity | integer | Quantity added to the cart. |
-| $variation_id | integer | Variation ID being added to the cart. |
-| $variation | array | Variation data. |
+| Argument | Type | Description |
+| ------------------ | ------- | ------------------------------------- |
+| $passed_validation | boolean | True if the item passed validation. |
+| $product_id | integer | Product ID being validated. |
+| $quantity | integer | Quantity added to the cart. |
+| $variation_id | integer | Variation ID being added to the cart. |
+| $variation | array | Variation data. |
### Returns
-
-`boolean`
+`boolean`
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_adjust_non_base_location_prices
-
Filters if taxes should be removed from locations outside the store base location.
```php
apply_filters( 'woocommerce_adjust_non_base_location_prices', boolean $adjust_non_base_location_prices )
```
-
**Note: Matches filter name in WooCommerce core.**
### Description
@@ -288,106 +260,79 @@ apply_filters( 'woocommerce_adjust_non_base_location_prices', boolean $adjust_no
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
+| Argument | Type | Description |
+| -------------------------------- | ------- | ---------------- |
| $adjust_non_base_location_prices | boolean | True by default. |
### Returns
-
-`boolean`
-
-### Source
-
-
- - [StoreApi/Utilities/ProductQuery.php](../../src/StoreApi/Utilities/ProductQuery.php)
-
----
-
-## woocommerce_admin_disabled
-
-
-
-
-```php
-apply_filters( 'woocommerce_admin_disabled' )
-```
+`boolean`
### Source
-
- - [InboxNotifications.php](../../src/InboxNotifications.php)
+- [StoreApi/Utilities/ProductQuery.php](../../../../src/StoreApi/Utilities/ProductQuery.php)
---
## woocommerce_apply_individual_use_coupon
-
Filter coupons to remove when applying an individual use coupon.
```php
apply_filters( 'woocommerce_apply_individual_use_coupon', array $coupons, \WC_Coupon $coupon, array $applied_coupons )
```
-
**Note: Matches filter name in WooCommerce core.**
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $coupons | array | Array of coupons to remove from the cart. |
-| $coupon | \WC_Coupon | Coupon object applied to the cart. |
-| $applied_coupons | array | Array of applied coupons already applied to the cart. |
+| Argument | Type | Description |
+| ---------------- | ---------- | ----------------------------------------------------- |
+| $coupons | array | Array of coupons to remove from the cart. |
+| $coupon | \WC_Coupon | Coupon object applied to the cart. |
+| $applied_coupons | array | Array of applied coupons already applied to the cart. |
### Returns
-
-`array`
+`array`
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_apply_with_individual_use_coupon
-
Filters if a coupon can be applied alongside other individual use coupons.
```php
apply_filters( 'woocommerce_apply_with_individual_use_coupon', boolean $apply_with_individual_use_coupon, \WC_Coupon $coupon, \WC_Coupon $individual_use_coupon, array $applied_coupons )
```
-
**Note: Matches filter name in WooCommerce core.**
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $apply_with_individual_use_coupon | boolean | Defaults to false. |
-| $coupon | \WC_Coupon | Coupon object applied to the cart. |
-| $individual_use_coupon | \WC_Coupon | Individual use coupon already applied to the cart. |
-| $applied_coupons | array | Array of applied coupons already applied to the cart. |
+| Argument | Type | Description |
+| --------------------------------- | ---------- | ----------------------------------------------------- |
+| $apply_with_individual_use_coupon | boolean | Defaults to false. |
+| $coupon | \WC_Coupon | Coupon object applied to the cart. |
+| $individual_use_coupon | \WC_Coupon | Individual use coupon already applied to the cart. |
+| $applied_coupons | array | Array of applied coupons already applied to the cart. |
### Returns
-
-`boolean`
+`boolean`
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_blocks_product_grid_is_cacheable
-
Filters whether or not the product grid is cacheable.
```php
@@ -396,26 +341,23 @@ apply_filters( 'woocommerce_blocks_product_grid_is_cacheable', boolean $is_cache
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $is_cacheable | boolean | The list of script dependencies. |
-| $query_args | array | Query args for the products query passed to BlocksWpQuery. |
+| Argument | Type | Description |
+| ------------- | ------- | ---------------------------------------------------------- |
+| $is_cacheable | boolean | The list of script dependencies. |
+| $query_args | array | Query args for the products query passed to BlocksWpQuery. |
### Returns
-
`array` True to enable cache, false to disable cache.
### Source
-
- - [BlockTypes/AbstractProductGrid.php](../../src/BlockTypes/AbstractProductGrid.php)
+- [BlockTypes/AbstractProductGrid.php](../../../../src/BlockTypes/AbstractProductGrid.php)
---
## woocommerce_blocks_product_grid_item_html
-
Filters the HTML for products in the grid.
```php
@@ -424,27 +366,24 @@ apply_filters( 'woocommerce_blocks_product_grid_item_html', string $html, array
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $html | string | Product grid item HTML. |
-| $data | array | Product data passed to the template. |
-| $product | \WC_Product | Product object. |
+| Argument | Type | Description |
+| -------- | ----------- | ------------------------------------ |
+| $html | string | Product grid item HTML. |
+| $data | array | Product data passed to the template. |
+| $product | \WC_Product | Product object. |
### Returns
-
`string` Updated product grid item HTML.
### Source
-
- - [BlockTypes/AbstractProductGrid.php](../../src/BlockTypes/AbstractProductGrid.php)
+- [BlockTypes/AbstractProductGrid.php](../../../../src/BlockTypes/AbstractProductGrid.php)
---
## woocommerce_blocks_register_script_dependencies
-
Filters the list of script dependencies.
```php
@@ -453,88 +392,77 @@ apply_filters( 'woocommerce_blocks_register_script_dependencies', array $depende
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $dependencies | array | The list of script dependencies. |
-| $handle | string | The script's handle. |
+| Argument | Type | Description |
+| ------------- | ------ | -------------------------------- |
+| $dependencies | array | The list of script dependencies. |
+| $handle | string | The script's handle. |
### Returns
-
-`array`
+`array`
### Source
-
- - [Assets/Api.php](../../src/Assets/Api.php)
+- [Assets/Api.php](../../../../src/Assets/Api.php)
---
## woocommerce_cart_contents_changed
-
Filters the entire cart contents when the cart changes.
```php
apply_filters( 'woocommerce_cart_contents_changed', array $cart_contents )
```
-
**Note: Matches filter name in WooCommerce core.**
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
+| Argument | Type | Description |
+| -------------- | ----- | ------------------------ |
| $cart_contents | array | Array of all cart items. |
### Returns
-
`array` Updated array of all cart items.
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_ga_disable_tracking
-
Filter to disable Google Analytics tracking.
```php
apply_filters( 'woocommerce_ga_disable_tracking', boolean $disable_tracking )
```
-
**Note: Matches filter name in GA extension.**
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
+| Argument | Type | Description |
+| ----------------- | ------- | ----------------------------------- |
| $disable_tracking | boolean | If true, tracking will be disabled. |
### Source
-
- - [Domain/Services/GoogleAnalytics.php](../../src/Domain/Services/GoogleAnalytics.php)
+- [Domain/Services/GoogleAnalytics.php](../../../../src/Domain/Services/GoogleAnalytics.php)
---
## woocommerce_get_item_data
-
Filters cart item data.
```php
apply_filters( 'woocommerce_get_item_data', array $item_data, array $cart_item )
```
-
**Note: Matches filter name in WooCommerce core.**
### Description
@@ -543,26 +471,23 @@ apply_filters( 'woocommerce_get_item_data', array $item_data, array $cart_item )
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
+| Argument | Type | Description |
+| ---------- | ----- | --------------------------------- |
| $item_data | array | Cart item data. Empty by default. |
-| $cart_item | array | Cart item array. |
+| $cart_item | array | Cart item array. |
### Returns
-
-`array`
+`array`
### Source
-
- - [StoreApi/Schemas/V1/CartItemSchema.php](../../src/StoreApi/Schemas/V1/CartItemSchema.php)
+- [StoreApi/Schemas/V1/CartItemSchema.php](../../../../src/StoreApi/Schemas/V1/CartItemSchema.php)
---
## woocommerce_new_customer_data
-
Filters customer data before a customer account is registered.
```php
@@ -575,32 +500,28 @@ apply_filters( 'woocommerce_new_customer_data', array $customer_data )
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
+| Argument | Type | Description |
+| -------------- | ----- | --------------------------------- |
| $customer_data | array | An array of customer (user) data. |
### Returns
-
-`array`
+`array`
### Source
-
- - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php)
+- [StoreApi/Routes/V1/Checkout.php](../../../../src/StoreApi/Routes/V1/Checkout.php)
---
## woocommerce_registration_errors
-
Filters registration errors before a customer account is registered.
```php
apply_filters( 'woocommerce_registration_errors', \WP_Error $errors, string $username, string $user_email )
```
-
**Note: Matches filter name in WooCommerce core.**
### Description
@@ -609,34 +530,30 @@ apply_filters( 'woocommerce_registration_errors', \WP_Error $errors, string $use
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $errors | \WP_Error | Error object. |
-| $username | string | Customer username. |
-| $user_email | string | Customer email address. |
+| Argument | Type | Description |
+| ----------- | --------- | ----------------------- |
+| $errors | \WP_Error | Error object. |
+| $username | string | Customer username. |
+| $user_email | string | Customer email address. |
### Returns
-
-`\WP_Error`
+`\WP_Error`
### Source
-
- - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php)
+- [StoreApi/Routes/V1/Checkout.php](../../../../src/StoreApi/Routes/V1/Checkout.php)
---
## ~~woocommerce_shared_settings~~
-
Filters the array of shared settings.
```php
apply_filters( 'woocommerce_shared_settings', array $data )
```
-
**Deprecated: This hook is deprecated and will be removed**
### Description
@@ -645,57 +562,50 @@ apply_filters( 'woocommerce_shared_settings', array $data )
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $data | array | Settings data. |
+| Argument | Type | Description |
+| -------- | ----- | -------------- |
+| $data | array | Settings data. |
### Returns
-
-`array`
+`array`
### Source
-
- - [Assets/AssetDataRegistry.php](../../src/Assets/AssetDataRegistry.php)
+- [Assets/AssetDataRegistry.php](../../../../src/Assets/AssetDataRegistry.php)
---
## woocommerce_shipping_package_name
-
Filters the shipping package name.
```php
apply_filters( 'woocommerce_shipping_package_name', string $shipping_package_name, string $package_id, array $package )
```
-
**Note: Matches filter name in WooCommerce core.**
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $shipping_package_name | string | Shipping package name. |
-| $package_id | string | Shipping package ID. |
-| $package | array | Shipping package from WooCommerce. |
+| Argument | Type | Description |
+| ---------------------- | ------ | ---------------------------------- |
+| $shipping_package_name | string | Shipping package name. |
+| $package_id | string | Shipping package ID. |
+| $package | array | Shipping package from WooCommerce. |
### Returns
-
`string` Shipping package name.
### Source
-
- - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php)
+- [StoreApi/Utilities/CartController.php](../../../../src/StoreApi/Utilities/CartController.php)
---
## woocommerce_show_page_title
-
We need to load the scripts here because when using block templates wp_head() gets run after the block template. As a result we are trying to enqueue required scripts before we have even registered them.
```php
@@ -704,19 +614,16 @@ apply_filters( 'woocommerce_show_page_title' )
### See
-
- - https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5328#issuecomment-989013447
+- https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5328#issuecomment-989013447
### Source
-
- - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php)
+- [BlockTypes/ClassicTemplate.php](../../../../src/BlockTypes/ClassicTemplate.php)
---
## woocommerce_store_api_disable_nonce_check
-
Filters the Store API nonce check.
```php
@@ -729,25 +636,22 @@ apply_filters( 'woocommerce_store_api_disable_nonce_check', boolean $disable_non
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
+| Argument | Type | Description |
+| -------------------- | ------- | --------------------------------------- |
| $disable_nonce_check | boolean | If true, nonce checks will be disabled. |
### Returns
-
-`boolean`
+`boolean`
### Source
-
- - [StoreApi/Routes/V1/AbstractCartRoute.php](../../src/StoreApi/Routes/V1/AbstractCartRoute.php)
+- [StoreApi/Routes/V1/AbstractCartRoute.php](../../../../src/StoreApi/Routes/V1/AbstractCartRoute.php)
---
## woocommerce_store_api_product_quantity_limit
-
Filters the quantity limit for a product being added to the cart via the Store API.
```php
@@ -760,25 +664,22 @@ apply_filters( 'woocommerce_store_api_product_quantity_limit', integer $quantity
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $quantity_limit | integer | Quantity limit which defaults to 9999 unless sold individually. |
-| $product | \WC_Product | Product instance. |
+| Argument | Type | Description |
+| --------------- | ----------- | --------------------------------------------------------------- |
+| $quantity_limit | integer | Quantity limit which defaults to 9999 unless sold individually. |
+| $product | \WC_Product | Product instance. |
### Returns
-
-`integer`
+`integer`
### Source
-
- - [StoreApi/Utilities/QuantityLimits.php](../../src/StoreApi/Utilities/QuantityLimits.php)
+- [StoreApi/Utilities/QuantityLimits.php](../../../../src/StoreApi/Utilities/QuantityLimits.php)
---
-## woocommerce_store_api_product_quantity_{$value_type}
-
+## woocommerce*store_api_product_quantity*{$value_type}
Filters the quantity minimum for a cart item in Store API. This allows extensions to control the minimum qty of items already within the cart.
@@ -792,34 +693,30 @@ apply_filters( 'woocommerce_store_api_product_quantity_{$value_type}', mixed $va
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $value | mixed | The value being filtered. |
-| $product | \WC_Product | The product object. |
+| Argument | Type | Description |
+| ---------- | ----------- | --------------------------------------------------------- |
+| $value | mixed | The value being filtered. |
+| $product | \WC_Product | The product object. |
| $cart_item | array, null | The cart item if the product exists in the cart, or null. |
### Returns
-
-`mixed`
+`mixed`
### Source
-
- - [StoreApi/Utilities/QuantityLimits.php](../../src/StoreApi/Utilities/QuantityLimits.php)
+- [StoreApi/Utilities/QuantityLimits.php](../../../../src/StoreApi/Utilities/QuantityLimits.php)
---
## woocommerce_variation_option_name
-
Filters the variation option name.
```php
apply_filters( 'woocommerce_variation_option_name', string $value, null $unused, string $taxonomy, \WC_Product $product )
```
-
**Note: Matches filter name in WooCommerce core.**
### Description
@@ -828,24 +725,23 @@ apply_filters( 'woocommerce_variation_option_name', string $value, null $unused,
### Parameters
-| Argument | Type | Description |
-| -------- | ---- | ----------- |
-| $value | string | The name to display. |
-| $unused | null | Unused because this is not a variation taxonomy. |
-| $taxonomy | string | Taxonomy or product attribute name. |
-| $product | \WC_Product | Product data. |
+| Argument | Type | Description |
+| --------- | ----------- | ------------------------------------------------ |
+| $value | string | The name to display. |
+| $unused | null | Unused because this is not a variation taxonomy. |
+| $taxonomy | string | Taxonomy or product attribute name. |
+| $product | \WC_Product | Product data. |
### Returns
-
-`string`
+`string`
### Source
-
- - [StoreApi/Schemas/V1/CartItemSchema.php](../../src/StoreApi/Schemas/V1/CartItemSchema.php)
+- [StoreApi/Schemas/V1/CartItemSchema.php](../../../../src/StoreApi/Schemas/V1/CartItemSchema.php)
---
+
---
@@ -855,4 +751,3 @@ apply_filters( 'woocommerce_variation_option_name', string $value, null $unused,
🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/hooks/filters.md)
-
diff --git a/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md b/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md
index 483e8b809..87069fb56 100644
--- a/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md
+++ b/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md
@@ -2,18 +2,34 @@
## Table of Contents
-- [`wc/store/cart`](#wcstorecart)
- - [Passed Parameters:](#passed-parameters)
- - [Key:](#key)
-- [`wc/store/cart/items`](#wcstorecartitems)
- - [Passed Parameters:](#passed-parameters-1)
- - [Key:](#key-1)
-- [`wc/store/products`](#wcstoreproducts)
- - [Passed Parameters:](#passed-parameters-2)
- - [Key:](#key-2)
+- [`wc/store/checkout`](#wcstorecheckout)
+ - [Passed Parameters](#passed-parameters)
+ - [Key](#key)
+- [`wc/store/cart`](#wcstorecart)
+ - [Passed Parameters](#passed-parameters-1)
+ - [Key](#key-1)
+- [`wc/store/cart/items`](#wcstorecartitems)
+ - [Passed Parameters](#passed-parameters-2)
+ - [Key](#key-2)
+- [`wc/store/products`](#wcstoreproducts)
+ - [Passed Parameters](#passed-parameters-3)
+ - [Key](#key-3)
To see how to add your data to Store API using ExtendSchema, [check this document](./extend-rest-api-add-data.md). This is a list of available endpoints that you can extend. If you want to add a new endpoint, [check this document](./extend-rest-api-new-endpoint.md).
+## `wc/store/checkout`
+
+The cartcheckout endpoint is extensible via ExtendSchema. The data is available via the `extensions` key in the response.
+
+### Passed Parameters
+
+- `data_callback`: none.
+- `schema_callback`: none.
+
+### Key
+
+- `CheckoutSchema::IDENTIFIER`
+
## `wc/store/cart`
The main cart endpoint is extensible via ExtendSchema. The data is available via the `extensions` key in the response.
diff --git a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md
index 0a87eb0e4..b2944d6e0 100644
--- a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md
+++ b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md
@@ -108,9 +108,10 @@ If you try to register again, under the same namespace, the previously registere
`ExtendSchema::register_update_callback`: Used to register a callback to be executed when the `cart/extensions` endpoint gets hit with a given namespace. It takes an array of arguments
-| Attribute | Type | Required | Description || ----------- | ---------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `namespace` | `string` | Yes | The namespace of your extension. This is used to determine which extension's callbacks should be executed. |
-| `callback` | `Callable` | Yes | The function/method (or Callable) that will be executed when the `cart/extensions` endpoint is hit with a `namespace` that matches the one supplied. The callable should take a single argument. The data passed into the callback via this argument will be an array containing whatever data you choose to pass to it. The callable does not need to return anything, if it does, then its return value will not be used. |
+| Attribute | Type | Required | Description |
+| ----------- | ---------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `namespace` | `string` | Yes | The namespace of your extension. This is used to determine which extension's callbacks should be executed. |
+| `callback` | `Callable` | Yes | The function/method (or Callable) that will be executed when the `cart/extensions` endpoint is hit with a `namespace` that matches the one supplied. The callable should take a single argument. The data passed into the callback via this argument will be an array containing whatever data you choose to pass to it. The callable does not need to return anything, if it does, then its return value will not be used. |
### JavaScript
@@ -125,9 +126,9 @@ If you try to register again, under the same namespace, the previously registere
You are the author of an extension that lets the shopper redeem points that they earn on your website for a discount on their order. There is a text field where the shopper can enter how many points they want to redeem, and a submit button that will apply the redemption.
-Your extension adds these UI elements to the sidebar in the Cart and Checkout blocks using the [`DiscountsMeta`](./available-slot-fills.md) Slot.
+Your extension adds these UI elements to the sidebar in the Cart and Checkout blocks using the [`DiscountsMeta`](../checkout-block/available-slot-fills.md) Slot.
-More information on how to use Slots is available in our [Slots and Fills documentation](./slot-fills.md).
+More information on how to use Slots is available in our [Slots and Fills documentation](../checkout-block/slot-fills.md).
Once implemented, the sidebar has a control added to it like this:
diff --git a/package-lock.json b/package-lock.json
index 546603c8e..c6a5cc7f2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,18 +1,18 @@
{
"name": "@woocommerce/block-library",
- "version": "8.3.0-dev",
+ "version": "8.6.0-dev",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@woocommerce/block-library",
- "version": "8.3.0-dev",
+ "version": "8.5.0-dev",
"hasInstallScript": true,
"license": "GPL-3.0+",
"dependencies": {
- "@wordpress/autop": "3.12.0",
+ "@wordpress/autop": "3.16.0",
"@wordpress/compose": "5.5.0",
- "@wordpress/deprecated": "3.12.0",
+ "@wordpress/deprecated": "3.16.0",
"@wordpress/icons": "6.1.1",
"@wordpress/notices": "3.12.0",
"@wordpress/plugins": "4.10.0",
@@ -36,7 +36,7 @@
"wordpress-components": "npm:@wordpress/components@14.2.0"
},
"devDependencies": {
- "@actions/core": "1.9.0",
+ "@actions/core": "1.9.1",
"@actions/github": "5.0.3",
"@automattic/color-studio": "2.5.0",
"@babel/cli": "7.18.9",
@@ -52,7 +52,7 @@
"@storybook/addon-storysource": "6.5.9",
"@storybook/addons": "6.5.9",
"@storybook/client-api": "6.5.9",
- "@storybook/react": "6.5.9",
+ "@storybook/react": "6.5.10",
"@testing-library/jest-dom": "5.16.4",
"@testing-library/react": "12.1.5",
"@testing-library/react-hooks": "7.0.2",
@@ -70,11 +70,14 @@
"@types/wordpress__block-editor": "6.0.6",
"@types/wordpress__blocks": "11.0.5",
"@types/wordpress__compose": "4.0.1",
- "@types/wordpress__data": "4.6.11",
+ "@types/wordpress__core-data": "^2.4.5",
+ "@types/wordpress__data": "^6.0.1",
"@types/wordpress__data-controls": "2.2.0",
+ "@types/wordpress__editor": "^11.0.0",
"@typescript-eslint/eslint-plugin": "5.30.5",
- "@typescript-eslint/parser": "5.31.0",
+ "@typescript-eslint/parser": "5.35.1",
"@woocommerce/api": "0.2.0",
+ "@woocommerce/data": "^4.1.0",
"@woocommerce/e2e-utils": "0.2.0",
"@woocommerce/eslint-plugin": "2.0.0",
"@woocommerce/woocommerce-rest-api": "1.0.1",
@@ -83,11 +86,11 @@
"@wordpress/base-styles": "4.0.4",
"@wordpress/block-editor": "8.2.0",
"@wordpress/blocks": "11.1.5",
- "@wordpress/browserslist-config": "4.1.2",
+ "@wordpress/browserslist-config": "5.0.0",
"@wordpress/components": "19.1.5",
"@wordpress/data-controls": "2.2.7",
"@wordpress/dependency-extraction-webpack-plugin": "3.2.1",
- "@wordpress/dom": "3.2.7",
+ "@wordpress/dom": "3.16.0",
"@wordpress/e2e-test-utils": "7.8.0",
"@wordpress/e2e-tests": "4.6.0",
"@wordpress/element": "4.0.4",
@@ -107,9 +110,9 @@
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
"chalk": "4.1.2",
"circular-dependency-plugin": "5.2.2",
- "commander": "9.3.0",
+ "commander": "9.4.0",
"copy-webpack-plugin": "6.4.1",
- "core-js": "3.23.3",
+ "core-js": "3.25.0",
"create-file-webpack": "1.0.2",
"cross-env": "7.0.3",
"cssnano": "5.1.12",
@@ -185,12 +188,13 @@
}
},
"node_modules/@actions/core": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.0.tgz",
- "integrity": "sha512-5pbM693Ih59ZdUhgk+fts+bUWTnIdHV3kwOSr+QIoFHMLg7Gzhwm0cifDY/AG68ekEJAkHnQVpcy4f6GjmzBCA==",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz",
+ "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==",
"dev": true,
"dependencies": {
- "@actions/http-client": "^2.0.1"
+ "@actions/http-client": "^2.0.1",
+ "uuid": "^8.3.2"
}
},
"node_modules/@actions/github": {
@@ -6187,76 +6191,76 @@
"peer": true
},
"node_modules/@react-spring/animated": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.4.4.tgz",
- "integrity": "sha512-e9xnuBaUTD+NolKikUmrGWjX8AVCPyj1GcEgjgq9E+0sXKv46UY7cm2EmB6mUDTxWIDVKebARY++xT4nGDraBQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.5.2.tgz",
+ "integrity": "sha512-oRlX+MmYLbK8IuUZR7SQUnRjXxJ4PMIZeBkBd1SUWVgVJAHMTfJzPltzm+I6p59qX+qLlklYHfnWaonQKDqLuQ==",
"dev": true,
"dependencies": {
- "@react-spring/shared": "~9.4.4",
- "@react-spring/types": "~9.4.4"
+ "@react-spring/shared": "~9.5.2",
+ "@react-spring/types": "~9.5.2"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0"
+ "react": "^16.8.0 || >=17.0.0 || >=18.0.0"
}
},
"node_modules/@react-spring/core": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.4.4.tgz",
- "integrity": "sha512-llgb0ljFyjMB0JhWsaFHOi9XFT8n1jBMVs1IFY2ipIBerWIRWrgUmIpakLPHTa4c4jwqTaDSwX90s2a0iN7dxQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.5.2.tgz",
+ "integrity": "sha512-UMRtFH6EfebMp/NMDGCUY5+hZFXsg9iT9hzt/iPzJSz2WMXKBjLoFZHJXcmiVOrIhzHmg1O0pFECn1Wp6pZ5Gw==",
"dev": true,
"dependencies": {
- "@react-spring/animated": "~9.4.4",
- "@react-spring/rafz": "~9.4.4",
- "@react-spring/shared": "~9.4.4",
- "@react-spring/types": "~9.4.4"
+ "@react-spring/animated": "~9.5.2",
+ "@react-spring/rafz": "~9.5.2",
+ "@react-spring/shared": "~9.5.2",
+ "@react-spring/types": "~9.5.2"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/react-spring/donate"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0"
+ "react": "^16.8.0 || >=17.0.0 || >=18.0.0"
}
},
"node_modules/@react-spring/rafz": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.4.4.tgz",
- "integrity": "sha512-5ki/sQ06Mdf8AuFstSt5zbNNicRT4LZogiJttDAww1ozhuvemafNWEHxhzcULgCPCDu2s7HsroaISV7+GQWrhw==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.5.2.tgz",
+ "integrity": "sha512-xHSRXKKBI/wDUkZGrspkOm4VlgN6lZi8Tw9Jzibp9QKf3neoof+U2mDNgklvnLaasymtUwAq9o4ZfFvQIVNgPQ==",
"dev": true
},
"node_modules/@react-spring/shared": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.4.4.tgz",
- "integrity": "sha512-ySVgScDZlhm/+Iy2smY9i/DDrShArY0j6zjTS/Re1lasKnhq8qigoGiAxe8xMPJNlCaj3uczCqHy3TY9bKRtfQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.5.2.tgz",
+ "integrity": "sha512-/OSf2sjwY4BUnjZL6xMC+H3WxOOhMUCk+yZwgdj40XuyUpk6E6tYyiPeD9Yq5GLsZHodkvE1syVMRVReL4ndAg==",
"dev": true,
"dependencies": {
- "@react-spring/rafz": "~9.4.4",
- "@react-spring/types": "~9.4.4"
+ "@react-spring/rafz": "~9.5.2",
+ "@react-spring/types": "~9.5.2"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0"
+ "react": "^16.8.0 || >=17.0.0 || >=18.0.0"
}
},
"node_modules/@react-spring/types": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.4.4.tgz",
- "integrity": "sha512-KpxKt/D//q/t/6FBcde/RE36LKp8PpWu7kFEMLwpzMGl9RpcexunmYOQJWwmJWtkQjgE1YRr7DzBMryz6La1cQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.5.2.tgz",
+ "integrity": "sha512-n/wBRSHPqTmEd4BFWY6TeR1o/UY+3ujoqMxLjqy90CcY/ozJzDRuREL3c+pxMeTF2+B7dX33dTPCtFMX51nbxg==",
"dev": true
},
"node_modules/@react-spring/web": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.4.4.tgz",
- "integrity": "sha512-iJmOLdhcuizriUlu/xqBc5y8KaFts+UI+iC+GxyTwBtzxA9czKiSAZW2ESuhG8stafa3jncwjfTQQp84KN36cw==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.5.2.tgz",
+ "integrity": "sha512-cusTjbOGTgtbsnpBDjb6Ia+B0lQLE0Fk5rGDog6Sww7hWnLIQ521PMiOBnAWtkntB9eXDUfj7L91nwJviEC0lw==",
"dev": true,
"dependencies": {
- "@react-spring/animated": "~9.4.4",
- "@react-spring/core": "~9.4.4",
- "@react-spring/shared": "~9.4.4",
- "@react-spring/types": "~9.4.4"
+ "@react-spring/animated": "~9.5.2",
+ "@react-spring/core": "~9.5.2",
+ "@react-spring/shared": "~9.5.2",
+ "@react-spring/types": "~9.5.2"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0",
- "react-dom": "^16.8.0 || ^17.0.0"
+ "react": "^16.8.0 || >=17.0.0 || >=18.0.0",
+ "react-dom": "^16.8.0 || >=17.0.0 || >=18.0.0"
}
},
"node_modules/@romainberger/css-diff": {
@@ -7153,28 +7157,28 @@
}
},
"node_modules/@storybook/builder-webpack4": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz",
- "integrity": "sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.10.tgz",
+ "integrity": "sha512-AoKjsCNoQQoZXYwBDxO8s+yVEd5FjBJAaysEuUTHq2fb81jwLrGcEOo6hjw4jqfugZQIzYUEjPazlvubS78zpw==",
"dev": true,
"dependencies": {
"@babel/core": "^7.12.10",
- "@storybook/addons": "6.5.9",
- "@storybook/api": "6.5.9",
- "@storybook/channel-postmessage": "6.5.9",
- "@storybook/channels": "6.5.9",
- "@storybook/client-api": "6.5.9",
- "@storybook/client-logger": "6.5.9",
- "@storybook/components": "6.5.9",
- "@storybook/core-common": "6.5.9",
- "@storybook/core-events": "6.5.9",
- "@storybook/node-logger": "6.5.9",
- "@storybook/preview-web": "6.5.9",
- "@storybook/router": "6.5.9",
+ "@storybook/addons": "6.5.10",
+ "@storybook/api": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-api": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/components": "6.5.10",
+ "@storybook/core-common": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/preview-web": "6.5.10",
+ "@storybook/router": "6.5.10",
"@storybook/semver": "^7.3.2",
- "@storybook/store": "6.5.9",
- "@storybook/theming": "6.5.9",
- "@storybook/ui": "6.5.9",
+ "@storybook/store": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@storybook/ui": "6.5.10",
"@types/node": "^14.0.10 || ^16.0.0",
"@types/webpack": "^4.41.26",
"autoprefixer": "^9.8.6",
@@ -7220,6 +7224,451 @@
}
}
},
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/channel-postmessage": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.10.tgz",
+ "integrity": "sha512-t9PTA0UzFvYa3IlOfpBOolfrRMPTjUMIeCQ6FNyM0aj5GqLKSvoQzP8NeoRpIrvyf6ljFKKdaMaZ3fiCvh45ag==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "qs": "^6.10.0",
+ "telejson": "^6.0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/client-api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.10.tgz",
+ "integrity": "sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "@types/qs": "^6.9.5",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/components": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.10.tgz",
+ "integrity": "sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common/node_modules/fork-ts-checker-webpack-plugin": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz",
+ "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.8.3",
+ "@types/json-schema": "^7.0.5",
+ "chalk": "^4.1.0",
+ "chokidar": "^3.4.2",
+ "cosmiconfig": "^6.0.0",
+ "deepmerge": "^4.2.2",
+ "fs-extra": "^9.0.0",
+ "glob": "^7.1.6",
+ "memfs": "^3.1.2",
+ "minimatch": "^3.0.4",
+ "schema-utils": "2.7.0",
+ "semver": "^7.3.2",
+ "tapable": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "yarn": ">=1.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">= 6",
+ "typescript": ">= 2.7",
+ "vue-template-compiler": "*",
+ "webpack": ">= 4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ },
+ "vue-template-compiler": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common/node_modules/schema-utils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+ "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "ajv": "^6.12.2",
+ "ajv-keywords": "^3.4.1"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common/node_modules/semver": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "dependencies": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/preview-web": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.10.tgz",
+ "integrity": "sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "ansi-to-html": "^0.6.11",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "unfetch": "^4.2.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/store": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz",
+ "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "slash": "^3.0.0",
+ "stable": "^0.1.8",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/@storybook/builder-webpack4/node_modules/ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -7287,20 +7736,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/@storybook/builder-webpack4/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@storybook/builder-webpack4/node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -7322,6 +7757,22 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
+ "node_modules/@storybook/builder-webpack4/node_modules/cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "dev": true,
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.7.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/builder-webpack4/node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -7375,6 +7826,31 @@
"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
}
},
+ "node_modules/@storybook/builder-webpack4/node_modules/find-cache-dir/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/find-cache-dir/node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin": {
"version": "4.1.6",
"resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
@@ -7394,6 +7870,47 @@
"yarn": ">=1.0.0"
}
},
+ "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@storybook/builder-webpack4/node_modules/glob-promise": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz",
@@ -7480,27 +7997,6 @@
"node": ">= 10.13.0"
}
},
- "node_modules/@storybook/builder-webpack4/node_modules/jest-worker/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/builder-webpack4/node_modules/jest-worker/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@storybook/builder-webpack4/node_modules/locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -7588,31 +8084,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@storybook/builder-webpack4/node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/builder-webpack4/node_modules/pkg-dir/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@storybook/builder-webpack4/node_modules/postcss": {
"version": "7.0.39",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
@@ -7639,6 +8110,15 @@
"semver": "bin/semver"
}
},
+ "node_modules/@storybook/builder-webpack4/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/builder-webpack4/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -7648,18 +8128,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/@storybook/builder-webpack4/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@storybook/builder-webpack4/node_modules/tapable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
@@ -7757,13 +8225,13 @@
}
},
"node_modules/@storybook/channel-websocket": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz",
- "integrity": "sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.10.tgz",
+ "integrity": "sha512-RTXMZbMWCS3xU+4GVIdfnUXsKcwg/WTozy88/5OxaKjGw6KgRedqLAQJKJ6Y5XlnwIcWelirkHj/COwTTXhbPg==",
"dev": true,
"dependencies": {
- "@storybook/channels": "6.5.9",
- "@storybook/client-logger": "6.5.9",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
"core-js": "^3.8.2",
"global": "^4.4.0",
"telejson": "^6.0.8"
@@ -7773,6 +8241,35 @@
"url": "https://opencollective.com/storybook"
}
},
+ "node_modules/@storybook/channel-websocket/node_modules/@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/channel-websocket/node_modules/@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
"node_modules/@storybook/channels": {
"version": "6.5.9",
"resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.9.tgz",
@@ -7881,13 +8378,13 @@
}
},
"node_modules/@storybook/core": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz",
- "integrity": "sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.10.tgz",
+ "integrity": "sha512-K86yYa0tYlMxADlwQTculYvPROokQau09SCVqpsLg3wJCTvYFL4+SIqcYoyBSbFmHOdnYbJgPydjN33MYLiOZQ==",
"dev": true,
"dependencies": {
- "@storybook/core-client": "6.5.9",
- "@storybook/core-server": "6.5.9"
+ "@storybook/core-client": "6.5.10",
+ "@storybook/core-server": "6.5.10"
},
"funding": {
"type": "opencollective",
@@ -7911,21 +8408,21 @@
}
},
"node_modules/@storybook/core-client": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz",
- "integrity": "sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.10.tgz",
+ "integrity": "sha512-THsIjNrOrampTl0Lgfjvfjk1JnktKb4CQLOM80KpQb4cjDqorBjJmErzUkUQ2y3fXvrDmQ/kUREkShET4XEdtA==",
"dev": true,
"dependencies": {
- "@storybook/addons": "6.5.9",
- "@storybook/channel-postmessage": "6.5.9",
- "@storybook/channel-websocket": "6.5.9",
- "@storybook/client-api": "6.5.9",
- "@storybook/client-logger": "6.5.9",
- "@storybook/core-events": "6.5.9",
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/channel-websocket": "6.5.10",
+ "@storybook/client-api": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
- "@storybook/preview-web": "6.5.9",
- "@storybook/store": "6.5.9",
- "@storybook/ui": "6.5.9",
+ "@storybook/preview-web": "6.5.10",
+ "@storybook/store": "6.5.10",
+ "@storybook/ui": "6.5.10",
"airbnb-js-shims": "^2.2.1",
"ansi-to-html": "^0.6.11",
"core-js": "^3.8.2",
@@ -7952,6 +8449,276 @@
}
}
},
+ "node_modules/@storybook/core-client/node_modules/@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/channel-postmessage": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.10.tgz",
+ "integrity": "sha512-t9PTA0UzFvYa3IlOfpBOolfrRMPTjUMIeCQ6FNyM0aj5GqLKSvoQzP8NeoRpIrvyf6ljFKKdaMaZ3fiCvh45ag==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "qs": "^6.10.0",
+ "telejson": "^6.0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/client-api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.10.tgz",
+ "integrity": "sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "@types/qs": "^6.9.5",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/preview-web": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.10.tgz",
+ "integrity": "sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "ansi-to-html": "^0.6.11",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "unfetch": "^4.2.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/store": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz",
+ "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "slash": "^3.0.0",
+ "stable": "^0.1.8",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-client/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/core-common": {
"version": "6.5.9",
"resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.9.tgz",
@@ -8061,23 +8828,23 @@
}
},
"node_modules/@storybook/core-server": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz",
- "integrity": "sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.10.tgz",
+ "integrity": "sha512-jqwpA0ccA8X5ck4esWBid04+cEIVqirdAcqJeNb9IZAD+bRreO4Im8ilzr7jc5AmQ9fkqHs2NByFKh9TITp8NQ==",
"dev": true,
"dependencies": {
"@discoveryjs/json-ext": "^0.5.3",
- "@storybook/builder-webpack4": "6.5.9",
- "@storybook/core-client": "6.5.9",
- "@storybook/core-common": "6.5.9",
- "@storybook/core-events": "6.5.9",
+ "@storybook/builder-webpack4": "6.5.10",
+ "@storybook/core-client": "6.5.10",
+ "@storybook/core-common": "6.5.10",
+ "@storybook/core-events": "6.5.10",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
- "@storybook/csf-tools": "6.5.9",
- "@storybook/manager-webpack4": "6.5.9",
- "@storybook/node-logger": "6.5.9",
+ "@storybook/csf-tools": "6.5.10",
+ "@storybook/manager-webpack4": "6.5.10",
+ "@storybook/node-logger": "6.5.10",
"@storybook/semver": "^7.3.2",
- "@storybook/store": "6.5.9",
- "@storybook/telemetry": "6.5.9",
+ "@storybook/store": "6.5.10",
+ "@storybook/telemetry": "6.5.10",
"@types/node": "^14.0.10 || ^16.0.0",
"@types/node-fetch": "^2.5.7",
"@types/pretty-hrtime": "^1.0.0",
@@ -8132,6 +8899,268 @@
}
}
},
+ "node_modules/@storybook/core-server/node_modules/@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "dependencies": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/@storybook/store": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz",
+ "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "slash": "^3.0.0",
+ "stable": "^0.1.8",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/@storybook/core-server/node_modules/commander": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
@@ -8181,9 +9210,9 @@
}
},
"node_modules/@storybook/csf-tools": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz",
- "integrity": "sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.10.tgz",
+ "integrity": "sha512-H77kZQEisu7+skzeIbNZwmE09OqLjwJTeFhLN1pcjxKVa30LEI3pBHcNBxVKqgxl+Yg3KkB7W/ArLO2N+i2ohw==",
"dev": true,
"dependencies": {
"@babel/core": "^7.12.10",
@@ -8249,20 +9278,20 @@
}
},
"node_modules/@storybook/manager-webpack4": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz",
- "integrity": "sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.10.tgz",
+ "integrity": "sha512-N/TlNDhuhARuFipR/ZJ/xEVESz23iIbCsZ4VNehLHm8PpiGlQUehk+jMjWmz5XV0bJItwjRclY+CU3GjZKblfQ==",
"dev": true,
"dependencies": {
"@babel/core": "^7.12.10",
"@babel/plugin-transform-template-literals": "^7.12.1",
"@babel/preset-react": "^7.12.10",
- "@storybook/addons": "6.5.9",
- "@storybook/core-client": "6.5.9",
- "@storybook/core-common": "6.5.9",
- "@storybook/node-logger": "6.5.9",
- "@storybook/theming": "6.5.9",
- "@storybook/ui": "6.5.9",
+ "@storybook/addons": "6.5.10",
+ "@storybook/core-client": "6.5.10",
+ "@storybook/core-common": "6.5.10",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@storybook/ui": "6.5.10",
"@types/node": "^14.0.10 || ^16.0.0",
"@types/webpack": "^4.41.26",
"babel-loader": "^8.0.0",
@@ -8304,6 +9333,237 @@
}
}
},
+ "node_modules/@storybook/manager-webpack4/node_modules/@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/manager-webpack4/node_modules/@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/manager-webpack4/node_modules/@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/manager-webpack4/node_modules/@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/manager-webpack4/node_modules/@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/manager-webpack4/node_modules/@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/manager-webpack4/node_modules/@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "dependencies": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/manager-webpack4/node_modules/@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/manager-webpack4/node_modules/@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/@storybook/manager-webpack4/node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -8327,6 +9587,31 @@
"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
}
},
+ "node_modules/@storybook/manager-webpack4/node_modules/find-cache-dir/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/manager-webpack4/node_modules/find-cache-dir/node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/manager-webpack4/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -8410,27 +9695,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@storybook/manager-webpack4/node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@storybook/manager-webpack4/node_modules/pkg-dir/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "node_modules/@storybook/manager-webpack4/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
"engines": {
"node": ">=8"
}
@@ -8593,24 +9862,24 @@
}
},
"node_modules/@storybook/react": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz",
- "integrity": "sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.10.tgz",
+ "integrity": "sha512-m8S1qQrwA7pDGwdKEvL6LV3YKvSzVUY297Fq+xcTU3irnAy4sHDuFoLqV6Mi1510mErK1r8+rf+0R5rEXB219g==",
"dev": true,
"dependencies": {
"@babel/preset-flow": "^7.12.1",
"@babel/preset-react": "^7.12.10",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
- "@storybook/addons": "6.5.9",
- "@storybook/client-logger": "6.5.9",
- "@storybook/core": "6.5.9",
- "@storybook/core-common": "6.5.9",
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core": "6.5.10",
+ "@storybook/core-common": "6.5.10",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
- "@storybook/docs-tools": "6.5.9",
- "@storybook/node-logger": "6.5.9",
+ "@storybook/docs-tools": "6.5.10",
+ "@storybook/node-logger": "6.5.10",
"@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0",
"@storybook/semver": "^7.3.2",
- "@storybook/store": "6.5.9",
+ "@storybook/store": "6.5.10",
"@types/estree": "^0.0.51",
"@types/node": "^14.14.20 || ^16.0.0",
"@types/webpack-env": "^1.16.0",
@@ -8673,6 +9942,288 @@
}
}
},
+ "node_modules/@storybook/react/node_modules/@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/pkg-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/docs-tools": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.10.tgz",
+ "integrity": "sha512-/bvYgOO+CxMEcHifkjJg0A60OTGOhcjGxnsB1h0gJuxMrqA/7Qwc108bFmPiX0eiD1BovFkZLJV4O6OY7zP5Vw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "core-js": "^3.8.2",
+ "doctrine": "^3.0.0",
+ "lodash": "^4.17.21",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "dependencies": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
"node_modules/@storybook/react/node_modules/@storybook/react-docgen-typescript-plugin": {
"version": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0",
"resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz",
@@ -8692,6 +10243,78 @@
"webpack": ">= 4"
}
},
+ "node_modules/@storybook/react/node_modules/@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/store": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz",
+ "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "slash": "^3.0.0",
+ "stable": "^0.1.8",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/react/node_modules/@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/@storybook/react/node_modules/acorn": {
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
@@ -8833,6 +10456,15 @@
"typescript": ">= 4.3.x"
}
},
+ "node_modules/@storybook/react/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/router": {
"version": "6.5.9",
"resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.9.tgz",
@@ -9001,13 +10633,13 @@
}
},
"node_modules/@storybook/telemetry": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz",
- "integrity": "sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.10.tgz",
+ "integrity": "sha512-+M5HILDFS8nDumLxeSeAwi1MTzIuV6UWzV4yB2wcsEXOBTdplcl9oYqFKtlst78oOIdGtpPYxYfivDlqxC2K4g==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "6.5.9",
- "@storybook/core-common": "6.5.9",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-common": "6.5.10",
"chalk": "^4.1.0",
"core-js": "^3.8.2",
"detect-package-manager": "^2.0.1",
@@ -9024,6 +10656,108 @@
"url": "https://opencollective.com/storybook"
}
},
+ "node_modules/@storybook/telemetry/node_modules/@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/telemetry/node_modules/@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/telemetry/node_modules/@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "dependencies": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
"node_modules/@storybook/telemetry/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -9039,6 +10773,15 @@
"node": ">=10"
}
},
+ "node_modules/@storybook/telemetry/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/theming": {
"version": "6.5.9",
"resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.9.tgz",
@@ -9060,25 +10803,192 @@
}
},
"node_modules/@storybook/ui": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz",
- "integrity": "sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.10.tgz",
+ "integrity": "sha512-6iaoaRAiTqB1inTw35vao+5hjcDE0Qa0A3a9ZIeNa6yHvpB1k0lO/N/0PMrRdVvySYpXVD1iry4z4QYdo1rU+w==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/components": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "resolve-from": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/ui/node_modules/@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
"dev": true,
"dependencies": {
- "@storybook/addons": "6.5.9",
- "@storybook/api": "6.5.9",
- "@storybook/channels": "6.5.9",
- "@storybook/client-logger": "6.5.9",
- "@storybook/components": "6.5.9",
- "@storybook/core-events": "6.5.9",
- "@storybook/router": "6.5.9",
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/ui/node_modules/@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
"@storybook/semver": "^7.3.2",
- "@storybook/theming": "6.5.9",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/ui/node_modules/@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/ui/node_modules/@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/ui/node_modules/@storybook/components": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.10.tgz",
+ "integrity": "sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/theming": "6.5.10",
"core-js": "^3.8.2",
"memoizerific": "^1.11.3",
"qs": "^6.10.0",
"regenerator-runtime": "^0.13.7",
- "resolve-from": "^5.0.0"
+ "util-deprecate": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/ui/node_modules/@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ }
+ },
+ "node_modules/@storybook/ui/node_modules/@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@storybook/ui/node_modules/@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
},
"funding": {
"type": "opencollective",
@@ -9633,6 +11543,12 @@
"@types/node": "*"
}
},
+ "node_modules/@types/d3-time-format": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.3.1.tgz",
+ "integrity": "sha512-fck0Z9RGfIQn3GJIEKVrp15h9m6Vlg0d5XXeiE/6+CQiBmMDZxfR21XtjEPuDeg7gC3bBM0SdieA5XF3GW1wKA==",
+ "dev": true
+ },
"node_modules/@types/dinero.js": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@types/dinero.js/-/dinero.js-1.9.0.tgz",
@@ -10342,14 +12258,20 @@
"node": ">=12"
}
},
+ "node_modules/@types/wordpress__core-data": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/@types/wordpress__core-data/-/wordpress__core-data-2.4.5.tgz",
+ "integrity": "sha512-DfLCkfGSDepv7U/fBKSdl5rcOUYbHiq+6L1JUivtIlZcDCT99uz/VTSSxZW/yq2kMRp1U8FZ/Iluj0fHUM2UVg==",
+ "dev": true
+ },
"node_modules/@types/wordpress__data": {
- "version": "4.6.11",
- "resolved": "https://registry.npmjs.org/@types/wordpress__data/-/wordpress__data-4.6.11.tgz",
- "integrity": "sha512-e2Nufi1J6RD1+Tq6bsosHT2ROiagPkeJoWPcgPIkvUR9ujT7o5Bl7iawhIp/o7Iu4E3OUIR6IBr3FYUwnP2MNA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@types/wordpress__data/-/wordpress__data-6.0.1.tgz",
+ "integrity": "sha512-jTLl9mbw54rUq4wuTEmg9bBUaV66MIbg7vVoutpf3Etdnk+kwsuucAdoW+mJTzKEVkGQB5LDIZ/vohd6QrtQ2w==",
"dev": true,
"dependencies": {
"@types/react": "*",
- "redux": "^4.0.1"
+ "redux": "^4.1.0"
}
},
"node_modules/@types/wordpress__data-controls": {
@@ -10376,12 +12298,39 @@
"node": ">=12"
}
},
+ "node_modules/@types/wordpress__editor": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@types/wordpress__editor/-/wordpress__editor-11.0.0.tgz",
+ "integrity": "sha512-Ee/1dvsQo6Nv7pIO9Z/rseQwF09YDa1VVLle93CDedyRuK2cRPtZzVlrUQ2sDSMsFbC0GVB3zM0yXFKqsHtLCA==",
+ "dev": true,
+ "dependencies": {
+ "@types/react": "*",
+ "@types/wordpress__block-editor": "*",
+ "@types/wordpress__blocks": "*",
+ "@types/wordpress__components": "*",
+ "@types/wordpress__core-data": "*",
+ "@types/wordpress__data": "*",
+ "@types/wordpress__media-utils": "*",
+ "@wordpress/element": "^4.0.0"
+ }
+ },
"node_modules/@types/wordpress__keycodes": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@types/wordpress__keycodes/-/wordpress__keycodes-2.3.1.tgz",
"integrity": "sha512-CUZv3WdPvWqnEwojbc4yEttwZlvsMGI8YurgB9CHVJXx6nQ4U2RU6PB0Mv7nxATufduFDMKq8TNpCHBenZqEjQ==",
"dev": true
},
+ "node_modules/@types/wordpress__media-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/wordpress__media-utils/-/wordpress__media-utils-3.0.0.tgz",
+ "integrity": "sha512-iNQoyc9BD8HevjABZPh4L2bKEy/UYMb8+iswjn8AgUYjBpu8Y1x+9f+Zc6JRu/HEsFyEprY5LjSOxRLjti1gRQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/wordpress__block-editor": "*",
+ "@types/wordpress__core-data": "*",
+ "@wordpress/element": "^4.0.0"
+ }
+ },
"node_modules/@types/wordpress__notices": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/@types/wordpress__notices/-/wordpress__notices-3.3.0.tgz",
@@ -10617,14 +12566,14 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz",
- "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz",
+ "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.31.0",
- "@typescript-eslint/types": "5.31.0",
- "@typescript-eslint/typescript-estree": "5.31.0",
+ "@typescript-eslint/scope-manager": "5.35.1",
+ "@typescript-eslint/types": "5.35.1",
+ "@typescript-eslint/typescript-estree": "5.35.1",
"debug": "^4.3.4"
},
"engines": {
@@ -10644,13 +12593,13 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz",
- "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz",
+ "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.31.0",
- "@typescript-eslint/visitor-keys": "5.31.0"
+ "@typescript-eslint/types": "5.35.1",
+ "@typescript-eslint/visitor-keys": "5.35.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -10661,9 +12610,9 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz",
- "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz",
+ "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -10674,13 +12623,13 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz",
- "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz",
+ "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.31.0",
- "@typescript-eslint/visitor-keys": "5.31.0",
+ "@typescript-eslint/types": "5.35.1",
+ "@typescript-eslint/visitor-keys": "5.35.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -10701,12 +12650,12 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz",
- "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz",
+ "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.31.0",
+ "@typescript-eslint/types": "5.35.1",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
@@ -11167,6 +13116,108 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
+ "node_modules/@woocommerce/data": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@woocommerce/data/-/data-4.1.0.tgz",
+ "integrity": "sha512-K8MuPH1oYLeeKOS8hjjd0Iblrsvq09c9SMpcSjcE2Etnx8OFom1MPOOjeUQTGTg/tgDelOPqw30sGsGzDPi4Lg==",
+ "dev": true,
+ "dependencies": {
+ "@woocommerce/date": "4.2.0",
+ "@woocommerce/navigation": "8.1.0",
+ "@wordpress/api-fetch": "^6.0.1",
+ "@wordpress/compose": "^5.1.2",
+ "@wordpress/core-data": "^4.1.2",
+ "@wordpress/data": "^6.3.0",
+ "@wordpress/data-controls": "^2.3.2",
+ "@wordpress/deprecated": "^3.3.1",
+ "@wordpress/element": "^4.1.1",
+ "@wordpress/hooks": "^3.5.0",
+ "@wordpress/i18n": "^4.3.1",
+ "@wordpress/url": "^3.4.1",
+ "dompurify": "^2.3.6",
+ "md5": "^2.3.0",
+ "qs": "^6.10.3",
+ "rememo": "^4.0.0"
+ },
+ "peerDependencies": {
+ "@wordpress/core-data": "^4.1.0",
+ "moment": "^2.18.1",
+ "react": "^17.0.0",
+ "react-dom": "^17.0.0"
+ }
+ },
+ "node_modules/@woocommerce/data/node_modules/@wordpress/data-controls": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-2.14.0.tgz",
+ "integrity": "sha512-yQqq7PztVgivod6ACzL8iSyRTLFjFPrF7omgHHeXXXlf9CuuWlAh6fFV/40PlDTgc3IJS5T0oUxzVW2QK2Brdw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/api-fetch": "^6.11.0",
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/deprecated": "^3.14.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0"
+ }
+ },
+ "node_modules/@woocommerce/data/node_modules/@wordpress/element": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "@types/react": "^17.0.37",
+ "@types/react-dom": "^17.0.11",
+ "@wordpress/escape-html": "^2.14.0",
+ "lodash": "^4.17.21",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@woocommerce/data/node_modules/@wordpress/url": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.15.0.tgz",
+ "integrity": "sha512-LLlgCMbherqqnxAuK6kb997MKkzfnvkyQQ5RazBQKBn//RBXrW/w6BMVglm4QjV7L65N/IfqFd36QLZDMuiYDA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "remove-accents": "^0.4.2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@woocommerce/data/node_modules/rememo": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz",
+ "integrity": "sha512-x/T5q/pCDh8k4OlvJGqkI3eO+O8hmJv9HhJHo4avwlluwUpDbteDvyqw1PTarEITkeH9bfW6GSKeRke+XKgykw==",
+ "dev": true
+ },
+ "node_modules/@woocommerce/date": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@woocommerce/date/-/date-4.2.0.tgz",
+ "integrity": "sha512-6Aop2IkYLMmJ34BHqT55P6/T4FaoDGAbAL+z0TnPqQNnKn4RJ55rmhSGI34VQwa4541bAeD0pWQeMaP1Fpg6Ow==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-time-format": "^2.3.0",
+ "@wordpress/date": "^4.3.1",
+ "@wordpress/i18n": "^4.3.1",
+ "moment": "^2.29.1",
+ "moment-timezone": "^0.5.34",
+ "qs": "^6.10.3"
+ },
+ "peerDependencies": {
+ "lodash": "^4.17.0"
+ }
+ },
"node_modules/@woocommerce/e2e-utils": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@woocommerce/e2e-utils/-/e2e-utils-0.2.0.tgz",
@@ -11278,6 +13329,338 @@
"requireindex": "^1.2.0"
}
},
+ "node_modules/@woocommerce/navigation": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@woocommerce/navigation/-/navigation-8.1.0.tgz",
+ "integrity": "sha512-Ifl8IYRLYlbxk6RNuuVorMaCoOs8aFWEo8oSU++SqFfyjPi893Nuk6NJYVvAVhxFdwPfw9RptvQ/q8sIusPihA==",
+ "dev": true,
+ "dependencies": {
+ "@wordpress/api-fetch": "^6.0.1",
+ "@wordpress/components": "^19.5.0",
+ "@wordpress/compose": "^5.1.2",
+ "@wordpress/element": "^4.1.1",
+ "@wordpress/hooks": "^3.5.0",
+ "@wordpress/notices": "^3.3.2",
+ "@wordpress/url": "^3.4.1",
+ "history": "^5.3.0",
+ "qs": "^6.10.3"
+ },
+ "peerDependencies": {
+ "lodash": "^4.17.0"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/@wordpress/components": {
+ "version": "19.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.16.0.tgz",
+ "integrity": "sha512-7GYIIBGD8Z0xaCw6k6qiWMTMQt8y01IvvKGgzoLYyoZqPwGyPK4DjCJVcILNHOivkI8mi+da3vq1ku9IkMNrPg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "@emotion/cache": "^11.7.1",
+ "@emotion/css": "^11.7.1",
+ "@emotion/react": "^11.7.1",
+ "@emotion/serialize": "^1.0.2",
+ "@emotion/styled": "^11.6.0",
+ "@emotion/utils": "1.0.0",
+ "@floating-ui/react-dom": "0.6.3",
+ "@use-gesture/react": "^10.2.6",
+ "@wordpress/a11y": "^3.14.0",
+ "@wordpress/compose": "^5.12.0",
+ "@wordpress/date": "^4.14.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/escape-html": "^2.14.0",
+ "@wordpress/hooks": "^3.14.0",
+ "@wordpress/i18n": "^4.14.0",
+ "@wordpress/icons": "^9.5.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "@wordpress/primitives": "^3.12.0",
+ "@wordpress/rich-text": "^5.12.0",
+ "@wordpress/warning": "^2.14.0",
+ "classnames": "^2.3.1",
+ "colord": "^2.7.0",
+ "dom-scroll-into-view": "^1.2.1",
+ "downshift": "^6.0.15",
+ "framer-motion": "^6.2.8",
+ "gradient-parser": "^0.1.5",
+ "highlight-words-core": "^1.2.2",
+ "lodash": "^4.17.21",
+ "memize": "^1.1.0",
+ "moment": "^2.26.0",
+ "re-resizable": "^6.4.0",
+ "react-colorful": "^5.3.1",
+ "react-dates": "^21.8.0",
+ "reakit": "^1.3.8",
+ "remove-accents": "^0.4.2",
+ "uuid": "^8.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0",
+ "react-dom": "^17.0.0"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/@wordpress/compose": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.12.0.tgz",
+ "integrity": "sha512-ohK+uxazOqWWZ2BUyVFeNDy5/RJasfsnrs00f9O0BohaGUM4bp5daEnYHPMdjUpvzRTDEviiX0IMIEnc97N+JQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "@types/lodash": "^4.14.172",
+ "@types/mousetrap": "^1.6.8",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "@wordpress/priority-queue": "^2.14.0",
+ "clipboard": "^2.0.8",
+ "lodash": "^4.17.21",
+ "mousetrap": "^1.6.5",
+ "use-memo-one": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/@wordpress/element": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "@types/react": "^17.0.37",
+ "@types/react-dom": "^17.0.11",
+ "@wordpress/escape-html": "^2.14.0",
+ "lodash": "^4.17.21",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/@wordpress/icons": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.5.0.tgz",
+ "integrity": "sha512-nwjLoNt7wSQbtz//XkE3zdNY9HRlakAWq0ttauWpV6NwI/Wiz6Bm1+l4v15olWnOh2akikGfc8UFO5M0ZmbQqw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/primitives": "^3.12.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/@wordpress/is-shallow-equal": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz",
+ "integrity": "sha512-FVpuU3GmvZFvjcuIKcraNH46vEZzz+FCpujjqCzcyWNGUsg7wpfGNVoDWs5LWFA4EELHL2+p8Ff9RZX237b5Kg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/@wordpress/primitives": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.12.0.tgz",
+ "integrity": "sha512-/mlWDw9JFFrptAQz6ur9ui9sqFfBbDI79Bm4rJdas0vRxBfUhMNUPKybjCaN/zmalnD1c1lLHuyaOW2ryT1Ivw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/element": "^4.12.0",
+ "classnames": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/framer-motion": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz",
+ "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==",
+ "dev": true,
+ "dependencies": {
+ "@motionone/dom": "10.12.0",
+ "framesync": "6.0.1",
+ "hey-listen": "^1.0.8",
+ "popmotion": "11.0.3",
+ "style-value-types": "5.0.0",
+ "tslib": "^2.1.0"
+ },
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.8 || ^17.0.0 || ^18.0.0",
+ "react-dom": ">=16.8 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/framesync": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz",
+ "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/popmotion": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz",
+ "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==",
+ "dev": true,
+ "dependencies": {
+ "framesync": "6.0.1",
+ "hey-listen": "^1.0.8",
+ "style-value-types": "5.0.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/react-dates": {
+ "version": "21.8.0",
+ "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-21.8.0.tgz",
+ "integrity": "sha512-PPriGqi30CtzZmoHiGdhlA++YPYPYGCZrhydYmXXQ6RAvAsaONcPtYgXRTLozIOrsQ5mSo40+DiA5eOFHnZ6xw==",
+ "dev": true,
+ "dependencies": {
+ "airbnb-prop-types": "^2.15.0",
+ "consolidated-events": "^1.1.1 || ^2.0.0",
+ "enzyme-shallow-equal": "^1.0.0",
+ "is-touch-device": "^1.0.1",
+ "lodash": "^4.1.1",
+ "object.assign": "^4.1.0",
+ "object.values": "^1.1.0",
+ "prop-types": "^15.7.2",
+ "raf": "^3.4.1",
+ "react-moment-proptypes": "^1.6.0",
+ "react-outside-click-handler": "^1.2.4",
+ "react-portal": "^4.2.0",
+ "react-with-direction": "^1.3.1",
+ "react-with-styles": "^4.1.0",
+ "react-with-styles-interface-css": "^6.0.0"
+ },
+ "peerDependencies": {
+ "@babel/runtime": "^7.0.0",
+ "moment": "^2.18.1",
+ "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"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/react-dates/node_modules/airbnb-prop-types": {
+ "version": "2.16.0",
+ "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz",
+ "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==",
+ "dev": true,
+ "dependencies": {
+ "array.prototype.find": "^2.1.1",
+ "function.prototype.name": "^1.1.2",
+ "is-regex": "^1.1.0",
+ "object-is": "^1.1.2",
+ "object.assign": "^4.1.0",
+ "object.entries": "^1.1.2",
+ "prop-types": "^15.7.2",
+ "prop-types-exact": "^1.2.0",
+ "react-is": "^16.13.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "peerDependencies": {
+ "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/react-dates/node_modules/react-with-direction": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz",
+ "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==",
+ "dev": true,
+ "dependencies": {
+ "airbnb-prop-types": "^2.16.0",
+ "brcast": "^2.0.2",
+ "deepmerge": "^1.5.2",
+ "direction": "^1.0.4",
+ "hoist-non-react-statics": "^3.3.2",
+ "object.assign": "^4.1.2",
+ "object.values": "^1.1.5",
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "react": "^0.14 || ^15 || ^16",
+ "react-dom": "^0.14 || ^15 || ^16"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/react-dates/node_modules/react-with-styles": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-4.2.0.tgz",
+ "integrity": "sha512-tZCTY27KriRNhwHIbg1NkSdTTOSfXDg6Z7s+Q37mtz0Ym7Sc7IOr3PzVt4qJhJMW6Nkvfi3g34FuhtiGAJCBQA==",
+ "dev": true,
+ "dependencies": {
+ "airbnb-prop-types": "^2.14.0",
+ "hoist-non-react-statics": "^3.2.1",
+ "object.assign": "^4.1.0",
+ "prop-types": "^15.7.2",
+ "react-with-direction": "^1.3.1"
+ },
+ "peerDependencies": {
+ "@babel/runtime": "^7.0.0",
+ "react": ">=0.14",
+ "react-with-direction": "^1.3.1"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/react-dates/node_modules/react-with-styles-interface-css": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-6.0.0.tgz",
+ "integrity": "sha512-6khSG1Trf4L/uXOge/ZAlBnq2O2PEXlQEqAhCRbvzaQU4sksIkdwpCPEl6d+DtP3+IdhyffTWuHDO9lhe1iYvA==",
+ "dev": true,
+ "dependencies": {
+ "array.prototype.flat": "^1.2.1",
+ "global-cache": "^1.2.1"
+ },
+ "peerDependencies": {
+ "@babel/runtime": "^7.0.0",
+ "react-with-styles": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "node_modules/@woocommerce/navigation/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "node_modules/@woocommerce/navigation/node_modules/style-value-types": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz",
+ "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==",
+ "dev": true,
+ "dependencies": {
+ "hey-listen": "^1.0.8",
+ "tslib": "^2.1.0"
+ }
+ },
"node_modules/@woocommerce/woocommerce-rest-api": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@woocommerce/woocommerce-rest-api/-/woocommerce-rest-api-1.0.1.tgz",
@@ -11331,13 +13714,13 @@
"dev": true
},
"node_modules/@wordpress/a11y": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.13.0.tgz",
- "integrity": "sha512-idT1zw3FjS0+Ypeu0XaUQuxAFsrkVxeY2HgiUYmGWERd9exs6tM1q7c8a+wiZtbIML/I0Wq83KQeSVwW97SPnw==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.14.0.tgz",
+ "integrity": "sha512-njZSjcgxuRHBaJKlu1sOyQxPxXEECD+RBV+pzlW4ivf3zzImcFfUk+WP7BXwfS48f88VfCevfNkGtiB5Cz3v6A==",
"dependencies": {
"@babel/runtime": "^7.16.0",
- "@wordpress/dom-ready": "^3.13.0",
- "@wordpress/i18n": "^4.13.0"
+ "@wordpress/dom-ready": "^3.14.0",
+ "@wordpress/i18n": "^4.14.0"
},
"engines": {
"node": ">=12"
@@ -11369,9 +13752,9 @@
}
},
"node_modules/@wordpress/autop": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.12.0.tgz",
- "integrity": "sha512-SWi8YzZQho47NwnYnuAsxejw33BF9MRDADIEc5l7VHuCLvL8ddfT0+b9apvovBOpMhnhvrpQBbkk99lnSMlg6g==",
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.16.0.tgz",
+ "integrity": "sha512-cepLM41mF1h7f2JIU12XhLLfep1R0DNkI0gM2GoVzp0DlM0qSnJVuU93R75wTnR0OTija0cVVPUovt+gBWIR2Q==",
"dependencies": {
"@babel/runtime": "^7.16.0"
},
@@ -11414,6 +13797,15 @@
"node": ">=12"
}
},
+ "node_modules/@wordpress/babel-preset-default/node_modules/@wordpress/browserslist-config": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz",
+ "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@wordpress/babel-preset-default/node_modules/@wordpress/element": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
@@ -11439,9 +13831,9 @@
"dev": true
},
"node_modules/@wordpress/blob": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.13.0.tgz",
- "integrity": "sha512-ehWsapoUByU0Hn7i8ph7e6sLyj5D1gFAqYIV8VK4b76VP9TRu42M43veAdNoYpkkd6RUITJABXwTufC2bgo9CA==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.14.0.tgz",
+ "integrity": "sha512-mCkH94I8g8XY3+yaeVCOdcyl4lBkOmVNJ7mmAjaHKwWLVkPzLoZr7deE6d3OGeBuff1HeSNOA4gKou3ninSOPw==",
"dependencies": {
"@babel/runtime": "^7.16.0"
},
@@ -11605,19 +13997,6 @@
"node": ">=12"
}
},
- "node_modules/@wordpress/block-editor/node_modules/@wordpress/dom": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.7.0.tgz",
- "integrity": "sha512-+2WFob22c3ecrZ6L4UEh/ZTSyxXlO/21dLo308HuE32fFO+3snrgZaXF2Z9aA41snh99HAcPeyuqImplOMDebw==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.16.0",
- "lodash": "^4.17.21"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@wordpress/block-editor/node_modules/@wordpress/element": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz",
@@ -11716,9 +14095,9 @@
}
},
"node_modules/@wordpress/block-serialization-default-parser": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.13.0.tgz",
- "integrity": "sha512-ybvLS93jbQzsy4XpY3PMg3kacVm7e6xsY24KxApoTgQNUcmXnASkxL0ljv2Cwjpz5zD/mk07nc33CBahJfktZA==",
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.14.0.tgz",
+ "integrity": "sha512-Sr3ab/aV/GbRGBVXCNC6lm/2z+p+T4lI9rTlc2aAc1EILoCvn98Soc/cmr1bSNzT9o4LFhJBGLEL/Q3aTJSvSQ==",
"dependencies": {
"@babel/runtime": "^7.16.0"
},
@@ -11759,12 +14138,12 @@
}
},
"node_modules/@wordpress/browserslist-config": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.2.tgz",
- "integrity": "sha512-UH0Ifmm4tEjVPOtiqH6yxDvk2EKtqSAhnyhyfSIb0wUnEoGsWTjREZjzuhgjt/I2nTqfg+0gUSzL5D0yQH6wDQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.0.0.tgz",
+ "integrity": "sha512-YitgByVHIBP7IscrhHVuUkZ6+qnMfATln2b3ItdyUT2gLlUmZJfqrt7UNiT6YiaArypKwkklpFw5NNtFpyvZVw==",
"dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=14"
}
},
"node_modules/@wordpress/components": {
@@ -11846,27 +14225,97 @@
"react": "^17.0.0"
}
},
- "node_modules/@wordpress/compose/node_modules/@wordpress/dom": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.7.0.tgz",
- "integrity": "sha512-+2WFob22c3ecrZ6L4UEh/ZTSyxXlO/21dLo308HuE32fFO+3snrgZaXF2Z9aA41snh99HAcPeyuqImplOMDebw==",
+ "node_modules/@wordpress/compose/node_modules/@wordpress/element": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz",
+ "integrity": "sha512-24/QUS/EYZQY/qH3Mm9ntrwbuKZN7/lYK752NFquVMq1RtWfhEulVXxgLprIm08c2Rsb8u8dJ8YdqVougo/8JQ==",
"dependencies": {
"@babel/runtime": "^7.16.0",
- "lodash": "^4.17.21"
+ "@types/react": "^17.0.37",
+ "@types/react-dom": "^17.0.11",
+ "@wordpress/escape-html": "^2.7.0",
+ "lodash": "^4.17.21",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2"
},
"engines": {
"node": ">=12"
}
},
- "node_modules/@wordpress/compose/node_modules/@wordpress/element": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz",
- "integrity": "sha512-24/QUS/EYZQY/qH3Mm9ntrwbuKZN7/lYK752NFquVMq1RtWfhEulVXxgLprIm08c2Rsb8u8dJ8YdqVougo/8JQ==",
+ "node_modules/@wordpress/core-data": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-4.12.0.tgz",
+ "integrity": "sha512-/gudJQ0bfQWhoNbQqvW3XdQg59B8ir8t7tL3jzK/EmIpQO6+Ci5VIRNI9hyFFCds5oiXdEb53FUm90E95js7KQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/api-fetch": "^6.11.0",
+ "@wordpress/blocks": "^11.13.0",
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/html-entities": "^3.14.0",
+ "@wordpress/i18n": "^4.14.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/url": "^3.15.0",
+ "equivalent-key-map": "^0.2.2",
+ "lodash": "^4.17.21",
+ "memize": "^1.1.0",
+ "rememo": "^4.0.0",
+ "uuid": "^8.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0"
+ }
+ },
+ "node_modules/@wordpress/core-data/node_modules/@wordpress/blocks": {
+ "version": "11.13.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.13.0.tgz",
+ "integrity": "sha512-5cqw5ZeX5vRilZSNTTuuaqXdtuS8bjsKf0CNWjnYveYaXXl/PcbAegZ/YUNyRD6YwIvM6S9NHN3TK+H4lmjd4Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/autop": "^3.14.0",
+ "@wordpress/blob": "^3.14.0",
+ "@wordpress/block-serialization-default-parser": "^4.14.0",
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/hooks": "^3.14.0",
+ "@wordpress/html-entities": "^3.14.0",
+ "@wordpress/i18n": "^4.14.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/shortcode": "^3.14.0",
+ "colord": "^2.7.0",
+ "hpq": "^1.3.0",
+ "lodash": "^4.17.21",
+ "memize": "^1.1.0",
+ "rememo": "^4.0.0",
+ "showdown": "^1.9.1",
+ "simple-html-tokenizer": "^0.5.7",
+ "uuid": "^8.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0"
+ }
+ },
+ "node_modules/@wordpress/core-data/node_modules/@wordpress/element": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
+ "dev": true,
"dependencies": {
"@babel/runtime": "^7.16.0",
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
- "@wordpress/escape-html": "^2.7.0",
+ "@wordpress/escape-html": "^2.14.0",
"lodash": "^4.17.21",
"react": "^17.0.2",
"react-dom": "^17.0.2"
@@ -11875,18 +14324,61 @@
"node": ">=12"
}
},
+ "node_modules/@wordpress/core-data/node_modules/@wordpress/html-entities": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.14.0.tgz",
+ "integrity": "sha512-9HpwT7uCPNp+8CJ9oPZq5RfOeqR4ml/wQ6zwGgJlmt/S+MxsJFABL/GHiVXgRJntaifq8u/tn6c2NCdcFaPV2Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@wordpress/core-data/node_modules/@wordpress/is-shallow-equal": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz",
+ "integrity": "sha512-FVpuU3GmvZFvjcuIKcraNH46vEZzz+FCpujjqCzcyWNGUsg7wpfGNVoDWs5LWFA4EELHL2+p8Ff9RZX237b5Kg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@wordpress/core-data/node_modules/@wordpress/url": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.15.0.tgz",
+ "integrity": "sha512-LLlgCMbherqqnxAuK6kb997MKkzfnvkyQQ5RazBQKBn//RBXrW/w6BMVglm4QjV7L65N/IfqFd36QLZDMuiYDA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.0",
+ "remove-accents": "^0.4.2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@wordpress/core-data/node_modules/rememo": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz",
+ "integrity": "sha512-x/T5q/pCDh8k4OlvJGqkI3eO+O8hmJv9HhJHo4avwlluwUpDbteDvyqw1PTarEITkeH9bfW6GSKeRke+XKgykw==",
+ "dev": true
+ },
"node_modules/@wordpress/data": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.13.0.tgz",
- "integrity": "sha512-9PRpBzxEqvgms4xegjvsujc9h5vDQibnZBEp7IBQEKUmPXM0nqp84c83skSVxs55yu3QVlKSK6WFg5Rr0fu2oA==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.14.0.tgz",
+ "integrity": "sha512-m0SazQ6zlxRcm8iBcB/K06S4iCW+EZ1EXoEXILoaQ3AC2Kyibs262n/SSer8MRpPuwwOkpvS0ANgubT3MN/0SA==",
"dependencies": {
"@babel/runtime": "^7.16.0",
- "@wordpress/compose": "^5.11.0",
- "@wordpress/deprecated": "^3.13.0",
- "@wordpress/element": "^4.11.0",
- "@wordpress/is-shallow-equal": "4.13.0",
- "@wordpress/priority-queue": "^2.13.0",
- "@wordpress/redux-routine": "^4.13.0",
+ "@wordpress/compose": "^5.12.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/priority-queue": "^2.14.0",
+ "@wordpress/redux-routine": "^4.14.0",
"equivalent-key-map": "^0.2.2",
"is-promise": "^4.0.0",
"lodash": "^4.17.21",
@@ -11931,19 +14423,19 @@
}
},
"node_modules/@wordpress/data/node_modules/@wordpress/compose": {
- "version": "5.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.11.0.tgz",
- "integrity": "sha512-S6KABT9jB6ynvTIEHFnPjeT++xsmX3410ctTNNOiVY3HdcnVjzXcu6czqj/y3OWXupNn7WqRA9p9pWaSvSKMXQ==",
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.12.0.tgz",
+ "integrity": "sha512-ohK+uxazOqWWZ2BUyVFeNDy5/RJasfsnrs00f9O0BohaGUM4bp5daEnYHPMdjUpvzRTDEviiX0IMIEnc97N+JQ==",
"dependencies": {
"@babel/runtime": "^7.16.0",
"@types/lodash": "^4.14.172",
"@types/mousetrap": "^1.6.8",
- "@wordpress/deprecated": "^3.13.0",
- "@wordpress/dom": "^3.13.0",
- "@wordpress/element": "^4.11.0",
- "@wordpress/is-shallow-equal": "4.13.0",
- "@wordpress/keycodes": "^3.13.0",
- "@wordpress/priority-queue": "^2.13.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "@wordpress/priority-queue": "^2.14.0",
"clipboard": "^2.0.8",
"lodash": "^4.17.21",
"mousetrap": "^1.6.5",
@@ -11956,40 +14448,15 @@
"react": "^17.0.0"
}
},
- "node_modules/@wordpress/data/node_modules/@wordpress/deprecated": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz",
- "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==",
- "dependencies": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.13.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@wordpress/data/node_modules/@wordpress/dom": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz",
- "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==",
- "dependencies": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/deprecated": "^3.8.0",
- "lodash": "^4.17.21"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@wordpress/data/node_modules/@wordpress/element": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
- "integrity": "sha512-3Ha/BChFgkzh8oKK/FxXLEYSobCAMfWKdK/anNTWqbGxZM0ue1kowu23D7gUCCugjKOZdkhAabgJIjPflrGQOg==",
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
"dependencies": {
"@babel/runtime": "^7.16.0",
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
- "@wordpress/escape-html": "^2.13.0",
+ "@wordpress/escape-html": "^2.14.0",
"lodash": "^4.17.21",
"react": "^17.0.2",
"react-dom": "^17.0.2"
@@ -11998,10 +14465,21 @@
"node": ">=12"
}
},
+ "node_modules/@wordpress/data/node_modules/@wordpress/is-shallow-equal": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz",
+ "integrity": "sha512-FVpuU3GmvZFvjcuIKcraNH46vEZzz+FCpujjqCzcyWNGUsg7wpfGNVoDWs5LWFA4EELHL2+p8Ff9RZX237b5Kg==",
+ "dependencies": {
+ "@babel/runtime": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@wordpress/date": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.13.0.tgz",
- "integrity": "sha512-IdaUCZvZVAaakrWcp2UmgyCfKt8bw4nG8zbCMXRJz9VLgjfJ2zroI0G2LUEjS+GQ+jM2VvkDANgS/JmizMFrOg==",
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.14.0.tgz",
+ "integrity": "sha512-HrYZX7pY2yJjsaeAv11aQRqoF2rtVmhoG1X44gL3ddA4kcFBqeBMngKS6WunsS7z/x5lunWv7Kr0iIv05vh6Vw==",
"dependencies": {
"@babel/runtime": "^7.16.0",
"moment": "^2.22.1",
@@ -12028,33 +14506,33 @@
}
},
"node_modules/@wordpress/deprecated": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.12.0.tgz",
- "integrity": "sha512-sep+c2jFwAZ4HTtPgIbNLC0YTz3q9gCH3A82XwY/krkvxhNk3g+mXxPUI2dUoxp7RAeeckqDtKosPvvpqUZWiQ==",
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.16.0.tgz",
+ "integrity": "sha512-/lCISYhy1l4N4HdGB8vKtPRYcvlLL+Lo/luwxgWzDxV+GkIlva6mZvEwsSd/Ocd5NXzR496V6+AKREDOyfJgiQ==",
"dependencies": {
"@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.12.0"
+ "@wordpress/hooks": "^3.16.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@wordpress/dom": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.7.tgz",
- "integrity": "sha512-/e7sFaiwKHWmgqUFsClYw9YI6Wq/eZ1iBsxtGgqX5zrU8KyFJaziNeHDE8tTZLkiURS1vlBQm0mY6bX7Bo4CEA==",
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.16.0.tgz",
+ "integrity": "sha512-WOwEYXQWaZ4ZkQgL//jyB/FN33vPuFUHcr1Tc0o1T5zScNJrWVTiILokkFVv2AxqPZkrq4WhxKN9ZGRyo6VlOA==",
"dependencies": {
"@babel/runtime": "^7.16.0",
- "lodash": "^4.17.21"
+ "@wordpress/deprecated": "^3.8.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@wordpress/dom-ready": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.13.0.tgz",
- "integrity": "sha512-QPbADVzl0wzAzvxOLnEHRjPfvzt0c8CMXiwa808BvLRrlK9HOezY1erF8PGTPutcBCYpsixr56nUTB/Kiw5hKg==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.14.0.tgz",
+ "integrity": "sha512-EftNWZlWN17ghjvCfuCnl/kSl1UdfgnOk92hASI2A+vRE8vsHvdx/d+/jZ9sC6I3QIGE7y1OVAnpWdQpC9m6lg==",
"dependencies": {
"@babel/runtime": "^7.16.0"
},
@@ -12509,6 +14987,15 @@
"node": ">=12"
}
},
+ "node_modules/@wordpress/e2e-tests/node_modules/@wordpress/browserslist-config": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz",
+ "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@wordpress/e2e-tests/node_modules/@wordpress/dependency-extraction-webpack-plugin": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.7.0.tgz",
@@ -13967,9 +16454,9 @@
}
},
"node_modules/@wordpress/escape-html": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.13.0.tgz",
- "integrity": "sha512-olUMVQehbNZJpn4C3ysUzh/70lEzeDZa309KuMX+8P17Mj+lgsjs7lkLqHKpxhXtsLic1lNsLCkCStDY4iiCqw==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.14.0.tgz",
+ "integrity": "sha512-y8wlJuT2ze6bf6a/vW6T1hnUxm8WD8CERYU133NpiNeQV3GJffw2tGimhasHwhN7hCfH1iPkY4od5RkclHxnRw==",
"dependencies": {
"@babel/runtime": "^7.16.0"
},
@@ -14036,9 +16523,9 @@
}
},
"node_modules/@wordpress/hooks": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.14.0.tgz",
- "integrity": "sha512-bcQXql4A1VI6gnTdNzMjdHLGTpnf8oWOQ1r8B8fcvtOF3dKictxJPobarWxFbtVTQoegizZT/lPCMoLsnVJpug==",
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.16.0.tgz",
+ "integrity": "sha512-KpY8KFp2/3TX6lKmffNmdkeaH9c4CN1iJ8SiCufjGgRCnVWmWe/HcEJ5OjhUvBnRkhsLMY7pvlXMU8Mh7nLxyA==",
"dependencies": {
"@babel/runtime": "^7.16.0"
},
@@ -14178,17 +16665,16 @@
}
},
"node_modules/@wordpress/keyboard-shortcuts": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.5.0.tgz",
- "integrity": "sha512-Gd1PmVeC6k8+OKtL3ZNSh+nn2147lK9AsT6hvFrAXs0l/Rp2xw5CZn5xTKdxItAg6lqEv0hQSk9vHmOHAZOcZg==",
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.12.0.tgz",
+ "integrity": "sha512-NCKCgpIUHvA+KcJJ+OlXmoaQe+SGgLnosic13H2aSfnSYWKatLoCRwUOjQ7fnGNAiZWnFv2Q+TThFarmR2e39w==",
"dev": true,
"dependencies": {
"@babel/runtime": "^7.16.0",
- "@wordpress/data": "^6.7.0",
- "@wordpress/element": "^4.5.0",
- "@wordpress/keycodes": "^3.7.0",
- "lodash": "^4.17.21",
- "rememo": "^3.0.0"
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "rememo": "^4.0.0"
},
"engines": {
"node": ">=12"
@@ -14198,15 +16684,15 @@
}
},
"node_modules/@wordpress/keyboard-shortcuts/node_modules/@wordpress/element": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz",
- "integrity": "sha512-24/QUS/EYZQY/qH3Mm9ntrwbuKZN7/lYK752NFquVMq1RtWfhEulVXxgLprIm08c2Rsb8u8dJ8YdqVougo/8JQ==",
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
"dev": true,
"dependencies": {
"@babel/runtime": "^7.16.0",
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
- "@wordpress/escape-html": "^2.7.0",
+ "@wordpress/escape-html": "^2.14.0",
"lodash": "^4.17.21",
"react": "^17.0.2",
"react-dom": "^17.0.2"
@@ -14215,13 +16701,19 @@
"node": ">=12"
}
},
+ "node_modules/@wordpress/keyboard-shortcuts/node_modules/rememo": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz",
+ "integrity": "sha512-x/T5q/pCDh8k4OlvJGqkI3eO+O8hmJv9HhJHo4avwlluwUpDbteDvyqw1PTarEITkeH9bfW6GSKeRke+XKgykw==",
+ "dev": true
+ },
"node_modules/@wordpress/keycodes": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.13.0.tgz",
- "integrity": "sha512-9uUjUebl9Lau43St9wXJnnkWhbjNsv6gF8Fd+KST5tCctwUWx+QDs7Qk5ciNSNp9FVwfACK/6fMz9r6Tr/f4Aw==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.14.0.tgz",
+ "integrity": "sha512-hUHRMCWil4eKauzCWtYSry8i1wxa1cegUqjZ3OASzefZvCrMv6TNuRXohp+hNLWGWWMbP0I2Pcrd0WuGcmlSqg==",
"dependencies": {
"@babel/runtime": "^7.16.0",
- "@wordpress/i18n": "^4.13.0",
+ "@wordpress/i18n": "^4.14.0",
"lodash": "^4.17.21"
},
"engines": {
@@ -14301,31 +16793,6 @@
"react": "^17.0.0"
}
},
- "node_modules/@wordpress/plugins/node_modules/@wordpress/deprecated": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz",
- "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==",
- "dependencies": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.13.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@wordpress/plugins/node_modules/@wordpress/dom": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz",
- "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==",
- "dependencies": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/deprecated": "^3.8.0",
- "lodash": "^4.17.21"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@wordpress/plugins/node_modules/@wordpress/element": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
@@ -14417,9 +16884,9 @@
}
},
"node_modules/@wordpress/priority-queue": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.13.0.tgz",
- "integrity": "sha512-c3xX+e1VjM3axm4pcQzlUuJgkEe4xtsMxW+dwHR6IWFruzDItPvLxIZaeP3aCMZvmd7KUdzzo5f/u0eq1xr9pw==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.14.0.tgz",
+ "integrity": "sha512-dXPsHqZQsI2xZ4WGq90iZLHliThbJI6+BF76YksLLYccaUW1LTzkQiEmub2pwdf9liMq/xocN07HdxMiI7HcRw==",
"dependencies": {
"@babel/runtime": "^7.16.0"
},
@@ -14428,9 +16895,9 @@
}
},
"node_modules/@wordpress/redux-routine": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.13.0.tgz",
- "integrity": "sha512-jmfllylWwEutaddPYWQjeRuLhsqQd8hqJeN9Pj8Sh7VABk0SWbPQWtfahPhfZj7kYGTcrxa6cquRNjwJ+VmcDg==",
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.14.0.tgz",
+ "integrity": "sha512-vgjR7i+2r69Dp16d11KTVdHEcQTjk7eq6SaUtva3YKs3s2e5CTjDcQKEafSzwWQo5OyHK+wkwnnIsjZ3He9anA==",
"dependencies": {
"@babel/runtime": "^7.16.0",
"is-promise": "^4.0.0",
@@ -14445,18 +16912,18 @@
}
},
"node_modules/@wordpress/rich-text": {
- "version": "5.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.11.0.tgz",
- "integrity": "sha512-e6so43OUdtbc7qrQUGUbtuOsjwNoYiK1jAqGgJatjXGnm72cv1SaXoHqmgWFZb6wcRUBkQ64oSWMq61eFmXjEw==",
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.12.0.tgz",
+ "integrity": "sha512-iL9jUF0LJweGCh4SZMB+CLMENUGktgPYHv0tSaX/EjA/Ph80Grz8ah2PH8fQUH4349Zc/+AGXgn/6cUzdvD0WA==",
"dependencies": {
"@babel/runtime": "^7.16.0",
- "@wordpress/a11y": "^3.13.0",
- "@wordpress/compose": "^5.11.0",
- "@wordpress/data": "^6.13.0",
- "@wordpress/element": "^4.11.0",
- "@wordpress/escape-html": "^2.13.0",
- "@wordpress/i18n": "^4.13.0",
- "@wordpress/keycodes": "^3.13.0",
+ "@wordpress/a11y": "^3.14.0",
+ "@wordpress/compose": "^5.12.0",
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/escape-html": "^2.14.0",
+ "@wordpress/i18n": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
"lodash": "^4.17.21",
"memize": "^1.1.0",
"rememo": "^4.0.0"
@@ -14469,19 +16936,19 @@
}
},
"node_modules/@wordpress/rich-text/node_modules/@wordpress/compose": {
- "version": "5.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.11.0.tgz",
- "integrity": "sha512-S6KABT9jB6ynvTIEHFnPjeT++xsmX3410ctTNNOiVY3HdcnVjzXcu6czqj/y3OWXupNn7WqRA9p9pWaSvSKMXQ==",
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.12.0.tgz",
+ "integrity": "sha512-ohK+uxazOqWWZ2BUyVFeNDy5/RJasfsnrs00f9O0BohaGUM4bp5daEnYHPMdjUpvzRTDEviiX0IMIEnc97N+JQ==",
"dependencies": {
"@babel/runtime": "^7.16.0",
"@types/lodash": "^4.14.172",
"@types/mousetrap": "^1.6.8",
- "@wordpress/deprecated": "^3.13.0",
- "@wordpress/dom": "^3.13.0",
- "@wordpress/element": "^4.11.0",
- "@wordpress/is-shallow-equal": "4.13.0",
- "@wordpress/keycodes": "^3.13.0",
- "@wordpress/priority-queue": "^2.13.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "@wordpress/priority-queue": "^2.14.0",
"clipboard": "^2.0.8",
"lodash": "^4.17.21",
"mousetrap": "^1.6.5",
@@ -14494,40 +16961,15 @@
"react": "^17.0.0"
}
},
- "node_modules/@wordpress/rich-text/node_modules/@wordpress/deprecated": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz",
- "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==",
- "dependencies": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.13.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@wordpress/rich-text/node_modules/@wordpress/dom": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz",
- "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==",
- "dependencies": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/deprecated": "^3.8.0",
- "lodash": "^4.17.21"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@wordpress/rich-text/node_modules/@wordpress/element": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
- "integrity": "sha512-3Ha/BChFgkzh8oKK/FxXLEYSobCAMfWKdK/anNTWqbGxZM0ue1kowu23D7gUCCugjKOZdkhAabgJIjPflrGQOg==",
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
"dependencies": {
"@babel/runtime": "^7.16.0",
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
- "@wordpress/escape-html": "^2.13.0",
+ "@wordpress/escape-html": "^2.14.0",
"lodash": "^4.17.21",
"react": "^17.0.2",
"react-dom": "^17.0.2"
@@ -14536,6 +16978,17 @@
"node": ">=12"
}
},
+ "node_modules/@wordpress/rich-text/node_modules/@wordpress/is-shallow-equal": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz",
+ "integrity": "sha512-FVpuU3GmvZFvjcuIKcraNH46vEZzz+FCpujjqCzcyWNGUsg7wpfGNVoDWs5LWFA4EELHL2+p8Ff9RZX237b5Kg==",
+ "dependencies": {
+ "@babel/runtime": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@wordpress/rich-text/node_modules/rememo": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz",
@@ -14975,6 +17428,15 @@
}
}
},
+ "node_modules/@wordpress/scripts/node_modules/@wordpress/browserslist-config": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz",
+ "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@wordpress/scripts/node_modules/@wordpress/dependency-extraction-webpack-plugin": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.4.1.tgz",
@@ -15879,14 +18341,14 @@
}
},
"node_modules/@wordpress/scripts/node_modules/terser": {
- "version": "5.13.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz",
- "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==",
+ "version": "5.14.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
+ "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
"dev": true,
"dependencies": {
+ "@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
"commander": "^2.20.0",
- "source-map": "~0.8.0-beta.0",
"source-map-support": "~0.5.20"
},
"bin": {
@@ -15930,27 +18392,6 @@
}
}
},
- "node_modules/@wordpress/scripts/node_modules/terser/node_modules/source-map": {
- "version": "0.8.0-beta.0",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
- "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
- "dev": true,
- "dependencies": {
- "whatwg-url": "^7.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@wordpress/scripts/node_modules/tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
"node_modules/@wordpress/scripts/node_modules/v8-to-istanbul": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
@@ -15974,12 +18415,6 @@
"node": ">= 8"
}
},
- "node_modules/@wordpress/scripts/node_modules/webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
"node_modules/@wordpress/scripts/node_modules/webpack": {
"version": "5.72.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz",
@@ -16088,17 +18523,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/@wordpress/scripts/node_modules/whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dev": true,
- "dependencies": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
"node_modules/@wordpress/scripts/node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -16139,17 +18563,6 @@
"react-dom": "^17.0.0"
}
},
- "node_modules/@wordpress/server-side-render/node_modules/@wordpress/autop": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.13.0.tgz",
- "integrity": "sha512-EAVrb7KuSfCBDFnGJJxD/9TVkDZEi/A1F2YSOb0X8RPS6RQNtXU76aiNyrm/G8ovJ/ElRGfSiy/+hwqZlnQo+A==",
- "dependencies": {
- "@babel/runtime": "^7.16.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@wordpress/server-side-render/node_modules/@wordpress/blocks": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.12.0.tgz",
@@ -16264,31 +18677,6 @@
"react": "^17.0.0"
}
},
- "node_modules/@wordpress/server-side-render/node_modules/@wordpress/deprecated": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz",
- "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==",
- "dependencies": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.13.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@wordpress/server-side-render/node_modules/@wordpress/dom": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz",
- "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==",
- "dependencies": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/deprecated": "^3.8.0",
- "lodash": "^4.17.21"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@wordpress/server-side-render/node_modules/@wordpress/element": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
@@ -16576,9 +18964,9 @@
}
},
"node_modules/@wordpress/shortcode": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.13.0.tgz",
- "integrity": "sha512-8QIaU6uS3PDY93P3DSPO3FFloGVSLpYLT1q5f7iH+SQuzJr3tAbsAIAiBgbtUFZ4ilNcSbYxP78KrhmZYZnTMQ==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.14.0.tgz",
+ "integrity": "sha512-0HJpB5RdkERwGZA0JuujTOEO5uEYlxM/pNhNn+G4UUhlBHYuIQQw9agL1Btgo/7qnQcBC7NPKBvxJzWHyTlT4w==",
"dependencies": {
"@babel/runtime": "^7.16.0",
"memize": "^1.1.0"
@@ -16617,13 +19005,12 @@
}
},
"node_modules/@wordpress/token-list": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.7.0.tgz",
- "integrity": "sha512-hPSneUS0y2kmk2uQq/C+dm4DTDAtnPenGh1wHJjNZA7CsLEsfDXpCh6CagdWZecV0oMpQQYYWHtl8nJroBkPJw==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.14.0.tgz",
+ "integrity": "sha512-MYQfXrFxI68aQaxcvqVxI2d8HjVCBp4DxGcEQCX6sHHbNuZgo7g38HOFtDjnKVj8hEv11AJYVA8hsl0xUqSxZQ==",
"dev": true,
"dependencies": {
- "@babel/runtime": "^7.16.0",
- "lodash": "^4.17.21"
+ "@babel/runtime": "^7.16.0"
},
"engines": {
"node": ">=12"
@@ -16642,9 +19029,9 @@
}
},
"node_modules/@wordpress/warning": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.13.0.tgz",
- "integrity": "sha512-4648iMotdeNMe3vLKWTx5C/X1+4hey00GrxAClTiAufGMR3slCjE8nQhnWtFfyqYZi0bSpuF+kYd6ofsKrtcQg==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.14.0.tgz",
+ "integrity": "sha512-qlfSTGkS6ei366OEPNe54DG0O3D/Ta1d4Xalx8Crgxm8xygncuxuuefWKAnnwgXfzsO4d4gs29hnTEzIMIaGcA==",
"engines": {
"node": ">=12"
}
@@ -19558,6 +21945,15 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
+ "node_modules/charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/check-node-version": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4.2.1.tgz",
@@ -20341,9 +22737,9 @@
"peer": true
},
"node_modules/commander": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz",
- "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==",
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz",
+ "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==",
"dev": true,
"engines": {
"node": "^12.20.0 || >=14"
@@ -20916,9 +23312,9 @@
}
},
"node_modules/core-js": {
- "version": "3.23.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz",
- "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==",
+ "version": "3.25.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.0.tgz",
+ "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==",
"dev": true,
"hasInstallScript": true,
"funding": {
@@ -21491,6 +23887,15 @@
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"devOptional": true
},
+ "node_modules/crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
@@ -23679,6 +26084,12 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "2.3.10",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.10.tgz",
+ "integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==",
+ "dev": true
+ },
"node_modules/domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -28089,6 +30500,15 @@
"node": "*"
}
},
+ "node_modules/history": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.7.6"
+ }
+ },
"node_modules/hjson": {
"version": "1.8.4",
"resolved": "https://registry.npmjs.org/hjson/-/hjson-1.8.4.tgz",
@@ -35333,12 +37753,6 @@
"integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
"dev": true
},
- "node_modules/lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
- "dev": true
- },
"node_modules/lodash.throttle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
@@ -35974,6 +38388,17 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dev": true,
+ "dependencies": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
+ }
+ },
"node_modules/md5.js": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
@@ -35985,6 +38410,12 @@
"safe-buffer": "^5.1.2"
}
},
+ "node_modules/md5/node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
"node_modules/mdast-squeeze-paragraphs": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz",
@@ -37783,9 +40214,9 @@
}
},
"node_modules/moment-timezone": {
- "version": "0.5.34",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz",
- "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==",
+ "version": "0.5.37",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz",
+ "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==",
"dependencies": {
"moment": ">= 2.9.0"
},
@@ -47381,9 +49812,9 @@
}
},
"node_modules/terser": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
- "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
+ "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
"dev": true,
"dependencies": {
"commander": "^2.20.0",
@@ -51640,12 +54071,13 @@
},
"dependencies": {
"@actions/core": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.0.tgz",
- "integrity": "sha512-5pbM693Ih59ZdUhgk+fts+bUWTnIdHV3kwOSr+QIoFHMLg7Gzhwm0cifDY/AG68ekEJAkHnQVpcy4f6GjmzBCA==",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz",
+ "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==",
"dev": true,
"requires": {
- "@actions/http-client": "^2.0.1"
+ "@actions/http-client": "^2.0.1",
+ "uuid": "^8.3.2"
}
},
"@actions/github": {
@@ -56312,59 +58744,59 @@
"peer": true
},
"@react-spring/animated": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.4.4.tgz",
- "integrity": "sha512-e9xnuBaUTD+NolKikUmrGWjX8AVCPyj1GcEgjgq9E+0sXKv46UY7cm2EmB6mUDTxWIDVKebARY++xT4nGDraBQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.5.2.tgz",
+ "integrity": "sha512-oRlX+MmYLbK8IuUZR7SQUnRjXxJ4PMIZeBkBd1SUWVgVJAHMTfJzPltzm+I6p59qX+qLlklYHfnWaonQKDqLuQ==",
"dev": true,
"requires": {
- "@react-spring/shared": "~9.4.4",
- "@react-spring/types": "~9.4.4"
+ "@react-spring/shared": "~9.5.2",
+ "@react-spring/types": "~9.5.2"
}
},
"@react-spring/core": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.4.4.tgz",
- "integrity": "sha512-llgb0ljFyjMB0JhWsaFHOi9XFT8n1jBMVs1IFY2ipIBerWIRWrgUmIpakLPHTa4c4jwqTaDSwX90s2a0iN7dxQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.5.2.tgz",
+ "integrity": "sha512-UMRtFH6EfebMp/NMDGCUY5+hZFXsg9iT9hzt/iPzJSz2WMXKBjLoFZHJXcmiVOrIhzHmg1O0pFECn1Wp6pZ5Gw==",
"dev": true,
"requires": {
- "@react-spring/animated": "~9.4.4",
- "@react-spring/rafz": "~9.4.4",
- "@react-spring/shared": "~9.4.4",
- "@react-spring/types": "~9.4.4"
+ "@react-spring/animated": "~9.5.2",
+ "@react-spring/rafz": "~9.5.2",
+ "@react-spring/shared": "~9.5.2",
+ "@react-spring/types": "~9.5.2"
}
},
"@react-spring/rafz": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.4.4.tgz",
- "integrity": "sha512-5ki/sQ06Mdf8AuFstSt5zbNNicRT4LZogiJttDAww1ozhuvemafNWEHxhzcULgCPCDu2s7HsroaISV7+GQWrhw==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.5.2.tgz",
+ "integrity": "sha512-xHSRXKKBI/wDUkZGrspkOm4VlgN6lZi8Tw9Jzibp9QKf3neoof+U2mDNgklvnLaasymtUwAq9o4ZfFvQIVNgPQ==",
"dev": true
},
"@react-spring/shared": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.4.4.tgz",
- "integrity": "sha512-ySVgScDZlhm/+Iy2smY9i/DDrShArY0j6zjTS/Re1lasKnhq8qigoGiAxe8xMPJNlCaj3uczCqHy3TY9bKRtfQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.5.2.tgz",
+ "integrity": "sha512-/OSf2sjwY4BUnjZL6xMC+H3WxOOhMUCk+yZwgdj40XuyUpk6E6tYyiPeD9Yq5GLsZHodkvE1syVMRVReL4ndAg==",
"dev": true,
"requires": {
- "@react-spring/rafz": "~9.4.4",
- "@react-spring/types": "~9.4.4"
+ "@react-spring/rafz": "~9.5.2",
+ "@react-spring/types": "~9.5.2"
}
},
"@react-spring/types": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.4.4.tgz",
- "integrity": "sha512-KpxKt/D//q/t/6FBcde/RE36LKp8PpWu7kFEMLwpzMGl9RpcexunmYOQJWwmJWtkQjgE1YRr7DzBMryz6La1cQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.5.2.tgz",
+ "integrity": "sha512-n/wBRSHPqTmEd4BFWY6TeR1o/UY+3ujoqMxLjqy90CcY/ozJzDRuREL3c+pxMeTF2+B7dX33dTPCtFMX51nbxg==",
"dev": true
},
"@react-spring/web": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.4.4.tgz",
- "integrity": "sha512-iJmOLdhcuizriUlu/xqBc5y8KaFts+UI+iC+GxyTwBtzxA9czKiSAZW2ESuhG8stafa3jncwjfTQQp84KN36cw==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.5.2.tgz",
+ "integrity": "sha512-cusTjbOGTgtbsnpBDjb6Ia+B0lQLE0Fk5rGDog6Sww7hWnLIQ521PMiOBnAWtkntB9eXDUfj7L91nwJviEC0lw==",
"dev": true,
"requires": {
- "@react-spring/animated": "~9.4.4",
- "@react-spring/core": "~9.4.4",
- "@react-spring/shared": "~9.4.4",
- "@react-spring/types": "~9.4.4"
+ "@react-spring/animated": "~9.5.2",
+ "@react-spring/core": "~9.5.2",
+ "@react-spring/shared": "~9.5.2",
+ "@react-spring/types": "~9.5.2"
}
},
"@romainberger/css-diff": {
@@ -56948,28 +59380,28 @@
}
},
"@storybook/builder-webpack4": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz",
- "integrity": "sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.10.tgz",
+ "integrity": "sha512-AoKjsCNoQQoZXYwBDxO8s+yVEd5FjBJAaysEuUTHq2fb81jwLrGcEOo6hjw4jqfugZQIzYUEjPazlvubS78zpw==",
"dev": true,
"requires": {
"@babel/core": "^7.12.10",
- "@storybook/addons": "6.5.9",
- "@storybook/api": "6.5.9",
- "@storybook/channel-postmessage": "6.5.9",
- "@storybook/channels": "6.5.9",
- "@storybook/client-api": "6.5.9",
- "@storybook/client-logger": "6.5.9",
- "@storybook/components": "6.5.9",
- "@storybook/core-common": "6.5.9",
- "@storybook/core-events": "6.5.9",
- "@storybook/node-logger": "6.5.9",
- "@storybook/preview-web": "6.5.9",
- "@storybook/router": "6.5.9",
+ "@storybook/addons": "6.5.10",
+ "@storybook/api": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-api": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/components": "6.5.10",
+ "@storybook/core-common": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/preview-web": "6.5.10",
+ "@storybook/router": "6.5.10",
"@storybook/semver": "^7.3.2",
- "@storybook/store": "6.5.9",
- "@storybook/theming": "6.5.9",
- "@storybook/ui": "6.5.9",
+ "@storybook/store": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@storybook/ui": "6.5.10",
"@types/node": "^14.0.10 || ^16.0.0",
"@types/webpack": "^4.41.26",
"autoprefixer": "^9.8.6",
@@ -57002,6 +59434,325 @@
"webpack-virtual-modules": "^0.2.2"
},
"dependencies": {
+ "@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "requires": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "requires": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/channel-postmessage": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.10.tgz",
+ "integrity": "sha512-t9PTA0UzFvYa3IlOfpBOolfrRMPTjUMIeCQ6FNyM0aj5GqLKSvoQzP8NeoRpIrvyf6ljFKKdaMaZ3fiCvh45ag==",
+ "dev": true,
+ "requires": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "qs": "^6.10.0",
+ "telejson": "^6.0.8"
+ }
+ },
+ "@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.10.tgz",
+ "integrity": "sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "@types/qs": "^6.9.5",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ },
+ "@storybook/components": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.10.tgz",
+ "integrity": "sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ },
+ "dependencies": {
+ "fork-ts-checker-webpack-plugin": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz",
+ "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@types/json-schema": "^7.0.5",
+ "chalk": "^4.1.0",
+ "chokidar": "^3.4.2",
+ "cosmiconfig": "^6.0.0",
+ "deepmerge": "^4.2.2",
+ "fs-extra": "^9.0.0",
+ "glob": "^7.1.6",
+ "memfs": "^3.1.2",
+ "minimatch": "^3.0.4",
+ "schema-utils": "2.7.0",
+ "semver": "^7.3.2",
+ "tapable": "^1.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+ "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.4",
+ "ajv": "^6.12.2",
+ "ajv-keywords": "^3.4.1"
+ }
+ },
+ "semver": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2"
+ }
+ },
+ "@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "requires": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ }
+ },
+ "@storybook/preview-web": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.10.tgz",
+ "integrity": "sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "ansi-to-html": "^0.6.11",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "unfetch": "^4.2.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/store": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz",
+ "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "slash": "^3.0.0",
+ "stable": "^0.1.8",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -57055,17 +59806,6 @@
}
}
},
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -57087,6 +59827,19 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
+ "cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "dev": true,
+ "requires": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.7.2"
+ }
+ },
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -57125,6 +59878,27 @@
"commondir": "^1.0.1",
"make-dir": "^3.0.2",
"pkg-dir": "^4.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ }
}
},
"fork-ts-checker-webpack-plugin": {
@@ -57140,6 +59914,40 @@
"semver": "^5.6.0",
"tapable": "^1.0.0",
"worker-rpc": "^0.1.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "requires": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
}
},
"glob-promise": {
@@ -57204,23 +60012,6 @@
"@types/node": "*",
"merge-stream": "^2.0.0",
"supports-color": "^7.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
}
},
"locate-path": {
@@ -57290,27 +60081,6 @@
}
}
},
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- }
- }
- },
"postcss": {
"version": "7.0.39",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
@@ -57327,21 +60097,18 @@
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
},
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
"tapable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
@@ -57415,16 +60182,39 @@
}
},
"@storybook/channel-websocket": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz",
- "integrity": "sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.10.tgz",
+ "integrity": "sha512-RTXMZbMWCS3xU+4GVIdfnUXsKcwg/WTozy88/5OxaKjGw6KgRedqLAQJKJ6Y5XlnwIcWelirkHj/COwTTXhbPg==",
"dev": true,
"requires": {
- "@storybook/channels": "6.5.9",
- "@storybook/client-logger": "6.5.9",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
"core-js": "^3.8.2",
"global": "^4.4.0",
"telejson": "^6.0.8"
+ },
+ "dependencies": {
+ "@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ }
}
},
"@storybook/channels": {
@@ -57510,31 +60300,31 @@
}
},
"@storybook/core": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz",
- "integrity": "sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.10.tgz",
+ "integrity": "sha512-K86yYa0tYlMxADlwQTculYvPROokQau09SCVqpsLg3wJCTvYFL4+SIqcYoyBSbFmHOdnYbJgPydjN33MYLiOZQ==",
"dev": true,
"requires": {
- "@storybook/core-client": "6.5.9",
- "@storybook/core-server": "6.5.9"
+ "@storybook/core-client": "6.5.10",
+ "@storybook/core-server": "6.5.10"
}
},
"@storybook/core-client": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz",
- "integrity": "sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.10.tgz",
+ "integrity": "sha512-THsIjNrOrampTl0Lgfjvfjk1JnktKb4CQLOM80KpQb4cjDqorBjJmErzUkUQ2y3fXvrDmQ/kUREkShET4XEdtA==",
"dev": true,
"requires": {
- "@storybook/addons": "6.5.9",
- "@storybook/channel-postmessage": "6.5.9",
- "@storybook/channel-websocket": "6.5.9",
- "@storybook/client-api": "6.5.9",
- "@storybook/client-logger": "6.5.9",
- "@storybook/core-events": "6.5.9",
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/channel-websocket": "6.5.10",
+ "@storybook/client-api": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
- "@storybook/preview-web": "6.5.9",
- "@storybook/store": "6.5.9",
- "@storybook/ui": "6.5.9",
+ "@storybook/preview-web": "6.5.10",
+ "@storybook/store": "6.5.10",
+ "@storybook/ui": "6.5.10",
"airbnb-js-shims": "^2.2.1",
"ansi-to-html": "^0.6.11",
"core-js": "^3.8.2",
@@ -57545,6 +60335,203 @@
"ts-dedent": "^2.0.0",
"unfetch": "^4.2.0",
"util-deprecate": "^1.0.2"
+ },
+ "dependencies": {
+ "@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "requires": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "requires": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/channel-postmessage": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.10.tgz",
+ "integrity": "sha512-t9PTA0UzFvYa3IlOfpBOolfrRMPTjUMIeCQ6FNyM0aj5GqLKSvoQzP8NeoRpIrvyf6ljFKKdaMaZ3fiCvh45ag==",
+ "dev": true,
+ "requires": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "qs": "^6.10.0",
+ "telejson": "^6.0.8"
+ }
+ },
+ "@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.10.tgz",
+ "integrity": "sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "@types/qs": "^6.9.5",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ },
+ "@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2"
+ }
+ },
+ "@storybook/preview-web": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.10.tgz",
+ "integrity": "sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/channel-postmessage": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "ansi-to-html": "^0.6.11",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "unfetch": "^4.2.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/store": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz",
+ "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "slash": "^3.0.0",
+ "stable": "^0.1.8",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ }
}
},
"@storybook/core-common": {
@@ -57635,23 +60622,23 @@
}
},
"@storybook/core-server": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz",
- "integrity": "sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.10.tgz",
+ "integrity": "sha512-jqwpA0ccA8X5ck4esWBid04+cEIVqirdAcqJeNb9IZAD+bRreO4Im8ilzr7jc5AmQ9fkqHs2NByFKh9TITp8NQ==",
"dev": true,
"requires": {
"@discoveryjs/json-ext": "^0.5.3",
- "@storybook/builder-webpack4": "6.5.9",
- "@storybook/core-client": "6.5.9",
- "@storybook/core-common": "6.5.9",
- "@storybook/core-events": "6.5.9",
+ "@storybook/builder-webpack4": "6.5.10",
+ "@storybook/core-client": "6.5.10",
+ "@storybook/core-common": "6.5.10",
+ "@storybook/core-events": "6.5.10",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
- "@storybook/csf-tools": "6.5.9",
- "@storybook/manager-webpack4": "6.5.9",
- "@storybook/node-logger": "6.5.9",
+ "@storybook/csf-tools": "6.5.10",
+ "@storybook/manager-webpack4": "6.5.10",
+ "@storybook/node-logger": "6.5.10",
"@storybook/semver": "^7.3.2",
- "@storybook/store": "6.5.9",
- "@storybook/telemetry": "6.5.9",
+ "@storybook/store": "6.5.10",
+ "@storybook/telemetry": "6.5.10",
"@types/node": "^14.0.10 || ^16.0.0",
"@types/node-fetch": "^2.5.7",
"@types/pretty-hrtime": "^1.0.0",
@@ -57687,6 +60674,199 @@
"x-default-browser": "^0.4.0"
},
"dependencies": {
+ "@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "requires": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "requires": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ },
+ "@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ }
+ },
+ "@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2"
+ }
+ },
+ "@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "requires": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ }
+ },
+ "@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/store": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz",
+ "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "slash": "^3.0.0",
+ "stable": "^0.1.8",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
"commander": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
@@ -57729,9 +60909,9 @@
}
},
"@storybook/csf-tools": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz",
- "integrity": "sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.10.tgz",
+ "integrity": "sha512-H77kZQEisu7+skzeIbNZwmE09OqLjwJTeFhLN1pcjxKVa30LEI3pBHcNBxVKqgxl+Yg3KkB7W/ArLO2N+i2ohw==",
"dev": true,
"requires": {
"@babel/core": "^7.12.10",
@@ -57780,20 +60960,20 @@
}
},
"@storybook/manager-webpack4": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz",
- "integrity": "sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.10.tgz",
+ "integrity": "sha512-N/TlNDhuhARuFipR/ZJ/xEVESz23iIbCsZ4VNehLHm8PpiGlQUehk+jMjWmz5XV0bJItwjRclY+CU3GjZKblfQ==",
"dev": true,
"requires": {
"@babel/core": "^7.12.10",
"@babel/plugin-transform-template-literals": "^7.12.1",
"@babel/preset-react": "^7.12.10",
- "@storybook/addons": "6.5.9",
- "@storybook/core-client": "6.5.9",
- "@storybook/core-common": "6.5.9",
- "@storybook/node-logger": "6.5.9",
- "@storybook/theming": "6.5.9",
- "@storybook/ui": "6.5.9",
+ "@storybook/addons": "6.5.10",
+ "@storybook/core-client": "6.5.10",
+ "@storybook/core-common": "6.5.10",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@storybook/ui": "6.5.10",
"@types/node": "^14.0.10 || ^16.0.0",
"@types/webpack": "^4.41.26",
"babel-loader": "^8.0.0",
@@ -57822,6 +61002,176 @@
"webpack-virtual-modules": "^0.2.2"
},
"dependencies": {
+ "@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "requires": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "requires": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ },
+ "@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ }
+ },
+ "@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2"
+ }
+ },
+ "@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "requires": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ }
+ },
+ "@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -57837,6 +61187,27 @@
"commondir": "^1.0.1",
"make-dir": "^3.0.2",
"pkg-dir": "^4.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ }
}
},
"fs-extra": {
@@ -57900,26 +61271,11 @@
}
}
},
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- }
- }
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
},
"source-map": {
"version": "0.6.1",
@@ -58042,24 +61398,24 @@
}
},
"@storybook/react": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz",
- "integrity": "sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.10.tgz",
+ "integrity": "sha512-m8S1qQrwA7pDGwdKEvL6LV3YKvSzVUY297Fq+xcTU3irnAy4sHDuFoLqV6Mi1510mErK1r8+rf+0R5rEXB219g==",
"dev": true,
"requires": {
"@babel/preset-flow": "^7.12.1",
"@babel/preset-react": "^7.12.10",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
- "@storybook/addons": "6.5.9",
- "@storybook/client-logger": "6.5.9",
- "@storybook/core": "6.5.9",
- "@storybook/core-common": "6.5.9",
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core": "6.5.10",
+ "@storybook/core-common": "6.5.10",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
- "@storybook/docs-tools": "6.5.9",
- "@storybook/node-logger": "6.5.9",
+ "@storybook/docs-tools": "6.5.10",
+ "@storybook/node-logger": "6.5.10",
"@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0",
"@storybook/semver": "^7.3.2",
- "@storybook/store": "6.5.9",
+ "@storybook/store": "6.5.10",
"@types/estree": "^0.0.51",
"@types/node": "^14.14.20 || ^16.0.0",
"@types/webpack-env": "^1.16.0",
@@ -58084,6 +61440,214 @@
"webpack": ">=4.43.0 <6.0.0"
},
"dependencies": {
+ "@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "requires": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "requires": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ },
+ "@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "pkg-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^5.0.0"
+ }
+ }
+ }
+ },
+ "@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2"
+ }
+ },
+ "@storybook/docs-tools": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.10.tgz",
+ "integrity": "sha512-/bvYgOO+CxMEcHifkjJg0A60OTGOhcjGxnsB1h0gJuxMrqA/7Qwc108bFmPiX0eiD1BovFkZLJV4O6OY7zP5Vw==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.12.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/store": "6.5.10",
+ "core-js": "^3.8.2",
+ "doctrine": "^3.0.0",
+ "lodash": "^4.17.21",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "requires": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ }
+ },
"@storybook/react-docgen-typescript-plugin": {
"version": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0",
"resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz",
@@ -58099,6 +61663,54 @@
"tslib": "^2.0.0"
}
},
+ "@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/store": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz",
+ "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "slash": "^3.0.0",
+ "stable": "^0.1.8",
+ "synchronous-promise": "^2.0.15",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
"acorn": {
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
@@ -58195,6 +61807,12 @@
"integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==",
"dev": true,
"requires": {}
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
}
}
},
@@ -58318,13 +61936,13 @@
}
},
"@storybook/telemetry": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz",
- "integrity": "sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.10.tgz",
+ "integrity": "sha512-+M5HILDFS8nDumLxeSeAwi1MTzIuV6UWzV4yB2wcsEXOBTdplcl9oYqFKtlst78oOIdGtpPYxYfivDlqxC2K4g==",
"dev": true,
"requires": {
- "@storybook/client-logger": "6.5.9",
- "@storybook/core-common": "6.5.9",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-common": "6.5.10",
"chalk": "^4.1.0",
"core-js": "^3.8.2",
"detect-package-manager": "^2.0.1",
@@ -58337,6 +61955,87 @@
"regenerator-runtime": "^0.13.7"
},
"dependencies": {
+ "@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ },
+ "@storybook/core-common": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz",
+ "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-proposal-private-methods": "^7.12.1",
+ "@babel/plugin-proposal-private-property-in-object": "^7.12.1",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@types/node": "^14.0.10 || ^16.0.0",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.0.0",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "handlebars": "^4.7.7",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "picomatch": "^2.3.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "slash": "^3.0.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ }
+ },
+ "@storybook/node-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz",
+ "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==",
+ "dev": true,
+ "requires": {
+ "@types/npmlog": "^4.1.2",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "npmlog": "^5.0.1",
+ "pretty-hrtime": "^1.0.3"
+ }
+ },
"fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -58348,6 +62047,12 @@
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
}
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
}
}
},
@@ -58364,25 +62069,142 @@
}
},
"@storybook/ui": {
- "version": "6.5.9",
- "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz",
- "integrity": "sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q==",
- "dev": true,
- "requires": {
- "@storybook/addons": "6.5.9",
- "@storybook/api": "6.5.9",
- "@storybook/channels": "6.5.9",
- "@storybook/client-logger": "6.5.9",
- "@storybook/components": "6.5.9",
- "@storybook/core-events": "6.5.9",
- "@storybook/router": "6.5.9",
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.10.tgz",
+ "integrity": "sha512-6iaoaRAiTqB1inTw35vao+5hjcDE0Qa0A3a9ZIeNa6yHvpB1k0lO/N/0PMrRdVvySYpXVD1iry4z4QYdo1rU+w==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.5.10",
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/components": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/router": "6.5.10",
"@storybook/semver": "^7.3.2",
- "@storybook/theming": "6.5.9",
+ "@storybook/theming": "6.5.10",
"core-js": "^3.8.2",
"memoizerific": "^1.11.3",
"qs": "^6.10.0",
"regenerator-runtime": "^0.13.7",
"resolve-from": "^5.0.0"
+ },
+ "dependencies": {
+ "@storybook/addons": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz",
+ "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==",
+ "dev": true,
+ "requires": {
+ "@storybook/api": "6.5.10",
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/theming": "6.5.10",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/api": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz",
+ "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==",
+ "dev": true,
+ "requires": {
+ "@storybook/channels": "6.5.10",
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/core-events": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/router": "6.5.10",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.21",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7",
+ "store2": "^2.12.0",
+ "telejson": "^6.0.8",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/channels": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz",
+ "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-logger": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz",
+ "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ },
+ "@storybook/components": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.10.tgz",
+ "integrity": "sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "@storybook/csf": "0.0.2--canary.4566f4d.1",
+ "@storybook/theming": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/core-events": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz",
+ "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2"
+ }
+ },
+ "@storybook/router": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz",
+ "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7"
+ }
+ },
+ "@storybook/theming": {
+ "version": "6.5.10",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz",
+ "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==",
+ "dev": true,
+ "requires": {
+ "@storybook/client-logger": "6.5.10",
+ "core-js": "^3.8.2",
+ "memoizerific": "^1.11.3",
+ "regenerator-runtime": "^0.13.7"
+ }
+ }
}
},
"@svgr/babel-plugin-add-jsx-attribute": {
@@ -58758,6 +62580,12 @@
"@types/node": "*"
}
},
+ "@types/d3-time-format": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.3.1.tgz",
+ "integrity": "sha512-fck0Z9RGfIQn3GJIEKVrp15h9m6Vlg0d5XXeiE/6+CQiBmMDZxfR21XtjEPuDeg7gC3bBM0SdieA5XF3GW1wKA==",
+ "dev": true
+ },
"@types/dinero.js": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@types/dinero.js/-/dinero.js-1.9.0.tgz",
@@ -59465,14 +63293,20 @@
}
}
},
+ "@types/wordpress__core-data": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/@types/wordpress__core-data/-/wordpress__core-data-2.4.5.tgz",
+ "integrity": "sha512-DfLCkfGSDepv7U/fBKSdl5rcOUYbHiq+6L1JUivtIlZcDCT99uz/VTSSxZW/yq2kMRp1U8FZ/Iluj0fHUM2UVg==",
+ "dev": true
+ },
"@types/wordpress__data": {
- "version": "4.6.11",
- "resolved": "https://registry.npmjs.org/@types/wordpress__data/-/wordpress__data-4.6.11.tgz",
- "integrity": "sha512-e2Nufi1J6RD1+Tq6bsosHT2ROiagPkeJoWPcgPIkvUR9ujT7o5Bl7iawhIp/o7Iu4E3OUIR6IBr3FYUwnP2MNA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@types/wordpress__data/-/wordpress__data-6.0.1.tgz",
+ "integrity": "sha512-jTLl9mbw54rUq4wuTEmg9bBUaV66MIbg7vVoutpf3Etdnk+kwsuucAdoW+mJTzKEVkGQB5LDIZ/vohd6QrtQ2w==",
"dev": true,
"requires": {
"@types/react": "*",
- "redux": "^4.0.1"
+ "redux": "^4.1.0"
}
},
"@types/wordpress__data-controls": {
@@ -59498,12 +63332,39 @@
}
}
},
+ "@types/wordpress__editor": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@types/wordpress__editor/-/wordpress__editor-11.0.0.tgz",
+ "integrity": "sha512-Ee/1dvsQo6Nv7pIO9Z/rseQwF09YDa1VVLle93CDedyRuK2cRPtZzVlrUQ2sDSMsFbC0GVB3zM0yXFKqsHtLCA==",
+ "dev": true,
+ "requires": {
+ "@types/react": "*",
+ "@types/wordpress__block-editor": "*",
+ "@types/wordpress__blocks": "*",
+ "@types/wordpress__components": "*",
+ "@types/wordpress__core-data": "*",
+ "@types/wordpress__data": "*",
+ "@types/wordpress__media-utils": "*",
+ "@wordpress/element": "^4.0.0"
+ }
+ },
"@types/wordpress__keycodes": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@types/wordpress__keycodes/-/wordpress__keycodes-2.3.1.tgz",
"integrity": "sha512-CUZv3WdPvWqnEwojbc4yEttwZlvsMGI8YurgB9CHVJXx6nQ4U2RU6PB0Mv7nxATufduFDMKq8TNpCHBenZqEjQ==",
"dev": true
},
+ "@types/wordpress__media-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/wordpress__media-utils/-/wordpress__media-utils-3.0.0.tgz",
+ "integrity": "sha512-iNQoyc9BD8HevjABZPh4L2bKEy/UYMb8+iswjn8AgUYjBpu8Y1x+9f+Zc6JRu/HEsFyEprY5LjSOxRLjti1gRQ==",
+ "dev": true,
+ "requires": {
+ "@types/wordpress__block-editor": "*",
+ "@types/wordpress__core-data": "*",
+ "@wordpress/element": "^4.0.0"
+ }
+ },
"@types/wordpress__notices": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/@types/wordpress__notices/-/wordpress__notices-3.3.0.tgz",
@@ -59662,41 +63523,41 @@
}
},
"@typescript-eslint/parser": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz",
- "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz",
+ "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.31.0",
- "@typescript-eslint/types": "5.31.0",
- "@typescript-eslint/typescript-estree": "5.31.0",
+ "@typescript-eslint/scope-manager": "5.35.1",
+ "@typescript-eslint/types": "5.35.1",
+ "@typescript-eslint/typescript-estree": "5.35.1",
"debug": "^4.3.4"
},
"dependencies": {
"@typescript-eslint/scope-manager": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz",
- "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz",
+ "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.31.0",
- "@typescript-eslint/visitor-keys": "5.31.0"
+ "@typescript-eslint/types": "5.35.1",
+ "@typescript-eslint/visitor-keys": "5.35.1"
}
},
"@typescript-eslint/types": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz",
- "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz",
+ "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz",
- "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz",
+ "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.31.0",
- "@typescript-eslint/visitor-keys": "5.31.0",
+ "@typescript-eslint/types": "5.35.1",
+ "@typescript-eslint/visitor-keys": "5.35.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -59705,12 +63566,12 @@
}
},
"@typescript-eslint/visitor-keys": {
- "version": "5.31.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz",
- "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==",
+ "version": "5.35.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz",
+ "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.31.0",
+ "@typescript-eslint/types": "5.35.1",
"eslint-visitor-keys": "^3.3.0"
}
},
@@ -60087,6 +63948,89 @@
}
}
},
+ "@woocommerce/data": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@woocommerce/data/-/data-4.1.0.tgz",
+ "integrity": "sha512-K8MuPH1oYLeeKOS8hjjd0Iblrsvq09c9SMpcSjcE2Etnx8OFom1MPOOjeUQTGTg/tgDelOPqw30sGsGzDPi4Lg==",
+ "dev": true,
+ "requires": {
+ "@woocommerce/date": "4.2.0",
+ "@woocommerce/navigation": "8.1.0",
+ "@wordpress/api-fetch": "^6.0.1",
+ "@wordpress/compose": "^5.1.2",
+ "@wordpress/core-data": "^4.1.2",
+ "@wordpress/data": "^6.3.0",
+ "@wordpress/data-controls": "^2.3.2",
+ "@wordpress/deprecated": "^3.3.1",
+ "@wordpress/element": "^4.1.1",
+ "@wordpress/hooks": "^3.5.0",
+ "@wordpress/i18n": "^4.3.1",
+ "@wordpress/url": "^3.4.1",
+ "dompurify": "^2.3.6",
+ "md5": "^2.3.0",
+ "qs": "^6.10.3",
+ "rememo": "^4.0.0"
+ },
+ "dependencies": {
+ "@wordpress/data-controls": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-2.14.0.tgz",
+ "integrity": "sha512-yQqq7PztVgivod6ACzL8iSyRTLFjFPrF7omgHHeXXXlf9CuuWlAh6fFV/40PlDTgc3IJS5T0oUxzVW2QK2Brdw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/api-fetch": "^6.11.0",
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/deprecated": "^3.14.0"
+ }
+ },
+ "@wordpress/element": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@types/react": "^17.0.37",
+ "@types/react-dom": "^17.0.11",
+ "@wordpress/escape-html": "^2.14.0",
+ "lodash": "^4.17.21",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2"
+ }
+ },
+ "@wordpress/url": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.15.0.tgz",
+ "integrity": "sha512-LLlgCMbherqqnxAuK6kb997MKkzfnvkyQQ5RazBQKBn//RBXrW/w6BMVglm4QjV7L65N/IfqFd36QLZDMuiYDA==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "remove-accents": "^0.4.2"
+ }
+ },
+ "rememo": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz",
+ "integrity": "sha512-x/T5q/pCDh8k4OlvJGqkI3eO+O8hmJv9HhJHo4avwlluwUpDbteDvyqw1PTarEITkeH9bfW6GSKeRke+XKgykw==",
+ "dev": true
+ }
+ }
+ },
+ "@woocommerce/date": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@woocommerce/date/-/date-4.2.0.tgz",
+ "integrity": "sha512-6Aop2IkYLMmJ34BHqT55P6/T4FaoDGAbAL+z0TnPqQNnKn4RJ55rmhSGI34VQwa4541bAeD0pWQeMaP1Fpg6Ow==",
+ "dev": true,
+ "requires": {
+ "@types/d3-time-format": "^2.3.0",
+ "@wordpress/date": "^4.3.1",
+ "@wordpress/i18n": "^4.3.1",
+ "moment": "^2.29.1",
+ "moment-timezone": "^0.5.34",
+ "qs": "^6.10.3"
+ }
+ },
"@woocommerce/e2e-utils": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@woocommerce/e2e-utils/-/e2e-utils-0.2.0.tgz",
@@ -60184,6 +64128,279 @@
"requireindex": "^1.2.0"
}
},
+ "@woocommerce/navigation": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@woocommerce/navigation/-/navigation-8.1.0.tgz",
+ "integrity": "sha512-Ifl8IYRLYlbxk6RNuuVorMaCoOs8aFWEo8oSU++SqFfyjPi893Nuk6NJYVvAVhxFdwPfw9RptvQ/q8sIusPihA==",
+ "dev": true,
+ "requires": {
+ "@wordpress/api-fetch": "^6.0.1",
+ "@wordpress/components": "^19.5.0",
+ "@wordpress/compose": "^5.1.2",
+ "@wordpress/element": "^4.1.1",
+ "@wordpress/hooks": "^3.5.0",
+ "@wordpress/notices": "^3.3.2",
+ "@wordpress/url": "^3.4.1",
+ "history": "^5.3.0",
+ "qs": "^6.10.3"
+ },
+ "dependencies": {
+ "@wordpress/components": {
+ "version": "19.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.16.0.tgz",
+ "integrity": "sha512-7GYIIBGD8Z0xaCw6k6qiWMTMQt8y01IvvKGgzoLYyoZqPwGyPK4DjCJVcILNHOivkI8mi+da3vq1ku9IkMNrPg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@emotion/cache": "^11.7.1",
+ "@emotion/css": "^11.7.1",
+ "@emotion/react": "^11.7.1",
+ "@emotion/serialize": "^1.0.2",
+ "@emotion/styled": "^11.6.0",
+ "@emotion/utils": "1.0.0",
+ "@floating-ui/react-dom": "0.6.3",
+ "@use-gesture/react": "^10.2.6",
+ "@wordpress/a11y": "^3.14.0",
+ "@wordpress/compose": "^5.12.0",
+ "@wordpress/date": "^4.14.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/escape-html": "^2.14.0",
+ "@wordpress/hooks": "^3.14.0",
+ "@wordpress/i18n": "^4.14.0",
+ "@wordpress/icons": "^9.5.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "@wordpress/primitives": "^3.12.0",
+ "@wordpress/rich-text": "^5.12.0",
+ "@wordpress/warning": "^2.14.0",
+ "classnames": "^2.3.1",
+ "colord": "^2.7.0",
+ "dom-scroll-into-view": "^1.2.1",
+ "downshift": "^6.0.15",
+ "framer-motion": "^6.2.8",
+ "gradient-parser": "^0.1.5",
+ "highlight-words-core": "^1.2.2",
+ "lodash": "^4.17.21",
+ "memize": "^1.1.0",
+ "moment": "^2.26.0",
+ "re-resizable": "^6.4.0",
+ "react-colorful": "^5.3.1",
+ "react-dates": "^21.8.0",
+ "reakit": "^1.3.8",
+ "remove-accents": "^0.4.2",
+ "uuid": "^8.3.0"
+ }
+ },
+ "@wordpress/compose": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.12.0.tgz",
+ "integrity": "sha512-ohK+uxazOqWWZ2BUyVFeNDy5/RJasfsnrs00f9O0BohaGUM4bp5daEnYHPMdjUpvzRTDEviiX0IMIEnc97N+JQ==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@types/lodash": "^4.14.172",
+ "@types/mousetrap": "^1.6.8",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "@wordpress/priority-queue": "^2.14.0",
+ "clipboard": "^2.0.8",
+ "lodash": "^4.17.21",
+ "mousetrap": "^1.6.5",
+ "use-memo-one": "^1.1.1"
+ }
+ },
+ "@wordpress/element": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@types/react": "^17.0.37",
+ "@types/react-dom": "^17.0.11",
+ "@wordpress/escape-html": "^2.14.0",
+ "lodash": "^4.17.21",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2"
+ }
+ },
+ "@wordpress/icons": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.5.0.tgz",
+ "integrity": "sha512-nwjLoNt7wSQbtz//XkE3zdNY9HRlakAWq0ttauWpV6NwI/Wiz6Bm1+l4v15olWnOh2akikGfc8UFO5M0ZmbQqw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/primitives": "^3.12.0"
+ }
+ },
+ "@wordpress/is-shallow-equal": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz",
+ "integrity": "sha512-FVpuU3GmvZFvjcuIKcraNH46vEZzz+FCpujjqCzcyWNGUsg7wpfGNVoDWs5LWFA4EELHL2+p8Ff9RZX237b5Kg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0"
+ }
+ },
+ "@wordpress/primitives": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.12.0.tgz",
+ "integrity": "sha512-/mlWDw9JFFrptAQz6ur9ui9sqFfBbDI79Bm4rJdas0vRxBfUhMNUPKybjCaN/zmalnD1c1lLHuyaOW2ryT1Ivw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/element": "^4.12.0",
+ "classnames": "^2.3.1"
+ }
+ },
+ "deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
+ "dev": true
+ },
+ "framer-motion": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz",
+ "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==",
+ "dev": true,
+ "requires": {
+ "@emotion/is-prop-valid": "^0.8.2",
+ "@motionone/dom": "10.12.0",
+ "framesync": "6.0.1",
+ "hey-listen": "^1.0.8",
+ "popmotion": "11.0.3",
+ "style-value-types": "5.0.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "framesync": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz",
+ "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "popmotion": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz",
+ "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==",
+ "dev": true,
+ "requires": {
+ "framesync": "6.0.1",
+ "hey-listen": "^1.0.8",
+ "style-value-types": "5.0.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "react-dates": {
+ "version": "21.8.0",
+ "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-21.8.0.tgz",
+ "integrity": "sha512-PPriGqi30CtzZmoHiGdhlA++YPYPYGCZrhydYmXXQ6RAvAsaONcPtYgXRTLozIOrsQ5mSo40+DiA5eOFHnZ6xw==",
+ "dev": true,
+ "requires": {
+ "airbnb-prop-types": "^2.15.0",
+ "consolidated-events": "^1.1.1 || ^2.0.0",
+ "enzyme-shallow-equal": "^1.0.0",
+ "is-touch-device": "^1.0.1",
+ "lodash": "^4.1.1",
+ "object.assign": "^4.1.0",
+ "object.values": "^1.1.0",
+ "prop-types": "^15.7.2",
+ "raf": "^3.4.1",
+ "react-moment-proptypes": "^1.6.0",
+ "react-outside-click-handler": "^1.2.4",
+ "react-portal": "^4.2.0",
+ "react-with-direction": "^1.3.1",
+ "react-with-styles": "^4.1.0",
+ "react-with-styles-interface-css": "^6.0.0"
+ },
+ "dependencies": {
+ "airbnb-prop-types": {
+ "version": "2.16.0",
+ "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz",
+ "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==",
+ "dev": true,
+ "requires": {
+ "array.prototype.find": "^2.1.1",
+ "function.prototype.name": "^1.1.2",
+ "is-regex": "^1.1.0",
+ "object-is": "^1.1.2",
+ "object.assign": "^4.1.0",
+ "object.entries": "^1.1.2",
+ "prop-types": "^15.7.2",
+ "prop-types-exact": "^1.2.0",
+ "react-is": "^16.13.1"
+ }
+ },
+ "react-with-direction": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz",
+ "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==",
+ "dev": true,
+ "requires": {
+ "airbnb-prop-types": "^2.16.0",
+ "brcast": "^2.0.2",
+ "deepmerge": "^1.5.2",
+ "direction": "^1.0.4",
+ "hoist-non-react-statics": "^3.3.2",
+ "object.assign": "^4.1.2",
+ "object.values": "^1.1.5",
+ "prop-types": "^15.7.2"
+ }
+ },
+ "react-with-styles": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-4.2.0.tgz",
+ "integrity": "sha512-tZCTY27KriRNhwHIbg1NkSdTTOSfXDg6Z7s+Q37mtz0Ym7Sc7IOr3PzVt4qJhJMW6Nkvfi3g34FuhtiGAJCBQA==",
+ "dev": true,
+ "requires": {
+ "airbnb-prop-types": "^2.14.0",
+ "hoist-non-react-statics": "^3.2.1",
+ "object.assign": "^4.1.0",
+ "prop-types": "^15.7.2",
+ "react-with-direction": "^1.3.1"
+ }
+ },
+ "react-with-styles-interface-css": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-6.0.0.tgz",
+ "integrity": "sha512-6khSG1Trf4L/uXOge/ZAlBnq2O2PEXlQEqAhCRbvzaQU4sksIkdwpCPEl6d+DtP3+IdhyffTWuHDO9lhe1iYvA==",
+ "dev": true,
+ "requires": {
+ "array.prototype.flat": "^1.2.1",
+ "global-cache": "^1.2.1"
+ }
+ }
+ }
+ },
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "style-value-types": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz",
+ "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==",
+ "dev": true,
+ "requires": {
+ "hey-listen": "^1.0.8",
+ "tslib": "^2.1.0"
+ }
+ }
+ }
+ },
"@woocommerce/woocommerce-rest-api": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@woocommerce/woocommerce-rest-api/-/woocommerce-rest-api-1.0.1.tgz",
@@ -60232,13 +64449,13 @@
}
},
"@wordpress/a11y": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.13.0.tgz",
- "integrity": "sha512-idT1zw3FjS0+Ypeu0XaUQuxAFsrkVxeY2HgiUYmGWERd9exs6tM1q7c8a+wiZtbIML/I0Wq83KQeSVwW97SPnw==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.14.0.tgz",
+ "integrity": "sha512-njZSjcgxuRHBaJKlu1sOyQxPxXEECD+RBV+pzlW4ivf3zzImcFfUk+WP7BXwfS48f88VfCevfNkGtiB5Cz3v6A==",
"requires": {
"@babel/runtime": "^7.16.0",
- "@wordpress/dom-ready": "^3.13.0",
- "@wordpress/i18n": "^4.13.0"
+ "@wordpress/dom-ready": "^3.14.0",
+ "@wordpress/i18n": "^4.14.0"
}
},
"@wordpress/api-fetch": {
@@ -60263,9 +64480,9 @@
}
},
"@wordpress/autop": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.12.0.tgz",
- "integrity": "sha512-SWi8YzZQho47NwnYnuAsxejw33BF9MRDADIEc5l7VHuCLvL8ddfT0+b9apvovBOpMhnhvrpQBbkk99lnSMlg6g==",
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.16.0.tgz",
+ "integrity": "sha512-cepLM41mF1h7f2JIU12XhLLfep1R0DNkI0gM2GoVzp0DlM0qSnJVuU93R75wTnR0OTija0cVVPUovt+gBWIR2Q==",
"requires": {
"@babel/runtime": "^7.16.0"
}
@@ -60297,6 +64514,12 @@
"core-js": "^3.19.1"
},
"dependencies": {
+ "@wordpress/browserslist-config": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz",
+ "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==",
+ "dev": true
+ },
"@wordpress/element": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
@@ -60321,9 +64544,9 @@
"dev": true
},
"@wordpress/blob": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.13.0.tgz",
- "integrity": "sha512-ehWsapoUByU0Hn7i8ph7e6sLyj5D1gFAqYIV8VK4b76VP9TRu42M43veAdNoYpkkd6RUITJABXwTufC2bgo9CA==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.14.0.tgz",
+ "integrity": "sha512-mCkH94I8g8XY3+yaeVCOdcyl4lBkOmVNJ7mmAjaHKwWLVkPzLoZr7deE6d3OGeBuff1HeSNOA4gKou3ninSOPw==",
"requires": {
"@babel/runtime": "^7.16.0"
}
@@ -60463,16 +64686,6 @@
}
}
},
- "@wordpress/dom": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.7.0.tgz",
- "integrity": "sha512-+2WFob22c3ecrZ6L4UEh/ZTSyxXlO/21dLo308HuE32fFO+3snrgZaXF2Z9aA41snh99HAcPeyuqImplOMDebw==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.16.0",
- "lodash": "^4.17.21"
- }
- },
"@wordpress/element": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz",
@@ -60558,9 +64771,9 @@
}
},
"@wordpress/block-serialization-default-parser": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.13.0.tgz",
- "integrity": "sha512-ybvLS93jbQzsy4XpY3PMg3kacVm7e6xsY24KxApoTgQNUcmXnASkxL0ljv2Cwjpz5zD/mk07nc33CBahJfktZA==",
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.14.0.tgz",
+ "integrity": "sha512-Sr3ab/aV/GbRGBVXCNC6lm/2z+p+T4lI9rTlc2aAc1EILoCvn98Soc/cmr1bSNzT9o4LFhJBGLEL/Q3aTJSvSQ==",
"requires": {
"@babel/runtime": "^7.16.0"
}
@@ -60595,9 +64808,9 @@
}
},
"@wordpress/browserslist-config": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.2.tgz",
- "integrity": "sha512-UH0Ifmm4tEjVPOtiqH6yxDvk2EKtqSAhnyhyfSIb0wUnEoGsWTjREZjzuhgjt/I2nTqfg+0gUSzL5D0yQH6wDQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.0.0.tgz",
+ "integrity": "sha512-YitgByVHIBP7IscrhHVuUkZ6+qnMfATln2b3ItdyUT2gLlUmZJfqrt7UNiT6YiaArypKwkklpFw5NNtFpyvZVw==",
"dev": true
},
"@wordpress/components": {
@@ -60667,15 +64880,6 @@
"use-memo-one": "^1.1.1"
},
"dependencies": {
- "@wordpress/dom": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.7.0.tgz",
- "integrity": "sha512-+2WFob22c3ecrZ6L4UEh/ZTSyxXlO/21dLo308HuE32fFO+3snrgZaXF2Z9aA41snh99HAcPeyuqImplOMDebw==",
- "requires": {
- "@babel/runtime": "^7.16.0",
- "lodash": "^4.17.21"
- }
- },
"@wordpress/element": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz",
@@ -60692,18 +64896,121 @@
}
}
},
+ "@wordpress/core-data": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-4.12.0.tgz",
+ "integrity": "sha512-/gudJQ0bfQWhoNbQqvW3XdQg59B8ir8t7tL3jzK/EmIpQO6+Ci5VIRNI9hyFFCds5oiXdEb53FUm90E95js7KQ==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/api-fetch": "^6.11.0",
+ "@wordpress/blocks": "^11.13.0",
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/html-entities": "^3.14.0",
+ "@wordpress/i18n": "^4.14.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/url": "^3.15.0",
+ "equivalent-key-map": "^0.2.2",
+ "lodash": "^4.17.21",
+ "memize": "^1.1.0",
+ "rememo": "^4.0.0",
+ "uuid": "^8.3.0"
+ },
+ "dependencies": {
+ "@wordpress/blocks": {
+ "version": "11.13.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.13.0.tgz",
+ "integrity": "sha512-5cqw5ZeX5vRilZSNTTuuaqXdtuS8bjsKf0CNWjnYveYaXXl/PcbAegZ/YUNyRD6YwIvM6S9NHN3TK+H4lmjd4Q==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@wordpress/autop": "^3.14.0",
+ "@wordpress/blob": "^3.14.0",
+ "@wordpress/block-serialization-default-parser": "^4.14.0",
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/hooks": "^3.14.0",
+ "@wordpress/html-entities": "^3.14.0",
+ "@wordpress/i18n": "^4.14.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/shortcode": "^3.14.0",
+ "colord": "^2.7.0",
+ "hpq": "^1.3.0",
+ "lodash": "^4.17.21",
+ "memize": "^1.1.0",
+ "rememo": "^4.0.0",
+ "showdown": "^1.9.1",
+ "simple-html-tokenizer": "^0.5.7",
+ "uuid": "^8.3.0"
+ }
+ },
+ "@wordpress/element": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "@types/react": "^17.0.37",
+ "@types/react-dom": "^17.0.11",
+ "@wordpress/escape-html": "^2.14.0",
+ "lodash": "^4.17.21",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2"
+ }
+ },
+ "@wordpress/html-entities": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.14.0.tgz",
+ "integrity": "sha512-9HpwT7uCPNp+8CJ9oPZq5RfOeqR4ml/wQ6zwGgJlmt/S+MxsJFABL/GHiVXgRJntaifq8u/tn6c2NCdcFaPV2Q==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0"
+ }
+ },
+ "@wordpress/is-shallow-equal": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz",
+ "integrity": "sha512-FVpuU3GmvZFvjcuIKcraNH46vEZzz+FCpujjqCzcyWNGUsg7wpfGNVoDWs5LWFA4EELHL2+p8Ff9RZX237b5Kg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0"
+ }
+ },
+ "@wordpress/url": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.15.0.tgz",
+ "integrity": "sha512-LLlgCMbherqqnxAuK6kb997MKkzfnvkyQQ5RazBQKBn//RBXrW/w6BMVglm4QjV7L65N/IfqFd36QLZDMuiYDA==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.0",
+ "remove-accents": "^0.4.2"
+ }
+ },
+ "rememo": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz",
+ "integrity": "sha512-x/T5q/pCDh8k4OlvJGqkI3eO+O8hmJv9HhJHo4avwlluwUpDbteDvyqw1PTarEITkeH9bfW6GSKeRke+XKgykw==",
+ "dev": true
+ }
+ }
+ },
"@wordpress/data": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.13.0.tgz",
- "integrity": "sha512-9PRpBzxEqvgms4xegjvsujc9h5vDQibnZBEp7IBQEKUmPXM0nqp84c83skSVxs55yu3QVlKSK6WFg5Rr0fu2oA==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.14.0.tgz",
+ "integrity": "sha512-m0SazQ6zlxRcm8iBcB/K06S4iCW+EZ1EXoEXILoaQ3AC2Kyibs262n/SSer8MRpPuwwOkpvS0ANgubT3MN/0SA==",
"requires": {
"@babel/runtime": "^7.16.0",
- "@wordpress/compose": "^5.11.0",
- "@wordpress/deprecated": "^3.13.0",
- "@wordpress/element": "^4.11.0",
- "@wordpress/is-shallow-equal": "4.13.0",
- "@wordpress/priority-queue": "^2.13.0",
- "@wordpress/redux-routine": "^4.13.0",
+ "@wordpress/compose": "^5.12.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/priority-queue": "^2.14.0",
+ "@wordpress/redux-routine": "^4.14.0",
"equivalent-key-map": "^0.2.2",
"is-promise": "^4.0.0",
"lodash": "^4.17.21",
@@ -60713,57 +65020,46 @@
},
"dependencies": {
"@wordpress/compose": {
- "version": "5.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.11.0.tgz",
- "integrity": "sha512-S6KABT9jB6ynvTIEHFnPjeT++xsmX3410ctTNNOiVY3HdcnVjzXcu6czqj/y3OWXupNn7WqRA9p9pWaSvSKMXQ==",
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.12.0.tgz",
+ "integrity": "sha512-ohK+uxazOqWWZ2BUyVFeNDy5/RJasfsnrs00f9O0BohaGUM4bp5daEnYHPMdjUpvzRTDEviiX0IMIEnc97N+JQ==",
"requires": {
"@babel/runtime": "^7.16.0",
"@types/lodash": "^4.14.172",
"@types/mousetrap": "^1.6.8",
- "@wordpress/deprecated": "^3.13.0",
- "@wordpress/dom": "^3.13.0",
- "@wordpress/element": "^4.11.0",
- "@wordpress/is-shallow-equal": "4.13.0",
- "@wordpress/keycodes": "^3.13.0",
- "@wordpress/priority-queue": "^2.13.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "@wordpress/priority-queue": "^2.14.0",
"clipboard": "^2.0.8",
"lodash": "^4.17.21",
"mousetrap": "^1.6.5",
"use-memo-one": "^1.1.1"
}
},
- "@wordpress/deprecated": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz",
- "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==",
- "requires": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.13.0"
- }
- },
- "@wordpress/dom": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz",
- "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==",
- "requires": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/deprecated": "^3.8.0",
- "lodash": "^4.17.21"
- }
- },
"@wordpress/element": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
- "integrity": "sha512-3Ha/BChFgkzh8oKK/FxXLEYSobCAMfWKdK/anNTWqbGxZM0ue1kowu23D7gUCCugjKOZdkhAabgJIjPflrGQOg==",
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
"requires": {
"@babel/runtime": "^7.16.0",
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
- "@wordpress/escape-html": "^2.13.0",
+ "@wordpress/escape-html": "^2.14.0",
"lodash": "^4.17.21",
"react": "^17.0.2",
"react-dom": "^17.0.2"
}
+ },
+ "@wordpress/is-shallow-equal": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz",
+ "integrity": "sha512-FVpuU3GmvZFvjcuIKcraNH46vEZzz+FCpujjqCzcyWNGUsg7wpfGNVoDWs5LWFA4EELHL2+p8Ff9RZX237b5Kg==",
+ "requires": {
+ "@babel/runtime": "^7.16.0"
+ }
}
}
},
@@ -60793,9 +65089,9 @@
}
},
"@wordpress/date": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.13.0.tgz",
- "integrity": "sha512-IdaUCZvZVAaakrWcp2UmgyCfKt8bw4nG8zbCMXRJz9VLgjfJ2zroI0G2LUEjS+GQ+jM2VvkDANgS/JmizMFrOg==",
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.14.0.tgz",
+ "integrity": "sha512-HrYZX7pY2yJjsaeAv11aQRqoF2rtVmhoG1X44gL3ddA4kcFBqeBMngKS6WunsS7z/x5lunWv7Kr0iIv05vh6Vw==",
"requires": {
"@babel/runtime": "^7.16.0",
"moment": "^2.22.1",
@@ -60813,27 +65109,27 @@
}
},
"@wordpress/deprecated": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.12.0.tgz",
- "integrity": "sha512-sep+c2jFwAZ4HTtPgIbNLC0YTz3q9gCH3A82XwY/krkvxhNk3g+mXxPUI2dUoxp7RAeeckqDtKosPvvpqUZWiQ==",
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.16.0.tgz",
+ "integrity": "sha512-/lCISYhy1l4N4HdGB8vKtPRYcvlLL+Lo/luwxgWzDxV+GkIlva6mZvEwsSd/Ocd5NXzR496V6+AKREDOyfJgiQ==",
"requires": {
"@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.12.0"
+ "@wordpress/hooks": "^3.16.0"
}
},
"@wordpress/dom": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.7.tgz",
- "integrity": "sha512-/e7sFaiwKHWmgqUFsClYw9YI6Wq/eZ1iBsxtGgqX5zrU8KyFJaziNeHDE8tTZLkiURS1vlBQm0mY6bX7Bo4CEA==",
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.16.0.tgz",
+ "integrity": "sha512-WOwEYXQWaZ4ZkQgL//jyB/FN33vPuFUHcr1Tc0o1T5zScNJrWVTiILokkFVv2AxqPZkrq4WhxKN9ZGRyo6VlOA==",
"requires": {
"@babel/runtime": "^7.16.0",
- "lodash": "^4.17.21"
+ "@wordpress/deprecated": "^3.8.0"
}
},
"@wordpress/dom-ready": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.13.0.tgz",
- "integrity": "sha512-QPbADVzl0wzAzvxOLnEHRjPfvzt0c8CMXiwa808BvLRrlK9HOezY1erF8PGTPutcBCYpsixr56nUTB/Kiw5hKg==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.14.0.tgz",
+ "integrity": "sha512-EftNWZlWN17ghjvCfuCnl/kSl1UdfgnOk92hASI2A+vRE8vsHvdx/d+/jZ9sC6I3QIGE7y1OVAnpWdQpC9m6lg==",
"requires": {
"@babel/runtime": "^7.16.0"
}
@@ -61212,6 +65508,12 @@
"core-js": "^3.19.1"
}
},
+ "@wordpress/browserslist-config": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz",
+ "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==",
+ "dev": true
+ },
"@wordpress/dependency-extraction-webpack-plugin": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.7.0.tgz",
@@ -62238,9 +66540,9 @@
}
},
"@wordpress/escape-html": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.13.0.tgz",
- "integrity": "sha512-olUMVQehbNZJpn4C3ysUzh/70lEzeDZa309KuMX+8P17Mj+lgsjs7lkLqHKpxhXtsLic1lNsLCkCStDY4iiCqw==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.14.0.tgz",
+ "integrity": "sha512-y8wlJuT2ze6bf6a/vW6T1hnUxm8WD8CERYU133NpiNeQV3GJffw2tGimhasHwhN7hCfH1iPkY4od5RkclHxnRw==",
"requires": {
"@babel/runtime": "^7.16.0"
}
@@ -62282,9 +66584,9 @@
}
},
"@wordpress/hooks": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.14.0.tgz",
- "integrity": "sha512-bcQXql4A1VI6gnTdNzMjdHLGTpnf8oWOQ1r8B8fcvtOF3dKictxJPobarWxFbtVTQoegizZT/lPCMoLsnVJpug==",
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.16.0.tgz",
+ "integrity": "sha512-KpY8KFp2/3TX6lKmffNmdkeaH9c4CN1iJ8SiCufjGgRCnVWmWe/HcEJ5OjhUvBnRkhsLMY7pvlXMU8Mh7nLxyA==",
"requires": {
"@babel/runtime": "^7.16.0"
}
@@ -62375,43 +66677,48 @@
}
},
"@wordpress/keyboard-shortcuts": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.5.0.tgz",
- "integrity": "sha512-Gd1PmVeC6k8+OKtL3ZNSh+nn2147lK9AsT6hvFrAXs0l/Rp2xw5CZn5xTKdxItAg6lqEv0hQSk9vHmOHAZOcZg==",
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.12.0.tgz",
+ "integrity": "sha512-NCKCgpIUHvA+KcJJ+OlXmoaQe+SGgLnosic13H2aSfnSYWKatLoCRwUOjQ7fnGNAiZWnFv2Q+TThFarmR2e39w==",
"dev": true,
"requires": {
"@babel/runtime": "^7.16.0",
- "@wordpress/data": "^6.7.0",
- "@wordpress/element": "^4.5.0",
- "@wordpress/keycodes": "^3.7.0",
- "lodash": "^4.17.21",
- "rememo": "^3.0.0"
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "rememo": "^4.0.0"
},
"dependencies": {
"@wordpress/element": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz",
- "integrity": "sha512-24/QUS/EYZQY/qH3Mm9ntrwbuKZN7/lYK752NFquVMq1RtWfhEulVXxgLprIm08c2Rsb8u8dJ8YdqVougo/8JQ==",
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
"dev": true,
"requires": {
"@babel/runtime": "^7.16.0",
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
- "@wordpress/escape-html": "^2.7.0",
+ "@wordpress/escape-html": "^2.14.0",
"lodash": "^4.17.21",
"react": "^17.0.2",
"react-dom": "^17.0.2"
}
+ },
+ "rememo": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz",
+ "integrity": "sha512-x/T5q/pCDh8k4OlvJGqkI3eO+O8hmJv9HhJHo4avwlluwUpDbteDvyqw1PTarEITkeH9bfW6GSKeRke+XKgykw==",
+ "dev": true
}
}
},
"@wordpress/keycodes": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.13.0.tgz",
- "integrity": "sha512-9uUjUebl9Lau43St9wXJnnkWhbjNsv6gF8Fd+KST5tCctwUWx+QDs7Qk5ciNSNp9FVwfACK/6fMz9r6Tr/f4Aw==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.14.0.tgz",
+ "integrity": "sha512-hUHRMCWil4eKauzCWtYSry8i1wxa1cegUqjZ3OASzefZvCrMv6TNuRXohp+hNLWGWWMbP0I2Pcrd0WuGcmlSqg==",
"requires": {
"@babel/runtime": "^7.16.0",
- "@wordpress/i18n": "^4.13.0",
+ "@wordpress/i18n": "^4.14.0",
"lodash": "^4.17.21"
}
},
@@ -62465,25 +66772,6 @@
"use-memo-one": "^1.1.1"
}
},
- "@wordpress/deprecated": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz",
- "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==",
- "requires": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.13.0"
- }
- },
- "@wordpress/dom": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz",
- "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==",
- "requires": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/deprecated": "^3.8.0",
- "lodash": "^4.17.21"
- }
- },
"@wordpress/element": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
@@ -62556,17 +66844,17 @@
}
},
"@wordpress/priority-queue": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.13.0.tgz",
- "integrity": "sha512-c3xX+e1VjM3axm4pcQzlUuJgkEe4xtsMxW+dwHR6IWFruzDItPvLxIZaeP3aCMZvmd7KUdzzo5f/u0eq1xr9pw==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.14.0.tgz",
+ "integrity": "sha512-dXPsHqZQsI2xZ4WGq90iZLHliThbJI6+BF76YksLLYccaUW1LTzkQiEmub2pwdf9liMq/xocN07HdxMiI7HcRw==",
"requires": {
"@babel/runtime": "^7.16.0"
}
},
"@wordpress/redux-routine": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.13.0.tgz",
- "integrity": "sha512-jmfllylWwEutaddPYWQjeRuLhsqQd8hqJeN9Pj8Sh7VABk0SWbPQWtfahPhfZj7kYGTcrxa6cquRNjwJ+VmcDg==",
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.14.0.tgz",
+ "integrity": "sha512-vgjR7i+2r69Dp16d11KTVdHEcQTjk7eq6SaUtva3YKs3s2e5CTjDcQKEafSzwWQo5OyHK+wkwnnIsjZ3He9anA==",
"requires": {
"@babel/runtime": "^7.16.0",
"is-promise": "^4.0.0",
@@ -62575,76 +66863,65 @@
}
},
"@wordpress/rich-text": {
- "version": "5.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.11.0.tgz",
- "integrity": "sha512-e6so43OUdtbc7qrQUGUbtuOsjwNoYiK1jAqGgJatjXGnm72cv1SaXoHqmgWFZb6wcRUBkQ64oSWMq61eFmXjEw==",
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.12.0.tgz",
+ "integrity": "sha512-iL9jUF0LJweGCh4SZMB+CLMENUGktgPYHv0tSaX/EjA/Ph80Grz8ah2PH8fQUH4349Zc/+AGXgn/6cUzdvD0WA==",
"requires": {
"@babel/runtime": "^7.16.0",
- "@wordpress/a11y": "^3.13.0",
- "@wordpress/compose": "^5.11.0",
- "@wordpress/data": "^6.13.0",
- "@wordpress/element": "^4.11.0",
- "@wordpress/escape-html": "^2.13.0",
- "@wordpress/i18n": "^4.13.0",
- "@wordpress/keycodes": "^3.13.0",
+ "@wordpress/a11y": "^3.14.0",
+ "@wordpress/compose": "^5.12.0",
+ "@wordpress/data": "^6.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/escape-html": "^2.14.0",
+ "@wordpress/i18n": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
"lodash": "^4.17.21",
"memize": "^1.1.0",
"rememo": "^4.0.0"
},
"dependencies": {
"@wordpress/compose": {
- "version": "5.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.11.0.tgz",
- "integrity": "sha512-S6KABT9jB6ynvTIEHFnPjeT++xsmX3410ctTNNOiVY3HdcnVjzXcu6czqj/y3OWXupNn7WqRA9p9pWaSvSKMXQ==",
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.12.0.tgz",
+ "integrity": "sha512-ohK+uxazOqWWZ2BUyVFeNDy5/RJasfsnrs00f9O0BohaGUM4bp5daEnYHPMdjUpvzRTDEviiX0IMIEnc97N+JQ==",
"requires": {
"@babel/runtime": "^7.16.0",
"@types/lodash": "^4.14.172",
"@types/mousetrap": "^1.6.8",
- "@wordpress/deprecated": "^3.13.0",
- "@wordpress/dom": "^3.13.0",
- "@wordpress/element": "^4.11.0",
- "@wordpress/is-shallow-equal": "4.13.0",
- "@wordpress/keycodes": "^3.13.0",
- "@wordpress/priority-queue": "^2.13.0",
+ "@wordpress/deprecated": "^3.14.0",
+ "@wordpress/dom": "^3.14.0",
+ "@wordpress/element": "^4.12.0",
+ "@wordpress/is-shallow-equal": "^4.14.0",
+ "@wordpress/keycodes": "^3.14.0",
+ "@wordpress/priority-queue": "^2.14.0",
"clipboard": "^2.0.8",
"lodash": "^4.17.21",
"mousetrap": "^1.6.5",
"use-memo-one": "^1.1.1"
}
},
- "@wordpress/deprecated": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz",
- "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==",
- "requires": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.13.0"
- }
- },
- "@wordpress/dom": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz",
- "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==",
- "requires": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/deprecated": "^3.8.0",
- "lodash": "^4.17.21"
- }
- },
"@wordpress/element": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
- "integrity": "sha512-3Ha/BChFgkzh8oKK/FxXLEYSobCAMfWKdK/anNTWqbGxZM0ue1kowu23D7gUCCugjKOZdkhAabgJIjPflrGQOg==",
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz",
+ "integrity": "sha512-QdpqJpdspuqV5qLmoETjZB/kTVqL/wIRJrvfEXJ4ozgIrf9zQaxgiFxwImJ35oXH7HR1iRBd/YBRer/fC93oYw==",
"requires": {
"@babel/runtime": "^7.16.0",
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
- "@wordpress/escape-html": "^2.13.0",
+ "@wordpress/escape-html": "^2.14.0",
"lodash": "^4.17.21",
"react": "^17.0.2",
"react-dom": "^17.0.2"
}
},
+ "@wordpress/is-shallow-equal": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz",
+ "integrity": "sha512-FVpuU3GmvZFvjcuIKcraNH46vEZzz+FCpujjqCzcyWNGUsg7wpfGNVoDWs5LWFA4EELHL2+p8Ff9RZX237b5Kg==",
+ "requires": {
+ "@babel/runtime": "^7.16.0"
+ }
+ },
"rememo": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz",
@@ -63022,6 +67299,12 @@
"dev": true,
"requires": {}
},
+ "@wordpress/browserslist-config": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz",
+ "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==",
+ "dev": true
+ },
"@wordpress/dependency-extraction-webpack-plugin": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.4.1.tgz",
@@ -63649,26 +67932,15 @@
"dev": true
},
"terser": {
- "version": "5.13.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz",
- "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==",
+ "version": "5.14.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
+ "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
"dev": true,
"requires": {
+ "@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
"commander": "^2.20.0",
- "source-map": "~0.8.0-beta.0",
"source-map-support": "~0.5.20"
- },
- "dependencies": {
- "source-map": {
- "version": "0.8.0-beta.0",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
- "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
- "dev": true,
- "requires": {
- "whatwg-url": "^7.0.0"
- }
- }
}
},
"terser-webpack-plugin": {
@@ -63684,15 +67956,6 @@
"terser": "^5.7.2"
}
},
- "tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
"v8-to-istanbul": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
@@ -63712,12 +67975,6 @@
}
}
},
- "webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
"webpack": {
"version": "5.72.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz",
@@ -63784,17 +68041,6 @@
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
"dev": true
},
- "whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -63824,14 +68070,6 @@
"lodash": "^4.17.21"
},
"dependencies": {
- "@wordpress/autop": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.13.0.tgz",
- "integrity": "sha512-EAVrb7KuSfCBDFnGJJxD/9TVkDZEi/A1F2YSOb0X8RPS6RQNtXU76aiNyrm/G8ovJ/ElRGfSiy/+hwqZlnQo+A==",
- "requires": {
- "@babel/runtime": "^7.16.0"
- }
- },
"@wordpress/blocks": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.12.0.tgz",
@@ -63927,25 +68165,6 @@
"use-memo-one": "^1.1.1"
}
},
- "@wordpress/deprecated": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz",
- "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==",
- "requires": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/hooks": "^3.13.0"
- }
- },
- "@wordpress/dom": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz",
- "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==",
- "requires": {
- "@babel/runtime": "^7.16.0",
- "@wordpress/deprecated": "^3.8.0",
- "lodash": "^4.17.21"
- }
- },
"@wordpress/element": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz",
@@ -64179,9 +68398,9 @@
}
},
"@wordpress/shortcode": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.13.0.tgz",
- "integrity": "sha512-8QIaU6uS3PDY93P3DSPO3FFloGVSLpYLT1q5f7iH+SQuzJr3tAbsAIAiBgbtUFZ4ilNcSbYxP78KrhmZYZnTMQ==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.14.0.tgz",
+ "integrity": "sha512-0HJpB5RdkERwGZA0JuujTOEO5uEYlxM/pNhNn+G4UUhlBHYuIQQw9agL1Btgo/7qnQcBC7NPKBvxJzWHyTlT4w==",
"requires": {
"@babel/runtime": "^7.16.0",
"memize": "^1.1.0"
@@ -64208,13 +68427,12 @@
}
},
"@wordpress/token-list": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.7.0.tgz",
- "integrity": "sha512-hPSneUS0y2kmk2uQq/C+dm4DTDAtnPenGh1wHJjNZA7CsLEsfDXpCh6CagdWZecV0oMpQQYYWHtl8nJroBkPJw==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.14.0.tgz",
+ "integrity": "sha512-MYQfXrFxI68aQaxcvqVxI2d8HjVCBp4DxGcEQCX6sHHbNuZgo7g38HOFtDjnKVj8hEv11AJYVA8hsl0xUqSxZQ==",
"dev": true,
"requires": {
- "@babel/runtime": "^7.16.0",
- "lodash": "^4.17.21"
+ "@babel/runtime": "^7.16.0"
}
},
"@wordpress/url": {
@@ -64227,9 +68445,9 @@
}
},
"@wordpress/warning": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.13.0.tgz",
- "integrity": "sha512-4648iMotdeNMe3vLKWTx5C/X1+4hey00GrxAClTiAufGMR3slCjE8nQhnWtFfyqYZi0bSpuF+kYd6ofsKrtcQg=="
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.14.0.tgz",
+ "integrity": "sha512-qlfSTGkS6ei366OEPNe54DG0O3D/Ta1d4Xalx8Crgxm8xygncuxuuefWKAnnwgXfzsO4d4gs29hnTEzIMIaGcA=="
},
"@wordpress/wordcount": {
"version": "3.13.0",
@@ -66600,6 +70818,12 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
+ "charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "dev": true
+ },
"check-node-version": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4.2.1.tgz",
@@ -67207,9 +71431,9 @@
"peer": true
},
"commander": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz",
- "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==",
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz",
+ "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==",
"dev": true
},
"comment-parser": {
@@ -67676,9 +71900,9 @@
}
},
"core-js": {
- "version": "3.23.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz",
- "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==",
+ "version": "3.25.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.0.tgz",
+ "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==",
"dev": true
},
"core-js-compat": {
@@ -68148,6 +72372,12 @@
}
}
},
+ "crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "dev": true
+ },
"crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
@@ -69757,6 +73987,12 @@
"domelementtype": "^2.2.0"
}
},
+ "dompurify": {
+ "version": "2.3.10",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.10.tgz",
+ "integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==",
+ "dev": true
+ },
"domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -73177,6 +77413,15 @@
"integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
"dev": true
},
+ "history": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.7.6"
+ }
+ },
"hjson": {
"version": "1.8.4",
"resolved": "https://registry.npmjs.org/hjson/-/hjson-1.8.4.tgz",
@@ -78836,12 +83081,6 @@
"integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
"dev": true
},
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
- "dev": true
- },
"lodash.throttle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
@@ -79350,6 +83589,25 @@
"integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
"dev": true
},
+ "md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dev": true,
+ "requires": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ }
+ }
+ },
"md5.js": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
@@ -80831,9 +85089,9 @@
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
},
"moment-timezone": {
- "version": "0.5.34",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz",
- "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==",
+ "version": "0.5.37",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz",
+ "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==",
"requires": {
"moment": ">= 2.9.0"
}
@@ -88388,9 +92646,9 @@
}
},
"terser": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
- "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
+ "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
"dev": true,
"requires": {
"commander": "^2.20.0",
diff --git a/package.json b/package.json
index a4468377b..34674a1cd 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "@woocommerce/block-library",
"title": "WooCommerce Blocks",
"author": "Automattic",
- "version": "8.3.0-dev",
+ "version": "8.6.0-dev",
"description": "WooCommerce blocks for the Gutenberg editor.",
"homepage": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/",
"keywords": [
@@ -21,7 +21,8 @@
"./assets/js/blocks/cart/inner-blocks/**/index.tsx",
"./assets/js/blocks/cart/inner-blocks/register-components.ts",
"./assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/**/index.tsx",
- "./assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/register-components.ts"
+ "./assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/register-components.ts",
+ "./assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx"
],
"repository": {
"type": "git",
@@ -81,7 +82,7 @@
"wp-env:config": "./bin/wp-env-pre-config.sh"
},
"devDependencies": {
- "@actions/core": "1.9.0",
+ "@actions/core": "1.9.1",
"@actions/github": "5.0.3",
"@automattic/color-studio": "2.5.0",
"@babel/cli": "7.18.9",
@@ -97,7 +98,7 @@
"@storybook/addon-storysource": "6.5.9",
"@storybook/addons": "6.5.9",
"@storybook/client-api": "6.5.9",
- "@storybook/react": "6.5.9",
+ "@storybook/react": "6.5.10",
"@testing-library/jest-dom": "5.16.4",
"@testing-library/react": "12.1.5",
"@testing-library/react-hooks": "7.0.2",
@@ -115,11 +116,14 @@
"@types/wordpress__block-editor": "6.0.6",
"@types/wordpress__blocks": "11.0.5",
"@types/wordpress__compose": "4.0.1",
- "@types/wordpress__data": "4.6.11",
+ "@types/wordpress__core-data": "^2.4.5",
+ "@types/wordpress__data": "^6.0.1",
"@types/wordpress__data-controls": "2.2.0",
+ "@types/wordpress__editor": "^11.0.0",
"@typescript-eslint/eslint-plugin": "5.30.5",
- "@typescript-eslint/parser": "5.31.0",
+ "@typescript-eslint/parser": "5.35.1",
"@woocommerce/api": "0.2.0",
+ "@woocommerce/data": "^4.1.0",
"@woocommerce/e2e-utils": "0.2.0",
"@woocommerce/eslint-plugin": "2.0.0",
"@woocommerce/woocommerce-rest-api": "1.0.1",
@@ -128,11 +132,11 @@
"@wordpress/base-styles": "4.0.4",
"@wordpress/block-editor": "8.2.0",
"@wordpress/blocks": "11.1.5",
- "@wordpress/browserslist-config": "4.1.2",
+ "@wordpress/browserslist-config": "5.0.0",
"@wordpress/components": "19.1.5",
"@wordpress/data-controls": "2.2.7",
"@wordpress/dependency-extraction-webpack-plugin": "3.2.1",
- "@wordpress/dom": "3.2.7",
+ "@wordpress/dom": "3.16.0",
"@wordpress/e2e-test-utils": "7.8.0",
"@wordpress/e2e-tests": "4.6.0",
"@wordpress/element": "4.0.4",
@@ -152,9 +156,9 @@
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
"chalk": "4.1.2",
"circular-dependency-plugin": "5.2.2",
- "commander": "9.3.0",
+ "commander": "9.4.0",
"copy-webpack-plugin": "6.4.1",
- "core-js": "3.23.3",
+ "core-js": "3.25.0",
"create-file-webpack": "1.0.2",
"cross-env": "7.0.3",
"cssnano": "5.1.12",
@@ -211,9 +215,9 @@
"npm": "^8.0.0"
},
"dependencies": {
- "@wordpress/autop": "3.12.0",
+ "@wordpress/autop": "3.16.0",
"@wordpress/compose": "5.5.0",
- "@wordpress/deprecated": "3.12.0",
+ "@wordpress/deprecated": "3.16.0",
"@wordpress/icons": "6.1.1",
"@wordpress/notices": "3.12.0",
"@wordpress/plugins": "4.10.0",
@@ -259,6 +263,9 @@
"*.php": [
"php -d display_errors=1 -l",
"composer run-script phpcs"
+ ],
+ "*.md": [
+ "npm run lint:md:docs"
]
},
"changelog": {
diff --git a/packages/checkout/components/checkbox-control/index.tsx b/packages/checkout/components/checkbox-control/index.tsx
index 063dd2246..bbce84858 100644
--- a/packages/checkout/components/checkbox-control/index.tsx
+++ b/packages/checkout/components/checkbox-control/index.tsx
@@ -11,12 +11,13 @@ import './style.scss';
export type CheckboxControlProps = {
className?: string;
- label?: string;
+ label?: string | React.ReactNode;
id?: string;
onChange: ( value: boolean ) => void;
children?: React.ReactChildren;
hasError?: boolean;
checked?: boolean;
+ disabled?: boolean;
};
/**
@@ -30,6 +31,7 @@ export const CheckboxControl = ( {
children,
hasError = false,
checked = false,
+ disabled = false,
...rest
}: CheckboxControlProps ): JSX.Element => {
const instanceId = useInstanceId( CheckboxControl );
@@ -53,6 +55,7 @@ export const CheckboxControl = ( {
onChange={ ( event ) => onChange( event.target.checked ) }
aria-invalid={ hasError === true }
checked={ checked }
+ disabled={ disabled }
{ ...rest }
/>
-- [\_\_experimentalRegisterCheckoutFilters](#__experimentalregistercheckoutfilters)
- - [Usage](#usage)
- - [Options](#options)
- - [`namespace (string)`](#namespace-string)
- - [`filters (object)`](#filters-object)
-- [\_\_experimentalApplyCheckoutFilter](#__experimentalapplycheckoutfilter)
- - [Usage](#usage-1)
- - [Options](#options-1)
- - [`filterName (string, required)`](#filtername-string-required)
- - [`defaultValue (mixed, required)`](#defaultvalue-mixed-required)
- - [`extensions`](#extensions)
- - [`arg (object)`](#arg-object)
- - [`validation (function)`](#validation-function)
-- [Available Filters](#available-filters)
+- [\_\_experimentalRegisterCheckoutFilters](#__experimentalregistercheckoutfilters)
+ - [Usage](#usage)
+ - [Options](#options)
+ - [`namespace (string)`](#namespace-string)
+ - [`filters (object)`](#filters-object)
+- [\_\_experimentalApplyCheckoutFilter](#__experimentalapplycheckoutfilter)
+ - [Usage](#usage-1)
+ - [Options](#options-1)
+ - [`filterName (string, required)`](#filtername-string-required)
+ - [`defaultValue (mixed, required)`](#defaultvalue-mixed-required)
+ - [`extensions`](#extensions)
+ - [`arg (object)`](#arg-object)
+ - [`validation (function)`](#validation-function)
+- [Available Filters](#available-filters)
The filter registry allows callbacks to be registered to manipulate certain values. This is similar to the traditional filter system in WordPress (where you register a callback with a specific filter and return a modified value).
@@ -121,7 +121,7 @@ A function that needs to return true when the filtered value is passed in order
## Available Filters
-Filters are implemented throughout the Mini Cart, Cart and Checkout Blocks, as well as some components. For a list of filters, [see this document](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/extensibility/available-filters.md). You can also search for [usage of `__experimentalApplyCheckoutFilter` within the source code](https://github.com/woocommerce/woocommerce-gutenberg-products-block/search?q=__experimentalApplyCheckoutFilter).
+Filters are implemented throughout the Mini Cart, Cart and Checkout Blocks, as well as some components. For a list of filters, [see this document](../../../docs/third-party-developers/extensibility/checkout-block/available-filters.md). You can also search for [usage of `__experimentalApplyCheckoutFilter` within the source code](https://github.com/woocommerce/woocommerce-gutenberg-products-block/search?q=__experimentalApplyCheckoutFilter).
diff --git a/packages/checkout/slot/README.md b/packages/checkout/slot/README.md
index 4b3322648..eeb677b95 100644
--- a/packages/checkout/slot/README.md
+++ b/packages/checkout/slot/README.md
@@ -2,20 +2,20 @@
## Table of Contents
-- [`createSlotFill( slotName )`](#createslotfill-slotname-)
- - [Usage](#usage)
- - [Options](#options)
- - [`slotName (string, required)`](#slotname-string-required)
- - [`onError (Function)`](#onerror-function)
- - [`Slot` Component](#slot-component)
- - [Usage](#usage-1)
- - [Options](#options-1)
- - [`as (string|element)`](#as-stringelement)
- - [`className (string)`](#classname-string)
- - [`fillProps (object)`](#fillprops-object)
- - [`Fill` Component](#fill-component)
-- [Extending Checkout via Slot Fills](#extending-checkout-via-slot-fills)
-- [Available Slot Fills](#available-slot-fills)
+- [`createSlotFill( slotName )`](#createslotfill-slotname-)
+ - [Usage](#usage)
+ - [Options](#options)
+ - [`slotName (string, required)`](#slotname-string-required)
+ - [`onError (Function)`](#onerror-function)
+ - [`Slot` Component](#slot-component)
+ - [Usage](#usage-1)
+ - [Options](#options-1)
+ - [`as (string|element)`](#as-stringelement)
+ - [`className (string)`](#classname-string)
+ - [`fillProps (object)`](#fillprops-object)
+ - [`Fill` Component](#fill-component)
+- [Extending Checkout via Slot Fills](#extending-checkout-via-slot-fills)
+- [Available Slot Fills](#available-slot-fills)
Slot and Fill are a pair of components which enable developers to render elsewhere in a React element tree, a pattern often referred to as "portal" rendering. It is a pattern for component extensibility, where a single Slot may be occupied by an indeterminate number of Fills elsewhere in the application.
@@ -181,7 +181,7 @@ registerPlugin( 'my-plugin', { render } );
## Available Slot Fills
-Slot Fills are implemented throughout the Cart and Checkout Blocks, as well as some components. For a list of available Slot Fills, [see this document](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/extensibility/available-slot-fills.md).
+Slot Fills are implemented throughout the Cart and Checkout Blocks, as well as some components. For a list of available Slot Fills, [see this document](../../../docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md).
diff --git a/packages/checkout/utils/README.md b/packages/checkout/utils/README.md
index a6bb6be57..e47352670 100644
--- a/packages/checkout/utils/README.md
+++ b/packages/checkout/utils/README.md
@@ -2,15 +2,15 @@
## Table of Contents
-- [`extensionCartUpdate`](#extensioncartupdate)
- - [Usage](#usage)
- - [Options](#options)
- - [`args (object, required)`](#args-object-required)
-- [`mustContain`](#mustcontain)
- - [Usage](#usage-1)
- - [Options](#options-1)
- - [`value (string, required)`](#value-string-required)
- - [`requiredValue (string, required)`](#requiredvalue-string-required)
+- [`extensionCartUpdate`](#extensioncartupdate)
+ - [Usage](#usage)
+ - [Options](#options)
+ - [`args (object, required)`](#args-object-required)
+- [`mustContain`](#mustcontain)
+ - [Usage](#usage-1)
+ - [Options](#options-1)
+ - [`value (string, required)`](#value-string-required)
+ - [`requiredValue (string, required)`](#requiredvalue-string-required)
Miscellaneous utility functions for dealing with checkout functionality.
@@ -41,7 +41,7 @@ The following options are available:
#### `args (object, required)`
-Args to pass to the Rest API endpoint. This can contain data and a namespace to trigger extension specific functionality on the server-side. [You can read more about this, and the server-side implementation, in this doc.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/extensibility/extend-rest-api-update-cart.md)
+Args to pass to the Rest API endpoint. This can contain data and a namespace to trigger extension specific functionality on the server-side. [You can read more about this, and the server-side implementation, in this doc.](../../../docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md)
## `mustContain`
diff --git a/patterns/filters.php b/patterns/filters.php
new file mode 100644
index 000000000..66d6c4416
--- /dev/null
+++ b/patterns/filters.php
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/phpcs.xml b/phpcs.xml
index 70199828a..eac8154c8 100644
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -43,12 +43,17 @@
src/
tests/php
+ patterns
src/
tests/php
+
+ patterns
+
+
tests/
diff --git a/readme.txt b/readme.txt
index c834b932a..1ef425398 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,7 +4,7 @@ Tags: gutenberg, woocommerce, woo commerce, products, blocks, woocommerce blocks
Requires at least: 6.0
Tested up to: 6.0
Requires PHP: 7.0
-Stable tag: 8.3.0-dev
+Stable tag: 8.6.0-dev
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html
@@ -34,7 +34,7 @@ Use this plugin if you want access to the bleeding edge of available blocks for
- **All Reviews**
- **Product Search**
- **All Products**
-- **Filter Products by Price**
+- **Filter by Price**
- **Filter Products by Attribute**
- **Filter Products by Stock**
- **Active Product Filters**
@@ -86,6 +86,69 @@ Release and roadmap notes available on the [WooCommerce Developers Blog](https:/
== Changelog ==
+= 8.5.0 - 2022-09-12 =
+
+#### Enhancements
+
+- Improve the alignment of the Remove button in the Filter by Attribute block. ([7088](https://github.com/woocommerce/woocommerce-blocks/pull/7088))
+- Enhance the display of the Active filters block changing the sizes of the text. ([7087](https://github.com/woocommerce/woocommerce-blocks/pull/7087))
+- Add loading placeholders to Active Filters block. ([7083](https://github.com/woocommerce/woocommerce-blocks/pull/7083))
+- Improved many of the labels to be less technical and more user-friendly. ([7045](https://github.com/woocommerce/woocommerce-blocks/pull/7045))
+- Featured Item Blocks: Remove inline default color so that custom colors from Global Styles are applied correctly. ([7036](https://github.com/woocommerce/woocommerce-blocks/pull/7036))
+- Update "remove filter" icon on the Active Filters block to use Icon component in both layouts. ([7035](https://github.com/woocommerce/woocommerce-blocks/pull/7035))
+- Update `filter by price` skeleton design. ([6997](https://github.com/woocommerce/woocommerce-blocks/pull/6997))
+- Update `filter by attribute` skeleton design. ([6990](https://github.com/woocommerce/woocommerce-blocks/pull/6990))
+
+#### Bug Fixes
+
+- Fix checkbox label when count is zero. ([7073](https://github.com/woocommerce/woocommerce-blocks/pull/7073))
+- Fix incompatible Classic Template block notice in the Editor for Woo specific templates. ([7033](https://github.com/woocommerce/woocommerce-blocks/pull/7033))
+- Update - remove __experimentalDuotone from Featured Product and Featured Category blocks. ([7000](https://github.com/woocommerce/woocommerce-blocks/pull/7000))
+
+#### Documentation
+
+- Add steps to retrieve products variations in Store API documentation. ([7076](https://github.com/woocommerce/woocommerce-blocks/pull/7076))
+
+= 8.4.0 - 2022-08-29 =
+
+#### Enhancements
+
+- Update the filter `Apply` buttons to match the new designs. ([6958](https://github.com/woocommerce/woocommerce-blocks/pull/6958))
+- Update the design of the Filter Products by Attribute block. ([6920](https://github.com/woocommerce/woocommerce-blocks/pull/6920))
+- Update the design of the Filter by Attribute block settings panel. ([6912](https://github.com/woocommerce/woocommerce-blocks/pull/6912))
+- Terms and conditions, and Privacy policy links open in a new tab by default. ([6908](https://github.com/woocommerce/woocommerce-blocks/pull/6908))
+- Layout updates to the Active Filters block. ([6905](https://github.com/woocommerce/woocommerce-blocks/pull/6905))
+- Update the design of the Filter Products by Stock block. ([6883](https://github.com/woocommerce/woocommerce-blocks/pull/6883))
+- Update the design of the Filter Products by Price block. ([6877](https://github.com/woocommerce/woocommerce-blocks/pull/6877))
+- Allow making the Cart/Checkout block page the default one from within the editor. ([6867](https://github.com/woocommerce/woocommerce-blocks/pull/6867))
+- Register product search as a core/search variation when available. ([6191](https://github.com/woocommerce/woocommerce-blocks/pull/6191))
+
+#### Bug Fixes
+
+- Fixed a bug with a class name deriving from a translatable string. ([6914](https://github.com/woocommerce/woocommerce-blocks/pull/6914))
+
+= 8.3.1 - 2022-08-17 =
+#### Bug Fixes
+
+
+- Prevent unnecessarily showing the item names in a shipping package if it's the only package. ([6899](https://github.com/woocommerce/woocommerce-blocks/pull/6899))
+
+= 8.3.0 - 2022-08-15 =
+
+#### Enhancements
+
+- Add feedback box to the Cart & Checkout Inner Blocks in the inspector. ([6881](https://github.com/woocommerce/woocommerce-blocks/pull/6881))
+- Refactor style-attributes hooks to add as global custom imports and remove relative import paths. ([6870](https://github.com/woocommerce/woocommerce-blocks/pull/6870))
+- Add notice to Cart and Checkout blocks' inspector controls which links to the list of compatible plugins. ([6869](https://github.com/woocommerce/woocommerce-blocks/pull/6869))
+- Add the ability to register patterns by adding them under the "patterns" folder and add the new "WooCommerce Filters" pattern. ([6861](https://github.com/woocommerce/woocommerce-blocks/pull/6861))
+- Enable the Cart and Checkout blocks when WooCommerce Blocks is bundled in WooCommerce Core. ([6805](https://github.com/woocommerce/woocommerce-blocks/pull/6805))
+
+#### Bug Fixes
+
+- Refactor Product Categories block to use block.json. ([6875](https://github.com/woocommerce/woocommerce-blocks/pull/6875))
+- Fix: Update billing address when shipping address gets change in shipping calculator at Cart block. ([6823](https://github.com/woocommerce/woocommerce-blocks/pull/6823))
+- Fix: Add font-weight controls to the Mini Cart block text. ([6760](https://github.com/woocommerce/woocommerce-blocks/pull/6760))
+
= 8.2.1 - 2022-08-03 =
#### Bug Fixes
@@ -152,7 +215,7 @@ Release and roadmap notes available on the [WooCommerce Developers Blog](https:/
#### Bug Fixes
- Fix images hidden by default in Product grid blocks after WC 6.6 update. ([6599](https://github.com/woocommerce/woocommerce-blocks/pull/6599))
-- Fix: Scrolling issue of the Filled Mini Cart Contents block. ([6565](https://github.com/woocommerce/woocommerce-blocks/pull/6565))
+- Fix: Scrolling issue of the Filled Mini Cart view block. ([6565](https://github.com/woocommerce/woocommerce-blocks/pull/6565))
- Fix an endless loop when using product grid blocks inside product descriptions. ([6471](https://github.com/woocommerce/woocommerce-blocks/pull/6471))
#### Various
@@ -236,7 +299,7 @@ Release and roadmap notes available on the [WooCommerce Developers Blog](https:/
#### Bug Fixes
-- Fix: Align Empty Mini Cart Contents block center in the Site Editor. ([6379](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/6379))
+- Fix: Align Empty Mini Cart view. block center in the Site Editor. ([6379](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/6379))
- Remove the Template panel from the Setting Sidebar for Shop page. ([6366](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/6366))
- Parse categories coming from the back-end as a json array. ([6358](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/6358))
- Update the default width of Classic Template to Wide width. ([6356](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/6356))
diff --git a/src/AssetsController.php b/src/AssetsController.php
index 147eff9f8..cf1e3260a 100644
--- a/src/AssetsController.php
+++ b/src/AssetsController.php
@@ -86,7 +86,7 @@ public function register_assets() {
* @return array URLs to print for resource hints.
*/
public function add_resource_hints( $urls, $relation_type ) {
- if ( ! Package::feature()->is_feature_plugin_build() || ! in_array( $relation_type, [ 'prefetch', 'prerender' ], true ) ) {
+ if ( ! in_array( $relation_type, [ 'prefetch', 'prerender' ], true ) ) {
return $urls;
}
diff --git a/src/BlockPatterns.php b/src/BlockPatterns.php
new file mode 100644
index 000000000..290ad4408
--- /dev/null
+++ b/src/BlockPatterns.php
@@ -0,0 +1,201 @@
+
+ *
+ * Other settable fields include:
+ *
+ * - Description
+ * - Viewport Width
+ * - Categories (comma-separated values)
+ * - Keywords (comma-separated values)
+ * - Block Types (comma-separated values)
+ * - Inserter (yes/no)
+ *
+ * @internal
+ */
+class BlockPatterns {
+ const SLUG_REGEX = '/^[A-z0-9\/_-]+$/';
+ const COMMA_SEPARATED_REGEX = '/[\s,]+/';
+
+ /**
+ * Path to the patterns directory.
+ *
+ * @var string $patterns_path
+ */
+ private $patterns_path;
+
+ /**
+ * Constructor for class
+ *
+ * @param Package $package An instance of Package.
+ */
+ public function __construct( Package $package ) {
+ $this->patterns_path = $package->get_path( 'patterns' );
+
+ add_action( 'init', array( $this, 'register_block_patterns' ) );
+ }
+
+ /**
+ * Registers the block patterns and categories under `./patterns/`.
+ */
+ public function register_block_patterns() {
+ if ( ! class_exists( 'WP_Block_Patterns_Registry' ) ) {
+ return;
+ }
+
+ $default_headers = array(
+ 'title' => 'Title',
+ 'slug' => 'Slug',
+ 'description' => 'Description',
+ 'viewportWidth' => 'Viewport Width',
+ 'categories' => 'Categories',
+ 'keywords' => 'Keywords',
+ 'blockTypes' => 'Block Types',
+ 'inserter' => 'Inserter',
+ );
+
+ if ( ! file_exists( $this->patterns_path ) ) {
+ return;
+ }
+
+ $files = glob( $this->patterns_path . '/*.php' );
+ if ( ! $files ) {
+ return;
+ }
+
+ foreach ( $files as $file ) {
+ $pattern_data = get_file_data( $file, $default_headers );
+
+ if ( empty( $pattern_data['slug'] ) ) {
+ _doing_it_wrong(
+ 'register_block_patterns',
+ esc_html(
+ sprintf(
+ /* translators: %s: file name. */
+ __( 'Could not register file "%s" as a block pattern ("Slug" field missing)', 'woo-gutenberg-products-block' ),
+ $file
+ )
+ ),
+ '6.0.0'
+ );
+ continue;
+ }
+
+ if ( ! preg_match( self::SLUG_REGEX, $pattern_data['slug'] ) ) {
+ _doing_it_wrong(
+ 'register_block_patterns',
+ esc_html(
+ sprintf(
+ /* translators: %1s: file name; %2s: slug value found. */
+ __( 'Could not register file "%1$s" as a block pattern (invalid slug "%2$s")', 'woo-gutenberg-products-block' ),
+ $file,
+ $pattern_data['slug']
+ )
+ ),
+ '6.0.0'
+ );
+ continue;
+ }
+
+ if ( \WP_Block_Patterns_Registry::get_instance()->is_registered( $pattern_data['slug'] ) ) {
+ continue;
+ }
+
+ // Title is a required property.
+ if ( ! $pattern_data['title'] ) {
+ _doing_it_wrong(
+ 'register_block_patterns',
+ esc_html(
+ sprintf(
+ /* translators: %1s: file name; %2s: slug value found. */
+ __( 'Could not register file "%s" as a block pattern ("Title" field missing)', 'woo-gutenberg-products-block' ),
+ $file
+ )
+ ),
+ '6.0.0'
+ );
+ continue;
+ }
+
+ // For properties of type array, parse data as comma-separated.
+ foreach ( array( 'categories', 'keywords', 'blockTypes' ) as $property ) {
+ if ( ! empty( $pattern_data[ $property ] ) ) {
+ $pattern_data[ $property ] = array_filter(
+ preg_split(
+ self::COMMA_SEPARATED_REGEX,
+ (string) $pattern_data[ $property ]
+ )
+ );
+ } else {
+ unset( $pattern_data[ $property ] );
+ }
+ }
+
+ // Parse properties of type int.
+ foreach ( array( 'viewportWidth' ) as $property ) {
+ if ( ! empty( $pattern_data[ $property ] ) ) {
+ $pattern_data[ $property ] = (int) $pattern_data[ $property ];
+ } else {
+ unset( $pattern_data[ $property ] );
+ }
+ }
+
+ // Parse properties of type bool.
+ foreach ( array( 'inserter' ) as $property ) {
+ if ( ! empty( $pattern_data[ $property ] ) ) {
+ $pattern_data[ $property ] = in_array(
+ strtolower( $pattern_data[ $property ] ),
+ array( 'yes', 'true' ),
+ true
+ );
+ } else {
+ unset( $pattern_data[ $property ] );
+ }
+ }
+
+ // phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText, WordPress.WP.I18n.LowLevelTranslationFunction
+ $pattern_data['title'] = translate_with_gettext_context( $pattern_data['title'], 'Pattern title', 'woo-gutenberg-products-block' );
+ if ( ! empty( $pattern_data['description'] ) ) {
+ // phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText, WordPress.WP.I18n.LowLevelTranslationFunction
+ $pattern_data['description'] = translate_with_gettext_context( $pattern_data['description'], 'Pattern description', 'woo-gutenberg-products-block' );
+ }
+
+ // The actual pattern content is the output of the file.
+ ob_start();
+ include $file;
+ $pattern_data['content'] = ob_get_clean();
+ if ( ! $pattern_data['content'] ) {
+ continue;
+ }
+
+ foreach ( $pattern_data['categories'] as $key => $category ) {
+ $category_slug = _wp_to_kebab_case( $category );
+
+ $pattern_data['categories'][ $key ] = $category_slug;
+
+ register_block_pattern_category(
+ $category_slug,
+ // phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText
+ array( 'label' => __( $category, 'woo-gutenberg-products-block' ) )
+ );
+ }
+
+ register_block_pattern( $pattern_data['slug'], $pattern_data );
+ }
+ }
+}
diff --git a/src/BlockTypes/AbstractBlock.php b/src/BlockTypes/AbstractBlock.php
index f774da9b1..fe5b963cf 100644
--- a/src/BlockTypes/AbstractBlock.php
+++ b/src/BlockTypes/AbstractBlock.php
@@ -76,14 +76,16 @@ public function __construct( AssetApi $asset_api, AssetDataRegistry $asset_data_
*
* @param array|WP_Block $attributes Block attributes, or an instance of a WP_Block. Defaults to an empty array.
* @param string $content Block content. Default empty string.
+ * @param WP_Block|null $block Block instance.
* @return string Rendered block type output.
*/
- public function render_callback( $attributes = [], $content = '' ) {
+ public function render_callback( $attributes = [], $content = '', $block = null ) {
+
$render_callback_attributes = $this->parse_render_callback_attributes( $attributes );
if ( ! is_admin() && ! WC()->is_rest_api_request() ) {
$this->enqueue_assets( $render_callback_attributes );
}
- return $this->render( $render_callback_attributes, $content );
+ return $this->render( $render_callback_attributes, $content, $block );
}
/**
@@ -222,8 +224,9 @@ protected function register_block_type() {
* These are left unset until now and only added here because if they were set when registering with metadata,
* the attributes and supports from $block_settings would override the values from metadata.
*/
- $block_settings['attributes'] = $this->get_block_type_attributes();
- $block_settings['supports'] = $this->get_block_type_supports();
+ $block_settings['attributes'] = $this->get_block_type_attributes();
+ $block_settings['supports'] = $this->get_block_type_supports();
+ $block_settings['uses_context'] = $this->get_block_type_uses_context();
register_block_type(
$this->get_block_type(),
@@ -323,6 +326,15 @@ protected function get_block_type_attributes() {
return [];
}
+ /**
+ * Get block usesContext.
+ *
+ * @return array;
+ */
+ protected function get_block_type_uses_context() {
+ return [];
+ }
+
/**
* Parses block attributes from the render_callback.
*
@@ -336,11 +348,12 @@ protected function parse_render_callback_attributes( $attributes ) {
/**
* Render the block. Extended by children.
*
- * @param array $attributes Block attributes.
- * @param string $content Block content.
+ * @param array $attributes Block attributes.
+ * @param string $content Block content.
+ * @param WP_Block $block Block instance.
* @return string Rendered block type output.
*/
- protected function render( $attributes, $content ) {
+ protected function render( $attributes, $content, $block ) {
return $content;
}
diff --git a/src/BlockTypes/AbstractProductGrid.php b/src/BlockTypes/AbstractProductGrid.php
index ed9d79ea5..451b0ad80 100644
--- a/src/BlockTypes/AbstractProductGrid.php
+++ b/src/BlockTypes/AbstractProductGrid.php
@@ -67,11 +67,12 @@ protected function get_block_type_attributes() {
/**
* Include and render the dynamic block.
*
- * @param array $attributes Block attributes. Default empty array.
- * @param string $content Block content. Default empty string.
+ * @param array $attributes Block attributes. Default empty array.
+ * @param string $content Block content. Default empty string.
+ * @param WP_Block|null $block Block instance.
* @return string Rendered block type output.
*/
- protected function render( $attributes = array(), $content = '' ) {
+ protected function render( $attributes = array(), $content = '', $block = null ) {
$this->attributes = $this->parse_attributes( $attributes );
$this->content = $content;
$this->query_args = $this->parse_query_args();
diff --git a/src/BlockTypes/Cart.php b/src/BlockTypes/Cart.php
index dc0c831b2..0429453e6 100644
--- a/src/BlockTypes/Cart.php
+++ b/src/BlockTypes/Cart.php
@@ -76,11 +76,12 @@ protected function enqueue_assets( array $attributes ) {
/**
* Append frontend scripts when rendering the Cart block.
*
- * @param array $attributes Block attributes.
- * @param string $content Block content.
+ * @param array $attributes Block attributes.
+ * @param string $content Block content.
+ * @param WP_Block $block Block instance.
* @return string Rendered block type output.
*/
- protected function render( $attributes, $content ) {
+ protected function render( $attributes, $content, $block ) {
// Deregister core cart scripts and styles.
wp_dequeue_script( 'wc-cart' );
wp_dequeue_script( 'wc-password-strength-meter' );
@@ -155,21 +156,23 @@ protected function render( $attributes, $content ) {
*/
protected function enqueue_data( array $attributes = [] ) {
parent::enqueue_data( $attributes );
+ if ( wc_shipping_enabled() ) {
+ $this->asset_data_registry->add(
+ 'shippingCountries',
+ function() {
+ return $this->deep_sort_with_accents( WC()->countries->get_shipping_countries() );
+ },
+ true
+ );
+ $this->asset_data_registry->add(
+ 'shippingStates',
+ function() {
+ return $this->deep_sort_with_accents( WC()->countries->get_shipping_country_states() );
+ },
+ true
+ );
+ }
- $this->asset_data_registry->add(
- 'shippingCountries',
- function() {
- return $this->deep_sort_with_accents( WC()->countries->get_shipping_countries() );
- },
- true
- );
- $this->asset_data_registry->add(
- 'shippingStates',
- function() {
- return $this->deep_sort_with_accents( WC()->countries->get_shipping_country_states() );
- },
- true
- );
$this->asset_data_registry->add(
'countryLocale',
function() {
@@ -253,28 +256,24 @@ protected function register_block_type_assets() {
* @return array;
*/
public static function get_cart_block_types() {
- $block_types = [];
-
- if ( Package::feature()->is_feature_plugin_build() ) {
- $block_types[] = 'Cart';
- $block_types[] = 'CartOrderSummaryTaxesBlock';
- $block_types[] = 'CartOrderSummarySubtotalBlock';
- $block_types[] = 'FilledCartBlock';
- $block_types[] = 'EmptyCartBlock';
- $block_types[] = 'CartTotalsBlock';
- $block_types[] = 'CartItemsBlock';
- $block_types[] = 'CartLineItemsBlock';
- $block_types[] = 'CartOrderSummaryBlock';
- $block_types[] = 'CartExpressPaymentBlock';
- $block_types[] = 'ProceedToCheckoutBlock';
- $block_types[] = 'CartAcceptedPaymentMethodsBlock';
- $block_types[] = 'CartOrderSummaryCouponFormBlock';
- $block_types[] = 'CartOrderSummaryDiscountBlock';
- $block_types[] = 'CartOrderSummaryFeeBlock';
- $block_types[] = 'CartOrderSummaryHeadingBlock';
- $block_types[] = 'CartOrderSummaryShippingBlock';
- }
-
- return $block_types;
+ return [
+ 'Cart',
+ 'CartOrderSummaryTaxesBlock',
+ 'CartOrderSummarySubtotalBlock',
+ 'FilledCartBlock',
+ 'EmptyCartBlock',
+ 'CartTotalsBlock',
+ 'CartItemsBlock',
+ 'CartLineItemsBlock',
+ 'CartOrderSummaryBlock',
+ 'CartExpressPaymentBlock',
+ 'ProceedToCheckoutBlock',
+ 'CartAcceptedPaymentMethodsBlock',
+ 'CartOrderSummaryCouponFormBlock',
+ 'CartOrderSummaryDiscountBlock',
+ 'CartOrderSummaryFeeBlock',
+ 'CartOrderSummaryHeadingBlock',
+ 'CartOrderSummaryShippingBlock',
+ ];
}
}
diff --git a/src/BlockTypes/Checkout.php b/src/BlockTypes/Checkout.php
index 57778ee0d..ff9fbd69f 100644
--- a/src/BlockTypes/Checkout.php
+++ b/src/BlockTypes/Checkout.php
@@ -74,11 +74,12 @@ protected function enqueue_assets( array $attributes ) {
/**
* Append frontend scripts when rendering the block.
*
- * @param array $attributes Block attributes.
- * @param string $content Block content.
+ * @param array $attributes Block attributes.
+ * @param string $content Block content.
+ * @param WP_Block $block Block instance.
* @return string Rendered block type output.
*/
- protected function render( $attributes, $content ) {
+ protected function render( $attributes, $content, $block ) {
if ( $this->is_checkout_endpoint() ) {
// Note: Currently the block only takes care of the main checkout form -- if an endpoint is set, refer to the
// legacy shortcode instead and do not render block.
@@ -181,20 +182,23 @@ function() {
},
true
);
- $this->asset_data_registry->add(
- 'shippingCountries',
- function() {
- return $this->deep_sort_with_accents( WC()->countries->get_shipping_countries() );
- },
- true
- );
- $this->asset_data_registry->add(
- 'shippingStates',
- function() {
- return $this->deep_sort_with_accents( WC()->countries->get_shipping_country_states() );
- },
- true
- );
+ if ( wc_shipping_enabled() ) {
+ $this->asset_data_registry->add(
+ 'shippingCountries',
+ function() {
+ return $this->deep_sort_with_accents( WC()->countries->get_shipping_countries() );
+ },
+ true
+ );
+ $this->asset_data_registry->add(
+ 'shippingStates',
+ function() {
+ return $this->deep_sort_with_accents( WC()->countries->get_shipping_country_states() );
+ },
+ true
+ );
+ }
+
$this->asset_data_registry->add(
'countryLocale',
function() {
@@ -420,31 +424,27 @@ protected function register_block_type_assets() {
* @return array;
*/
public static function get_checkout_block_types() {
- $block_types = [];
-
- if ( Package::feature()->is_feature_plugin_build() ) {
- $block_types[] = 'Checkout';
- $block_types[] = 'CheckoutActionsBlock';
- $block_types[] = 'CheckoutBillingAddressBlock';
- $block_types[] = 'CheckoutContactInformationBlock';
- $block_types[] = 'CheckoutExpressPaymentBlock';
- $block_types[] = 'CheckoutFieldsBlock';
- $block_types[] = 'CheckoutOrderNoteBlock';
- $block_types[] = 'CheckoutOrderSummaryBlock';
- $block_types[] = 'CheckoutOrderSummaryCartItemsBlock';
- $block_types[] = 'CheckoutOrderSummaryCouponFormBlock';
- $block_types[] = 'CheckoutOrderSummaryDiscountBlock';
- $block_types[] = 'CheckoutOrderSummaryFeeBlock';
- $block_types[] = 'CheckoutOrderSummaryShippingBlock';
- $block_types[] = 'CheckoutOrderSummarySubtotalBlock';
- $block_types[] = 'CheckoutOrderSummaryTaxesBlock';
- $block_types[] = 'CheckoutPaymentBlock';
- $block_types[] = 'CheckoutShippingAddressBlock';
- $block_types[] = 'CheckoutShippingMethodsBlock';
- $block_types[] = 'CheckoutTermsBlock';
- $block_types[] = 'CheckoutTotalsBlock';
- }
-
- return $block_types;
+ return [
+ 'Checkout',
+ 'CheckoutActionsBlock',
+ 'CheckoutBillingAddressBlock',
+ 'CheckoutContactInformationBlock',
+ 'CheckoutExpressPaymentBlock',
+ 'CheckoutFieldsBlock',
+ 'CheckoutOrderNoteBlock',
+ 'CheckoutOrderSummaryBlock',
+ 'CheckoutOrderSummaryCartItemsBlock',
+ 'CheckoutOrderSummaryCouponFormBlock',
+ 'CheckoutOrderSummaryDiscountBlock',
+ 'CheckoutOrderSummaryFeeBlock',
+ 'CheckoutOrderSummaryShippingBlock',
+ 'CheckoutOrderSummarySubtotalBlock',
+ 'CheckoutOrderSummaryTaxesBlock',
+ 'CheckoutPaymentBlock',
+ 'CheckoutShippingAddressBlock',
+ 'CheckoutShippingMethodsBlock',
+ 'CheckoutTermsBlock',
+ 'CheckoutTotalsBlock',
+ ];
}
}
diff --git a/src/BlockTypes/ClassicTemplate.php b/src/BlockTypes/ClassicTemplate.php
index 311fd1a20..edb0903cb 100644
--- a/src/BlockTypes/ClassicTemplate.php
+++ b/src/BlockTypes/ClassicTemplate.php
@@ -40,12 +40,12 @@ protected function initialize() {
/**
* Render method for the Classic Template block. This method will determine which template to render.
*
- * @param array $attributes Block attributes.
- * @param string $content Block content.
- *
+ * @param array $attributes Block attributes.
+ * @param string $content Block content.
+ * @param WP_Block $block Block instance.
* @return string | void Rendered block type output.
*/
- protected function render( $attributes, $content ) {
+ protected function render( $attributes, $content, $block ) {
if ( ! isset( $attributes['template'] ) ) {
return;
}
diff --git a/src/BlockTypes/FeaturedItem.php b/src/BlockTypes/FeaturedItem.php
index ec2ea3326..97ca19042 100644
--- a/src/BlockTypes/FeaturedItem.php
+++ b/src/BlockTypes/FeaturedItem.php
@@ -90,11 +90,12 @@ protected function get_block_type_supports() {
/**
* Render the featured item block.
*
- * @param array $attributes Block attributes.
- * @param string $content Block content.
+ * @param array $attributes Block attributes.
+ * @param string $content Block content.
+ * @param WP_Block $block Block instance.
* @return string Rendered block type output.
*/
- protected function render( $attributes, $content ) {
+ protected function render( $attributes, $content, $block ) {
$item = $this->get_item( $attributes );
if ( ! $item ) {
return '';
diff --git a/src/BlockTypes/MiniCart.php b/src/BlockTypes/MiniCart.php
index f9df9863a..c18329a3b 100644
--- a/src/BlockTypes/MiniCart.php
+++ b/src/BlockTypes/MiniCart.php
@@ -325,12 +325,12 @@ protected function get_include_tax_label_markup() {
/**
* Append frontend scripts when rendering the Mini Cart block.
*
- * @param array $attributes Block attributes.
- * @param string $content Block content.
- *
+ * @param array $attributes Block attributes.
+ * @param string $content Block content.
+ * @param WP_Block $block Block instance.
* @return string Rendered block type output.
*/
- protected function render( $attributes, $content ) {
+ protected function render( $attributes, $content, $block ) {
return $content . $this->get_markup( $attributes );
}
@@ -523,7 +523,7 @@ public function register_empty_cart_message_block_pattern() {
register_block_pattern(
'woocommerce/mini-cart-empty-cart-message',
array(
- 'title' => __( 'Mini Cart Empty Cart Message', 'woo-gutenberg-products-block' ),
+ 'title' => __( 'Empty Mini Cart Message', 'woo-gutenberg-products-block' ),
'inserter' => false,
'content' => '' . __( 'Your cart is currently empty!', 'woo-gutenberg-products-block' ) . '
',
)
diff --git a/src/BlockTypes/MiniCartContents.php b/src/BlockTypes/MiniCartContents.php
index 99fa952fb..5ef6b82c1 100644
--- a/src/BlockTypes/MiniCartContents.php
+++ b/src/BlockTypes/MiniCartContents.php
@@ -52,12 +52,12 @@ protected function get_block_type_script( $key = null ) {
/**
* Render the markup for the Mini Cart contents block.
*
- * @param array $attributes Block attributes.
- * @param string $content Block content.
- *
+ * @param array $attributes Block attributes.
+ * @param string $content Block content.
+ * @param WP_Block $block Block instance.
* @return string Rendered block type output.
*/
- protected function render( $attributes, $content ) {
+ protected function render( $attributes, $content, $block ) {
if ( is_admin() || WC()->is_rest_api_request() ) {
// In the editor we will display the placeholder, so no need to
// print the markup.
diff --git a/src/BlockTypes/ProductCategories.php b/src/BlockTypes/ProductCategories.php
index 1cb07d278..6b52ffca2 100644
--- a/src/BlockTypes/ProductCategories.php
+++ b/src/BlockTypes/ProductCategories.php
@@ -56,11 +56,12 @@ protected function get_block_type_attributes() {
/**
* Render the Product Categories List block.
*
- * @param array $attributes Block attributes.
- * @param string $content Block content.
+ * @param array $attributes Block attributes.
+ * @param string $content Block content.
+ * @param WP_Block $block Block instance.
* @return string Rendered block type output.
*/
- protected function render( $attributes, $content ) {
+ protected function render( $attributes, $content, $block ) {
$uid = uniqid( 'product-categories-' );
$categories = $this->get_categories( $attributes );
diff --git a/src/BlockTypes/ProductImage.php b/src/BlockTypes/ProductImage.php
index 8f95831ac..4e8c816af 100644
--- a/src/BlockTypes/ProductImage.php
+++ b/src/BlockTypes/ProductImage.php
@@ -1,6 +1,8 @@
register_chunk_translations( [ $this->block_name ] );
+ return null;
+ }
+
+ /**
+ * Register the context.
+ */
+ protected function get_block_type_uses_context() {
+ return [ 'query', 'queryId', 'postId' ];
+ }
+
+ /**
+ * Get the block's attributes.
+ *
+ * @param array $attributes Block attributes. Default empty array.
+ * @return array Block attributes merged with defaults.
+ */
+ private function parse_attributes( $attributes ) {
+ // These should match what's set in JS `registerBlockType`.
+ $defaults = array(
+ 'showProductLink' => true,
+ 'showSaleBadge' => true,
+ 'saleBadgeAlign' => 'right',
+ 'imageSizing' => 'full-size',
+ 'productId' => 'number',
+ 'isDescendentOfQueryLoop' => 'false',
+ );
+
+ return wp_parse_args( $attributes, $defaults );
+ }
+
+ /**
+ * Render on Sale Badge.
+ *
+ * @param \WC_Product $product Product object.
+ * @param array $attributes Attributes.
+ * @return string
+ */
+ private function render_on_sale_badge( $product, $attributes ) {
+ if ( ! $product->is_on_sale() || false === $attributes['showSaleBadge'] ) {
+ return '';
+ }
+
+ $font_size = StyleAttributesUtils::get_font_size_class_and_style( $attributes );
+
+ $on_sale_badge = sprintf(
+ '
+
+ %s
+ Product on sale
+
+ ',
+ $attributes['saleBadgeAlign'],
+ isset( $font_size['class'] ) ? $font_size['class'] : '',
+ isset( $font_size['style'] ) ? $font_size['style'] : '',
+ esc_html__( 'Sale', 'woo-gutenberg-products-block' )
+ );
+ return $on_sale_badge;
+ }
+
+ /**
+ * Render anchor.
+ *
+ * @param \WC_Product $product Product object.
+ * @param array $attributes Attributes.
+ * @return string
+ */
+ private function render_anchor( $product, $attributes ) {
+ $product_permalink = $product->get_permalink();
+
+ $border_radius = StyleAttributesUtils::get_border_radius_class_and_style( $attributes );
+
+ $pointer_events = false === $attributes['showProductLink'] ? 'pointer-events: none;' : '';
+
+ return sprintf( '', $product_permalink, $pointer_events, isset( $border_radius['style'] ) ? $border_radius['style'] : '' );
+ }
+
+
+ /**
+ * Render Image.
+ *
+ * @param \WC_Product $product Product object.
+ * @return string
+ */
+ private function render_image( $product ) {
+ $image_info = wp_get_attachment_image_src( get_post_thumbnail_id( $product->get_id() ), 'woocommerce_thumbnail' );
+
+ if ( ! isset( $image_info[0] ) ) {
+ return sprintf( ' ', woocommerce_placeholder_img_src( 'woocommerce_thumbnail' ) );
+ }
+
+ return sprintf(
+ ' ',
+ $product->get_title(),
+ $image_info[0]
+ );
+ }
+
+ /**
+ * Extra data passed through from server to client for block.
+ *
+ * @param array $attributes Any attributes that currently are available from the block.
+ * Note, this will be empty in the editor context when the block is
+ * not in the post content on editor load.
+ */
+ protected function enqueue_data( array $attributes = [] ) {
+ $this->asset_data_registry->add( 'is_block_theme_enabled', wp_is_block_theme(), false );
+ }
+
+
+ /**
+ * Include and render the block
+ *
+ * @param array $attributes Block attributes. Default empty array.
+ * @param string $content Block content. Default empty string.
+ * @param WP_Block $block Block instance.
+ * @return string Rendered block type output.
+ */
+ protected function render( $attributes, $content, $block ) {
+ if ( ! empty( $content ) ) {
+ parent::register_block_type_assets();
+ $this->register_chunk_translations( [ $this->block_name ] );
+ return $content;
+ }
+ $parsed_attributes = $this->parse_attributes( $attributes );
+
+ $border_radius = StyleAttributesUtils::get_border_radius_class_and_style( $attributes );
+ $margin = StyleAttributesUtils::get_margin_class_and_style( $attributes );
+
+ $post_id = $block->context['postId'];
+ $product = wc_get_product( $post_id );
+
+ if ( $product ) {
+ return sprintf(
+ '
+
+ %s
+ %s
+ %s
+
+
',
+ isset( $border_radius['style'] ) ? $border_radius['style'] : '',
+ isset( $margin['style'] ) ? $margin['style'] : '',
+ $this->render_anchor( $product, $parsed_attributes ),
+ $this->render_on_sale_badge( $product, $parsed_attributes ),
+ $this->render_image( $product )
+ );
+
+ }
}
}
diff --git a/src/BlockTypes/ProductQuery.php b/src/BlockTypes/ProductQuery.php
new file mode 100644
index 000000000..8fc72d916
--- /dev/null
+++ b/src/BlockTypes/ProductQuery.php
@@ -0,0 +1,120 @@
+parsed_block = $parsed_block;
+
+ if ( isset( $parsed_block['attrs']['__woocommerceVariationProps'] ) ) {
+ add_filter(
+ 'query_loop_block_query_vars',
+ array( $this, 'get_query_by_attributes' ),
+ 10,
+ 1
+ );
+ }
+ }
+
+ /**
+ * Return a custom query based on the attributes.
+ *
+ * @param WP_Query $query The WordPress Query.
+ * @return array
+ */
+ public function get_query_by_attributes( $query ) {
+ $parsed_block = $this->parsed_block;
+ if ( ! isset( $parsed_block['attrs']['__woocommerceVariationProps'] ) ) {
+ return $query;
+ }
+
+ $variation_props = $parsed_block['attrs']['__woocommerceVariationProps'];
+ $common_query_values = array(
+ 'post_type' => 'product',
+ 'post_status' => 'publish',
+ 'posts_per_page' => $query['posts_per_page'],
+ 'orderby' => $query['orderby'],
+ 'order' => $query['order'],
+ );
+ $on_sale_query = $this->get_on_sale_products_query( $variation_props );
+
+ return array_merge( $query, $common_query_values, $on_sale_query );
+ }
+
+ /**
+ * Return a query for on sale products.
+ *
+ * @param array $variation_props Dedicated attributes for the variation.
+ * @return array
+ */
+ private function get_on_sale_products_query( $variation_props ) {
+ if ( ! isset( $variation_props['attributes']['query']['onSale'] ) || true !== $variation_props['attributes']['query']['onSale'] ) {
+ return array();
+ }
+
+ return array(
+ // Ignoring the warning of not using meta queries.
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ 'relation' => 'OR',
+ array(
+ 'key' => '_sale_price',
+ 'value' => 0,
+ 'compare' => '>',
+ 'type' => 'numeric',
+ ),
+ array(
+ 'key' => '_min_variation_sale_price',
+ 'value' => 0,
+ 'compare' => '>',
+ 'type' => 'numeric',
+ ),
+ ),
+ );
+ }
+}
diff --git a/src/BlockTypes/ProductSearch.php b/src/BlockTypes/ProductSearch.php
index 613aa67d7..d83134b86 100644
--- a/src/BlockTypes/ProductSearch.php
+++ b/src/BlockTypes/ProductSearch.php
@@ -26,11 +26,12 @@ protected function get_block_type_script( $key = null ) {
/**
* Render the block.
*
- * @param array $attributes Block attributes.
- * @param string $content Block content.
+ * @param array $attributes Block attributes.
+ * @param string $content Block content.
+ * @param WP_Block $block Block instance.
* @return string Rendered block type output.
*/
- protected function render( $attributes, $content ) {
+ protected function render( $attributes, $content, $block ) {
static $instance_id = 0;
$attributes = wp_parse_args(
@@ -124,4 +125,36 @@ protected function render( $attributes, $content ) {
$label_markup . $field_markup
);
}
+
+ /**
+ * Extra data passed through from server to client for block.
+ *
+ * @param array $attributes Any attributes that currently are available from the block.
+ * Note, this will be empty in the editor context when the block is
+ * not in the post content on editor load.
+ */
+ protected function enqueue_data( array $attributes = [] ) {
+ parent::enqueue_data( $attributes );
+
+ $gutenberg_version = '';
+
+ if ( is_plugin_active( 'gutenberg/gutenberg.php' ) ) {
+ if ( defined( 'GUTENBERG_VERSION' ) ) {
+ $gutenberg_version = GUTENBERG_VERSION;
+ }
+
+ if ( ! $gutenberg_version ) {
+ $gutenberg_data = get_file_data(
+ WP_PLUGIN_DIR . '/gutenberg/gutenberg.php',
+ array( 'Version' => 'Version' )
+ );
+ $gutenberg_version = $gutenberg_data['Version'];
+ }
+ }
+
+ $this->asset_data_registry->add(
+ 'isBlockVariationAvailable',
+ version_compare( get_bloginfo( 'version' ), '6.1', '>=' ) || version_compare( $gutenberg_version, '13.4', '>=' )
+ );
+ }
}
diff --git a/src/BlockTypesController.php b/src/BlockTypesController.php
index b7dbead04..1a6f04ccc 100644
--- a/src/BlockTypesController.php
+++ b/src/BlockTypesController.php
@@ -287,6 +287,7 @@ protected function get_block_types() {
'ProductTitle',
'MiniCart',
'MiniCartContents',
+ 'ProductQuery',
];
$block_types = array_merge( $block_types, Cart::get_cart_block_types(), Checkout::get_checkout_block_types() );
diff --git a/src/Domain/Bootstrap.php b/src/Domain/Bootstrap.php
index 186c18c52..477d70166 100644
--- a/src/Domain/Bootstrap.php
+++ b/src/Domain/Bootstrap.php
@@ -3,8 +3,8 @@
use Automattic\WooCommerce\Blocks\Assets\Api as AssetApi;
use Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry;
-use Automattic\WooCommerce\Blocks\Migration;
use Automattic\WooCommerce\Blocks\AssetsController;
+use Automattic\WooCommerce\Blocks\BlockPatterns;
use Automattic\WooCommerce\Blocks\BlockTemplatesController;
use Automattic\WooCommerce\Blocks\BlockTypesController;
use Automattic\WooCommerce\Blocks\Domain\Services\CreateAccount;
@@ -13,8 +13,7 @@
use Automattic\WooCommerce\Blocks\Domain\Services\GoogleAnalytics;
use Automattic\WooCommerce\Blocks\InboxNotifications;
use Automattic\WooCommerce\Blocks\Installer;
-use Automattic\WooCommerce\Blocks\Templates\ProductSearchResultsTemplate;
-use Automattic\WooCommerce\Blocks\Templates\ClassicTemplatesCompatibility;
+use Automattic\WooCommerce\Blocks\Migration;
use Automattic\WooCommerce\Blocks\Payments\Api as PaymentsApi;
use Automattic\WooCommerce\Blocks\Payments\Integrations\BankTransfer;
use Automattic\WooCommerce\Blocks\Payments\Integrations\CashOnDelivery;
@@ -22,10 +21,12 @@
use Automattic\WooCommerce\Blocks\Payments\Integrations\PayPal;
use Automattic\WooCommerce\Blocks\Payments\PaymentMethodRegistry;
use Automattic\WooCommerce\Blocks\Registry\Container;
+use Automattic\WooCommerce\Blocks\Templates\ClassicTemplatesCompatibility;
use Automattic\WooCommerce\Blocks\Templates\ProductAttributeTemplate;
-use Automattic\WooCommerce\StoreApi\StoreApi;
+use Automattic\WooCommerce\Blocks\Templates\ProductSearchResultsTemplate;
use Automattic\WooCommerce\StoreApi\RoutesController;
use Automattic\WooCommerce\StoreApi\SchemaController;
+use Automattic\WooCommerce\StoreApi\StoreApi;
/**
* Takes care of bootstrapping the plugin.
@@ -95,7 +96,9 @@ protected function init() {
add_action(
'admin_init',
function() {
- InboxNotifications::create_surface_cart_checkout_blocks_notification();
+ // Delete this notification because the blocks are included in WC Core now. This will handle any sites
+ // with lingering notices.
+ InboxNotifications::delete_surface_cart_checkout_blocks_notification();
},
10,
0
@@ -119,9 +122,9 @@ function() {
$this->container->get( ProductSearchResultsTemplate::class );
$this->container->get( ProductAttributeTemplate::class );
$this->container->get( ClassicTemplatesCompatibility::class );
- if ( $this->package->feature()->is_feature_plugin_build() ) {
- $this->container->get( PaymentsApi::class );
- }
+ $this->container->get( BlockPatterns::class );
+ $this->container->get( PaymentsApi::class );
+
}
/**
@@ -146,7 +149,7 @@ function() {
if ( should_display_compatibility_notices() ) {
?>
package->feature()->is_feature_plugin_build() ) {
- $this->container->register(
- PaymentsApi::class,
- function ( Container $container ) {
- $payment_method_registry = $container->get( PaymentMethodRegistry::class );
- $asset_data_registry = $container->get( AssetDataRegistry::class );
- return new PaymentsApi( $payment_method_registry, $asset_data_registry );
- }
- );
- }
+ $this->container->register(
+ PaymentsApi::class,
+ function ( Container $container ) {
+ $payment_method_registry = $container->get( PaymentMethodRegistry::class );
+ $asset_data_registry = $container->get( AssetDataRegistry::class );
+ return new PaymentsApi( $payment_method_registry, $asset_data_registry );
+ }
+ );
$this->container->register(
StoreApi::class,
function () {
@@ -332,6 +333,12 @@ function( Container $container ) {
return $container->get( StoreApi::class )::container()->get( RoutesController::class );
}
);
+ $this->container->register(
+ BlockPatterns::class,
+ function () {
+ return new BlockPatterns( $this->package );
+ }
+ );
}
/**
diff --git a/src/Domain/Package.php b/src/Domain/Package.php
index 6958a6bec..c2586d6dc 100644
--- a/src/Domain/Package.php
+++ b/src/Domain/Package.php
@@ -134,7 +134,13 @@ public function is_experimental_build() {
*
* @return boolean
*/
- public function is_feature_plugin_build() {
- return $this->feature()->is_feature_plugin_build();
- }
+ // phpcs:disable Squiz.PHP.CommentedOutCode
+ // phpcs:disable Squiz.Commenting.InlineComment.InvalidEndChar
+ // phpcs:disable Squiz.Commenting.InlineComment.SpacingBefore
+ // public function is_feature_plugin_build() {
+ // return $this->feature()->is_feature_plugin_build();
+ // }
+ // phpcs:enable Squiz.PHP.CommentedOutCode
+ // phpcs:enable Squiz.Commenting.InlineComment.InvalidEndChar
+ // phpcs:enable Squiz.Commenting.InlineComment.SpacingBefore
}
diff --git a/src/Domain/Services/CreateAccount.php b/src/Domain/Services/CreateAccount.php
index afa2a36d2..6954dd3c7 100644
--- a/src/Domain/Services/CreateAccount.php
+++ b/src/Domain/Services/CreateAccount.php
@@ -24,23 +24,10 @@ public function __construct( Package $package ) {
$this->package = $package;
}
- /**
- * Feature gating. This feature is only enabled when using the feature plugin/checkout block.
- *
- * @return boolean
- */
- private function is_feature_enabled() {
- return $this->package->feature()->is_feature_plugin_build();
- }
-
/**
* Init - register handlers for WooCommerce core email hooks.
*/
public function init() {
- if ( ! self::is_feature_enabled() ) {
- return;
- }
-
// Override core email handlers to add our new improved "new account" email.
add_action(
'woocommerce_email',
@@ -78,9 +65,6 @@ function( $customer_id, $new_customer_data = array(), $password_generated = fals
* @param array $new_customer_data Assoc array of data for the new account.
*/
public function customer_new_account( $customer_id = 0, array $new_customer_data = array() ) {
- if ( ! self::is_feature_enabled() || ! $customer_id ) {
- return;
- }
$new_account_email = new CustomerNewAccount( $this->package );
$new_account_email->trigger( $customer_id, $new_customer_data );
}
diff --git a/src/Domain/Services/Email/CustomerNewAccount.php b/src/Domain/Services/Email/CustomerNewAccount.php
index 6deec9a0e..a56185a10 100644
--- a/src/Domain/Services/Email/CustomerNewAccount.php
+++ b/src/Domain/Services/Email/CustomerNewAccount.php
@@ -55,7 +55,7 @@ public function __construct( Package $package ) {
$this->id = 'customer_new_account';
$this->customer_email = true;
$this->title = __( 'New account', 'woo-gutenberg-products-block' );
- $this->description = __( 'Customer "new account" emails are sent to the customer when a customer signs up via checkout or account blocks.', 'woo-gutenberg-products-block' );
+ $this->description = __( '“New Account” emails are sent when a customer signs up via the checkout flow.', 'woo-gutenberg-products-block' );
$this->template_html = 'emails/customer-new-account-blocks.php';
$this->template_plain = 'emails/plain/customer-new-account-blocks.php';
$this->default_template_path = $package->get_path( '/templates/' );
diff --git a/src/Domain/Services/FeatureGating.php b/src/Domain/Services/FeatureGating.php
index 58309c42e..250187dc7 100644
--- a/src/Domain/Services/FeatureGating.php
+++ b/src/Domain/Services/FeatureGating.php
@@ -101,11 +101,11 @@ public function is_feature_plugin_build() {
return $this->flag >= self::FEATURE_PLUGIN_FLAG;
}
- /**
- * Returns the current environment value.
- *
- * @return string
- */
+ /**
+ * Returns the current environment value.
+ *
+ * @return string
+ */
public function get_environment() {
return $this->environment;
}
diff --git a/src/InboxNotifications.php b/src/InboxNotifications.php
index cb71f94ea..2f5c528fb 100644
--- a/src/InboxNotifications.php
+++ b/src/InboxNotifications.php
@@ -12,41 +12,7 @@
*/
class InboxNotifications {
- const SURFACE_CART_CHECKOUT_NOTE_NAME = 'surface_cart_checkout';
- const SURFACE_CART_CHECKOUT_PROBABILITY_OPTION = 'wc_blocks_surface_cart_checkout_probability';
- const PERCENT_USERS_TO_TARGET = 50;
- const INELIGIBLE_EXTENSIONS = [
- 'automatewoo',
- 'mailchimp-for-woocommerce',
- 'mailpoet',
- 'klarna-payments-for-woocommerce',
- 'klarna-checkout-for-woocommerce',
- 'woocommerce-gutenberg-products-block', // Disallow the notification if the store is using the feature plugin already.
- 'woocommerce-all-products-for-subscriptions',
- 'woocommerce-bookings',
- 'woocommerce-box-office',
- 'woocommerce-cart-add-ons',
- 'woocommerce-checkout-add-ons',
- 'woocommerce-checkout-field-editor',
- 'woocommerce-conditional-shipping-and-payments',
- 'woocommerce-dynamic-pricing',
- 'woocommerce-eu-vat-number',
- 'woocommerce-follow-up-emails',
- 'woocommerce-gateway-amazon-payments-advanced',
- 'woocommerce-gateway-authorize-net-cim',
- 'woocommerce-google-analytics-pro',
- 'woocommerce-memberships',
- 'woocommerce-paypal-payments',
- 'woocommerce-pre-orders',
- 'woocommerce-product-bundles',
- 'woocommerce-shipping-fedex',
- 'woocommerce-smart-coupons',
- ];
- const ELIGIBLE_COUNTRIES = [
- 'GB',
- 'US',
- ];
-
+ const SURFACE_CART_CHECKOUT_NOTE_NAME = 'surface_cart_checkout';
/**
* Deletes the note.
@@ -54,96 +20,4 @@ class InboxNotifications {
public static function delete_surface_cart_checkout_blocks_notification() {
Notes::delete_notes_with_name( self::SURFACE_CART_CHECKOUT_NOTE_NAME );
}
-
- /**
- * Creates a notification letting merchants know about the Cart and Checkout Blocks.
- */
- public static function create_surface_cart_checkout_blocks_notification() {
- // If this is the feature plugin, then we don't need to do this. This should only show when Blocks is bundled
- // with WooCommerce Core.
- if ( Package::feature()->is_feature_plugin_build() ) {
- return;
- }
-
- if ( ! class_exists( 'Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes' ) ) {
- return;
- }
-
- if ( ! class_exists( 'WC_Data_Store' ) ) {
- return;
- }
-
- if ( apply_filters( 'woocommerce_admin_disabled', false ) ) {
- return;
- }
-
- $data_store = \WC_Data_Store::load( 'admin-note' );
- $note_ids = $data_store->get_notes_with_name( self::SURFACE_CART_CHECKOUT_NOTE_NAME );
- // Calculate store's eligibility to be shown the notice, starting with whether they have any plugins we know to
- // be incompatible with Blocks. This check is done before checking if the note exists already because we want to
- // delete the note if the merchant activates an ineligible plugin.
- foreach ( self::INELIGIBLE_EXTENSIONS as $extension ) {
- if ( is_plugin_active( $extension . '/' . $extension . '.php' ) ) {
-
- // Delete the notification here, we shouldn't show it if it's not going to work with the merchant's site.
- self::delete_surface_cart_checkout_blocks_notification();
- return;
- }
- }
-
- foreach ( (array) $note_ids as $note_id ) {
- $note = Notes::get_note( $note_id );
-
- // Return now because the note already exists.
- if ( $note->get_name() === self::SURFACE_CART_CHECKOUT_NOTE_NAME ) {
- return;
- }
- }
-
- // Next check the store is located in one of the eligible countries.
- $raw_country = get_option( 'woocommerce_default_country' );
- $country = explode( ':', $raw_country )[0];
- if ( ! in_array( $country, self::ELIGIBLE_COUNTRIES, true ) ) {
- return;
- }
-
- // Pick a random number between 1 and 100 and add this to the wp_options table. This can then be used to target
- // a percentage of users. We do this here so we target a truer percentage of eligible users than if we did it
- // before checking plugins/country.
- $existing_probability = get_option( self::SURFACE_CART_CHECKOUT_PROBABILITY_OPTION );
- if ( false === $existing_probability ) {
- $existing_probability = wp_rand( 0, 100 );
- add_option( self::SURFACE_CART_CHECKOUT_PROBABILITY_OPTION, $existing_probability );
- }
-
- // Finally, check if the store's generated % chance is below the % of users we want to surface this to.
- if ( $existing_probability > self::PERCENT_USERS_TO_TARGET ) {
- return;
- }
-
- // At this point, the store meets all the criteria to be shown the notice! Woo!
- $note = new Note();
- $note->set_title(
- __(
- 'Introducing the Cart and Checkout blocks!',
- 'woo-gutenberg-products-block'
- )
- );
- $note->set_content(
- __(
- "Increase your store's revenue with the conversion optimized Cart & Checkout WooCommerce blocks available in the WooCommerce Blocks extension.",
- 'woo-gutenberg-products-block'
- )
- );
- $note->set_type( Note::E_WC_ADMIN_NOTE_INFORMATIONAL );
- $note->set_source( 'woo-gutenberg-products-block' );
- $note->set_name( self::SURFACE_CART_CHECKOUT_NOTE_NAME );
- $note->add_action(
- 'learn_more',
- 'Learn More',
- 'https://woocommerce.com/checkout-blocks/'
- );
- $note->save();
-
- }
}
diff --git a/src/Package.php b/src/Package.php
index 23e2a0481..504fa9fd9 100644
--- a/src/Package.php
+++ b/src/Package.php
@@ -1,4 +1,5 @@
is_feature_plugin_build();
- }
+ // This function will be kept around but commented out in case we add feature-plugin-specific code in the future.
+ // phpcs:disable Squiz.PHP.CommentedOutCode
+ // phpcs:disable Squiz.Commenting.InlineComment.InvalidEndChar
+ // phpcs:disable Squiz.Commenting.InlineComment.SpacingBefore
+ // public static function is_feature_plugin_build() {
+ // return self::get_package()->is_feature_plugin_build();
+ // }
+ // phpcs:enable Squiz.PHP.CommentedOutCode
+ // phpcs:enable Squiz.Commenting.InlineComment.InvalidEndChar
+ // phpcs:enable Squiz.Commenting.InlineComment.SpacingBefore
/**
* Loads the dependency injection container for woocommerce blocks.
@@ -97,16 +106,16 @@ public static function is_feature_plugin_build() {
public static function container( $reset = false ) {
static $container;
if (
- ! $container instanceof Container
- || $reset
- ) {
+ ! $container instanceof Container
+ || $reset
+ ) {
$container = new Container();
// register Package.
$container->register(
NewPackage::class,
function ( $container ) {
// leave for automated version bumping.
- $version = '8.3.0-dev';
+ $version = '8.6.0-dev';
return new NewPackage(
$version,
dirname( __DIR__ ),
@@ -127,8 +136,7 @@ function ( $container ) {
$container->register(
Migration::class,
function () {
- return new Migration(
- );
+ return new Migration();
}
);
}
diff --git a/src/StoreApi/Routes/V1/ProductCollectionData.php b/src/StoreApi/Routes/V1/ProductCollectionData.php
index a2c3bc522..88fbc99db 100644
--- a/src/StoreApi/Routes/V1/ProductCollectionData.php
+++ b/src/StoreApi/Routes/V1/ProductCollectionData.php
@@ -193,7 +193,7 @@ public function get_collection_params() {
'readonly' => true,
],
'query_type' => [
- 'description' => __( 'Query type being performed which may affect counts. Valid values include "and" and "or".', 'woo-gutenberg-products-block' ),
+ 'description' => __( 'Filter condition being performed which may affect counts. Valid values include "and" and "or".', 'woo-gutenberg-products-block' ),
'type' => 'string',
'enum' => [ 'and', 'or' ],
'context' => [ 'view', 'edit' ],
diff --git a/src/StoreApi/deprecated.php b/src/StoreApi/deprecated.php
index ca9fffbf4..ffb9f613a 100644
--- a/src/StoreApi/deprecated.php
+++ b/src/StoreApi/deprecated.php
@@ -5,63 +5,73 @@
* This file is autoloaded via composer.json and maps the old namespaces to new namespaces.
*/
-// Map old to new namespaces for utils and exceptions.
-class_alias( Automattic\WooCommerce\StoreApi\Exceptions\RouteException::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\RouteException::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema::class, Automattic\WooCommerce\Blocks\Domain\Services\ExtendRestApi::class );
-class_alias( Automattic\WooCommerce\StoreApi\SchemaController::class, Automattic\WooCommerce\Blocks\StoreApi\SchemaController::class );
-class_alias( Automattic\WooCommerce\StoreApi\RoutesController::class, Automattic\WooCommerce\Blocks\StoreApi\RoutesController::class );
-class_alias( Automattic\WooCommerce\StoreApi\Formatters::class, Automattic\WooCommerce\Blocks\StoreApi\Formatters::class );
-class_alias( Automattic\WooCommerce\StoreApi\Payments\PaymentResult::class, Automattic\WooCommerce\Blocks\Payments\PaymentResult::class );
-class_alias( Automattic\WooCommerce\StoreApi\Payments\PaymentContext::class, Automattic\WooCommerce\Blocks\Payments\PaymentContext::class );
+$class_aliases = [
+ // Old to new namespaces for utils and exceptions.
+ Automattic\WooCommerce\StoreApi\Exceptions\RouteException::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\RouteException::class,
+ Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema::class => Automattic\WooCommerce\Blocks\Domain\Services\ExtendRestApi::class,
+ Automattic\WooCommerce\StoreApi\SchemaController::class => Automattic\WooCommerce\Blocks\StoreApi\SchemaController::class,
+ Automattic\WooCommerce\StoreApi\RoutesController::class => Automattic\WooCommerce\Blocks\StoreApi\RoutesController::class,
+ Automattic\WooCommerce\StoreApi\Formatters::class => Automattic\WooCommerce\Blocks\StoreApi\Formatters::class,
+ Automattic\WooCommerce\StoreApi\Payments\PaymentResult::class => Automattic\WooCommerce\Blocks\Payments\PaymentResult::class,
+ Automattic\WooCommerce\StoreApi\Payments\PaymentContext::class => Automattic\WooCommerce\Blocks\Payments\PaymentContext::class,
-// Map old schemas to V1 schemas under new namespace.
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractAddressSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\AbstractAddressSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\AbstractSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\BillingAddressSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\BillingAddressSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartCouponSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartCouponSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartExtensionsSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartExtensionsSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartFeeSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartFeeSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartItemSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartItemSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartShippingRateSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartShippingRateSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CheckoutSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CheckoutSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ErrorSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ErrorSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ImageAttachmentSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ImageAttachmentSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\OrderCouponSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\OrderCouponSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductAttributeSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductAttributeSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductCategorySchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductCategorySchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductCollectionDataSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductCollectionDataSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductReviewSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductReviewSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ShippingAddressSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ShippingAddressSchema::class );
-class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\TermSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\TermSchema::class );
+ // Old schemas to V1 schemas under new namespace.
+ Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractAddressSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\AbstractAddressSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\AbstractSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\BillingAddressSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\BillingAddressSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\CartCouponSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartCouponSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\CartExtensionsSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartExtensionsSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\CartFeeSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartFeeSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\CartItemSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartItemSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\CartSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\CartShippingRateSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartShippingRateSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\CheckoutSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CheckoutSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\ErrorSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ErrorSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\ImageAttachmentSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ImageAttachmentSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\OrderCouponSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\OrderCouponSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\ProductAttributeSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductAttributeSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\ProductCategorySchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductCategorySchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\ProductCollectionDataSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductCollectionDataSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\ProductReviewSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductReviewSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\ProductSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\ShippingAddressSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ShippingAddressSchema::class,
+ Automattic\WooCommerce\StoreApi\Schemas\V1\TermSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\TermSchema::class,
-// Map old routes to V1 routes under new namespace.
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractCartRoute::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractRoute::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\AbstractTermsRoute::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractTermsRoute::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\Batch::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\Batch::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\Cart::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\Cart::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartAddItem::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartAddItem::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartApplyCoupon::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartApplyCoupon::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartCoupons::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartCoupons::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartCouponsByCode::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartCouponsByCode::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartExtensions::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartExtensions::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartItems::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartItems::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartItemsByKey::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartItemsByKey::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartRemoveCoupon::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartRemoveCoupon::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartRemoveItem::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartRemoveItem::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartSelectShippingRate::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartSelectShippingRate::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartUpdateCustomer::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartUpdateCustomer::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartUpdateItem::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartUpdateItem::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\Checkout::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\Checkout::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributes::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributes::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributesById::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributesById::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributeTerms::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributeTerms::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductCategories::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCategories::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductCategoriesById::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCategoriesById::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductCollectionData::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCollectionData::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductReviews::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductReviews::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\Products::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\Products::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductsById::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductsById::class );
-class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductTags::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductTags::class );
+ // Old routes to V1 routes under new namespace.
+ Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractCartRoute::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractRoute::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\AbstractTermsRoute::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractTermsRoute::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\Batch::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\Batch::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\Cart::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\Cart::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartAddItem::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartAddItem::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartApplyCoupon::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartApplyCoupon::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartCoupons::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartCoupons::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartCouponsByCode::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartCouponsByCode::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartExtensions::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartExtensions::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartItems::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartItems::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartItemsByKey::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartItemsByKey::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartRemoveCoupon::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartRemoveCoupon::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartRemoveItem::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartRemoveItem::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartSelectShippingRate::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartSelectShippingRate::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartUpdateCustomer::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartUpdateCustomer::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\CartUpdateItem::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartUpdateItem::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\Checkout::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\Checkout::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributes::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributes::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributesById::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributesById::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributeTerms::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributeTerms::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\ProductCategories::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCategories::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\ProductCategoriesById::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCategoriesById::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\ProductCollectionData::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCollectionData::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\ProductReviews::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductReviews::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\Products::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\Products::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\ProductsById::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductsById::class,
+ Automattic\WooCommerce\StoreApi\Routes\V1\ProductTags::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductTags::class,
+];
+
+foreach ( $class_aliases as $class => $alias ) {
+ if ( ! class_exists( $alias, false ) ) {
+ class_alias( $class, $alias );
+ }
+}
+
+unset( $class_aliases );
diff --git a/src/StoreApi/docs/checkout.md b/src/StoreApi/docs/checkout.md
index db6bf78bb..4374505c0 100644
--- a/src/StoreApi/docs/checkout.md
+++ b/src/StoreApi/docs/checkout.md
@@ -83,8 +83,8 @@ POST /wc/store/v1/checkout
| Attribute | Type | Required | Description |
| :----------------- | :----- | :------: | :------------------------------------------------------------------ |
-| `billing_address` | array | Yes | Array of updated billing address data for the customer. |
-| `shipping_address` | array | Yes | Array of updated shipping address data for the customer. |
+| `billing_address` | object | Yes | Object of updated billing address data for the customer. |
+| `shipping_address` | object | Yes | Object of updated shipping address data for the customer. |
| `customer_note` | string | No | Note added to the order by the customer during checkout. |
| `payment_method` | string | Yes | The ID of the payment method being used to process the payment. |
| `payment_data` | array | No | Data to pass through to the payment method when processing payment. |
diff --git a/src/StoreApi/docs/products.md b/src/StoreApi/docs/products.md
index 6e5eeeee2..465adb6f9 100644
--- a/src/StoreApi/docs/products.md
+++ b/src/StoreApi/docs/products.md
@@ -191,6 +191,14 @@ curl "https://example-store.com/wp-json/wc/store/v1/products/34"
}
```
+## Product Variations
+
+By default, Store API excludes product variations. You can retrieve the variations for a product by using the `type=variation`.
+
+```sh
+curl "https://example-store.com/wp-json/wc/store/v1/products?type=variation"
+```
+
---
diff --git a/src/Utils/StyleAttributesUtils.php b/src/Utils/StyleAttributesUtils.php
index e8786c78f..8e8093f1e 100644
--- a/src/Utils/StyleAttributesUtils.php
+++ b/src/Utils/StyleAttributesUtils.php
@@ -347,6 +347,26 @@ public static function get_padding_class_and_style( $attributes ) {
);
}
+ /**
+ * Get class and style for margin from attributes.
+ *
+ * @param array $attributes Block attributes.
+ *
+ * @return (array | null)
+ */
+ public static function get_margin_class_and_style( $attributes ) {
+ $margin = isset( $attributes['style']['spacing']['margin'] ) ? $attributes['style']['spacing']['margin'] : null;
+
+ if ( ! $margin ) {
+ return null;
+ }
+
+ return array(
+ 'class' => null,
+ 'style' => sprintf( 'margin: %s;', implode( ' ', $margin ) ),
+ );
+ }
+
/**
* Get classes and styles from attributes.
*
@@ -368,6 +388,7 @@ public static function get_classes_and_styles_by_attributes( $attributes, $prope
'border_radius' => self::get_border_radius_class_and_style( $attributes ),
'border_width' => self::get_border_width_class_and_style( $attributes ),
'padding' => self::get_padding_class_and_style( $attributes ),
+ 'margin' => self::get_margin_class_and_style( $attributes ),
);
if ( ! empty( $properties ) ) {
diff --git a/tests/e2e/config/setup.js b/tests/e2e/config/setup.js
index ae74ba334..d03acadd7 100644
--- a/tests/e2e/config/setup.js
+++ b/tests/e2e/config/setup.js
@@ -2,8 +2,9 @@
/**
* External dependencies
*/
+import path from 'path';
import { setup as setupPuppeteer } from 'jest-environment-puppeteer';
-const { truncateSync, existsSync } = require( 'fs' );
+const { truncateSync, existsSync, unlinkSync } = require( 'fs' );
/**
* Internal dependencies
*/
@@ -23,8 +24,22 @@ import {
disableAttributeLookup,
} from '../fixtures/fixture-loaders';
import { PERFORMANCE_REPORT_FILENAME } from '../../utils/constants';
+import { GUTENBERG_EDITOR_CONTEXT } from '../utils';
module.exports = async ( globalConfig ) => {
+ /**
+ * We have to remove snapshots to avoid "obsolete snapshot" errors.
+ *
+ * @todo Remove this logic when WordPress 6.1 is released.
+ */
+ if ( GUTENBERG_EDITOR_CONTEXT !== 'core' ) {
+ unlinkSync(
+ path.join(
+ __dirname,
+ '../specs/backend/__snapshots__/site-editing-templates.test.js.snap'
+ )
+ );
+ }
// we need to load puppeteer global setup here.
await setupPuppeteer( globalConfig );
diff --git a/tests/e2e/specs/backend/__fixtures__/filter-products-by-attribute.fixture.json b/tests/e2e/specs/backend/__fixtures__/filter-products-by-attribute.fixture.json
index 1ba8bf030..7d87b2642 100644
--- a/tests/e2e/specs/backend/__fixtures__/filter-products-by-attribute.fixture.json
+++ b/tests/e2e/specs/backend/__fixtures__/filter-products-by-attribute.fixture.json
@@ -1 +1 @@
-{"title":"Filter Products by Attribute Block","pageContent":"\n
\n\n
\n"}
+{"title":"Filter by Attribute Block","pageContent":"\n
\n\n
\n"}
diff --git a/tests/e2e/specs/backend/__fixtures__/filter-products-by-price.fixture.json b/tests/e2e/specs/backend/__fixtures__/filter-products-by-price.fixture.json
index 3cd1ab138..d63544f4f 100644
--- a/tests/e2e/specs/backend/__fixtures__/filter-products-by-price.fixture.json
+++ b/tests/e2e/specs/backend/__fixtures__/filter-products-by-price.fixture.json
@@ -1 +1 @@
-{"title":"Filter Products by Price Block","pageContent":"\n
\n"}
+{"title":"Filter by Price Block","pageContent":"\n
\n"}
diff --git a/tests/e2e/specs/backend/__fixtures__/product-search-legacy.fixture.json b/tests/e2e/specs/backend/__fixtures__/product-search-legacy.fixture.json
new file mode 100644
index 000000000..e4f3dfd02
--- /dev/null
+++ b/tests/e2e/specs/backend/__fixtures__/product-search-legacy.fixture.json
@@ -0,0 +1,4 @@
+{
+ "title": "Product Search Legacy Block",
+ "pageContent": ""
+}
diff --git a/tests/e2e/specs/backend/__fixtures__/product-search.fixture.json b/tests/e2e/specs/backend/__fixtures__/product-search.fixture.json
index 70913465e..433654824 100644
--- a/tests/e2e/specs/backend/__fixtures__/product-search.fixture.json
+++ b/tests/e2e/specs/backend/__fixtures__/product-search.fixture.json
@@ -1,4 +1,4 @@
{
"title": "Product Search Block",
- "pageContent": "\n\n"
+ "pageContent": ""
}
diff --git a/tests/e2e/specs/backend/__snapshots__/product-search.test.js.snap b/tests/e2e/specs/backend/__snapshots__/product-search.test.js.snap
deleted file mode 100644
index bdfc21fea..000000000
--- a/tests/e2e/specs/backend/__snapshots__/product-search.test.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`Product Search Block can change field labels in editor 1`] = `""`;
diff --git a/tests/e2e/specs/backend/attribute-filter.test.js b/tests/e2e/specs/backend/attribute-filter.test.js
index a5b4678b6..cb5eab798 100644
--- a/tests/e2e/specs/backend/attribute-filter.test.js
+++ b/tests/e2e/specs/backend/attribute-filter.test.js
@@ -13,7 +13,7 @@ import {
} from '@woocommerce/blocks-test-utils';
const block = {
- name: 'Filter Products by Attribute',
+ name: 'Filter by Attribute',
slug: 'woocommerce/attribute-filter',
class: '.wc-block-attribute-filter',
};
@@ -79,29 +79,37 @@ describe( `${ block.name } Block`, () => {
await expect( page ).toMatchElement(
'.wc-filter-element-label-list-count'
);
- await expect( page ).toClick( 'label', { text: 'Product count' } );
+ await expect( page ).toClick( 'label', {
+ text: 'Include product count',
+ } );
await expect( page ).not.toMatchElement(
'.wc-filter-element-label-list-count'
);
// reset
- await expect( page ).toClick( 'label', { text: 'Product count' } );
+ await expect( page ).toClick( 'label', {
+ text: 'Include product count',
+ } );
} );
it( 'can toggle go button', async () => {
await expect( page ).not.toMatchElement(
'.wc-block-filter-submit-button'
);
- await expect( page ).toClick( 'label', { text: 'Filter button' } );
+ await expect( page ).toClick( 'label', {
+ text: "Show 'Apply filters' button",
+ } );
await expect( page ).toMatchElement(
'.wc-block-filter-submit-button'
);
// reset
- await expect( page ).toClick( 'label', { text: 'Filter button' } );
+ await expect( page ).toClick( 'label', {
+ text: "Show 'Apply filters' button",
+ } );
} );
it( 'can switch attribute', async () => {
await expect( page ).toClick( 'button', {
- text: 'Filter Products by Attribute',
+ text: 'Content Settings',
} );
await expect( page ).toClick(
diff --git a/tests/e2e/specs/backend/cart.test.js b/tests/e2e/specs/backend/cart.test.js
index 972df2748..f9f8f875d 100644
--- a/tests/e2e/specs/backend/cart.test.js
+++ b/tests/e2e/specs/backend/cart.test.js
@@ -50,109 +50,74 @@ if ( process.env.WOOCOMMERCE_BLOCKS_PHASE < 2 ) {
describe( `${ block.name } Block`, () => {
describe( 'in page editor', () => {
- describe( `before compatibility notice is dismissed`, () => {
- beforeAll( async () => {
- // make sure CartCheckoutCompatibilityNotice will appear
- await page.evaluate( () => {
- window.localStorage.removeItem(
- 'wc-blocks_dismissed_compatibility_notices'
- );
- } );
- await visitBlockPage( `${ block.name } Block` );
- } );
-
- it( 'shows compatibility notice', async () => {
- const compatibilityNoticeTitle = await page.$x(
- `//h1[contains(text(), 'Compatibility notice')]`
- );
- expect( compatibilityNoticeTitle.length ).toBe( 1 );
- } );
+ beforeAll( async () => {
+ await switchUserToAdmin();
+ await visitBlockPage( `${ block.name } Block` );
} );
- describe( 'after compatibility notice is dismissed', () => {
- beforeAll( async () => {
- await page.evaluate( () => {
- window.localStorage.setItem(
- 'wc-blocks_dismissed_compatibility_notices',
- '["cart"]'
- );
- } );
- await switchUserToAdmin();
- await visitBlockPage( `${ block.name } Block` );
- } );
-
- afterAll( async () => {
- await page.evaluate( () => {
- window.localStorage.removeItem(
- 'wc-blocks_dismissed_compatibility_notices'
- );
- } );
- } );
+ it( 'can only be inserted once', async () => {
+ await insertBlockDontWaitForInsertClose( block.name );
+ expect( await getAllBlocks() ).toHaveLength( 1 );
+ } );
- it( 'can only be inserted once', async () => {
- await insertBlockDontWaitForInsertClose( block.name );
- expect( await getAllBlocks() ).toHaveLength( 1 );
- } );
+ it( 'renders without crashing', async () => {
+ await expect( page ).toRenderBlock( block );
+ await expect( page ).toRenderBlock( filledCartBlock );
+ await expect( page ).toRenderBlock( emptyCartBlock );
+ } );
- it( 'renders without crashing', async () => {
- await expect( page ).toRenderBlock( block );
- await expect( page ).toRenderBlock( filledCartBlock );
- await expect( page ).toRenderBlock( emptyCartBlock );
+ it( 'shows empty cart when changing the view', async () => {
+ await page.waitForSelector( block.class ).catch( () => {
+ throw new Error(
+ `Could not find an element with class ${ block.class } - the block probably did not load correctly.`
+ );
} );
+ await selectBlockByName( block.slug );
+ await clickBlockToolbarButton( 'Switch view', 'ariaLabel' );
+ const emptyCartButton = await page.waitForXPath(
+ `//button[contains(@class,'components-dropdown-menu__menu-item')]//span[contains(text(), 'Empty Cart')]`
+ );
+ // Clicks the element by running the JavaScript HTMLElement.click() method on the given element in the
+ // browser context, which fires a click event. It doesn't scroll the page or move the mouse and works
+ // even if the element is off-screen.
+ await emptyCartButton.evaluate( ( b ) => b.click() );
- it( 'shows empty cart when changing the view', async () => {
- await page.waitForSelector( block.class ).catch( () => {
- throw new Error(
- `Could not find an element with class ${ block.class } - the block probably did not load correctly.`
- );
- } );
- await selectBlockByName( block.slug );
- await clickBlockToolbarButton( 'Switch view', 'ariaLabel' );
- const emptyCartButton = await page.waitForXPath(
- `//button[contains(@class,'components-dropdown-menu__menu-item')]//span[contains(text(), 'Empty Cart')]`
- );
- // Clicks the element by running the JavaScript HTMLElement.click() method on the given element in the
- // browser context, which fires a click event. It doesn't scroll the page or move the mouse and works
- // even if the element is off-screen.
- await emptyCartButton.evaluate( ( b ) => b.click() );
+ await expect( page ).not.toMatchElement(
+ `${ emptyCartBlock.class }[hidden]`
+ );
+ await expect( page ).toMatchElement(
+ `${ filledCartBlock.class }[hidden]`
+ );
- await expect( page ).not.toMatchElement(
- `${ emptyCartBlock.class }[hidden]`
- );
- await expect( page ).toMatchElement(
- `${ filledCartBlock.class }[hidden]`
- );
+ await selectBlockByName( block.slug );
+ await clickBlockToolbarButton( 'Switch view', 'ariaLabel' );
+ const filledCartButton = await page.waitForXPath(
+ `//button[contains(@class,'components-dropdown-menu__menu-item')]//span[contains(text(), 'Filled Cart')]`
+ );
+ await filledCartButton.evaluate( ( b ) => b.click() );
- await selectBlockByName( block.slug );
- await clickBlockToolbarButton( 'Switch view', 'ariaLabel' );
- const filledCartButton = await page.waitForXPath(
- `//button[contains(@class,'components-dropdown-menu__menu-item')]//span[contains(text(), 'Filled Cart')]`
- );
- await filledCartButton.evaluate( ( b ) => b.click() );
+ await expect( page ).toMatchElement(
+ `${ emptyCartBlock.class }[hidden]`
+ );
+ await expect( page ).not.toMatchElement(
+ `${ filledCartBlock.class }[hidden]`
+ );
+ } );
- await expect( page ).toMatchElement(
- `${ emptyCartBlock.class }[hidden]`
- );
- await expect( page ).not.toMatchElement(
- `${ filledCartBlock.class }[hidden]`
+ describe( 'attributes', () => {
+ beforeEach( async () => {
+ await openDocumentSettingsSidebar();
+ await selectBlockByName(
+ 'woocommerce/cart-order-summary-shipping-block'
);
} );
- describe( 'attributes', () => {
- beforeEach( async () => {
- await openDocumentSettingsSidebar();
- await selectBlockByName(
- 'woocommerce/cart-order-summary-shipping-block'
- );
- } );
-
- it( 'can toggle Shipping calculator', async () => {
- const selector = ` .wc-block-components-totals-shipping__change-address-button`;
- const toggleLabel = await findLabelWithText(
- 'Shipping calculator'
- );
- await expect( toggleLabel ).toToggleElement( selector );
- } );
+ it( 'can toggle Shipping calculator', async () => {
+ const selector = ` .wc-block-components-totals-shipping__change-address-button`;
+ const toggleLabel = await findLabelWithText(
+ 'Shipping calculator'
+ );
+ await expect( toggleLabel ).toToggleElement( selector );
} );
} );
} );
diff --git a/tests/e2e/specs/backend/checkout.test.js b/tests/e2e/specs/backend/checkout.test.js
index bff117dbe..195bcf413 100644
--- a/tests/e2e/specs/backend/checkout.test.js
+++ b/tests/e2e/specs/backend/checkout.test.js
@@ -38,145 +38,107 @@ if ( process.env.WOOCOMMERCE_BLOCKS_PHASE < 2 ) {
describe( `${ block.name } Block`, () => {
describe( 'in page editor', () => {
- describe( `before compatibility notice is dismissed`, () => {
- beforeAll( async () => {
- // make sure CartCheckoutCompatibilityNotice will appear
- await page.evaluate( () => {
- window.localStorage.removeItem(
- 'wc-blocks_dismissed_compatibility_notices'
- );
- } );
- await visitBlockPage( `${ block.name } Block` );
- } );
+ beforeAll( async () => {
+ await switchUserToAdmin();
+ await visitBlockPage( `${ block.name } Block` );
+ } );
- it( 'shows compatibility notice', async () => {
- const compatibilityNoticeTitle = await page.$x(
- `//h1[contains(text(), 'Compatibility notice')]`
- );
- expect( compatibilityNoticeTitle.length ).toBe( 1 );
- } );
+ it( 'can only be inserted once', async () => {
+ await insertBlockDontWaitForInsertClose( block.name );
+ await closeInserter();
+ expect( await getAllBlocks() ).toHaveLength( 1 );
} );
- describe( 'after compatibility notice is dismissed', () => {
- beforeAll( async () => {
- await page.evaluate( () => {
- window.localStorage.setItem(
- 'wc-blocks_dismissed_compatibility_notices',
- '["checkout"]'
- );
- } );
- await switchUserToAdmin();
- await visitBlockPage( `${ block.name } Block` );
- } );
- afterAll( async () => {
- await page.evaluate( () => {
- window.localStorage.removeItem(
- 'wc-blocks_dismissed_compatibility_notices'
- );
- } );
- } );
+ it( 'renders without crashing', async () => {
+ await expect( page ).toRenderBlock( block );
+ } );
- it( 'can only be inserted once', async () => {
- await insertBlockDontWaitForInsertClose( block.name );
- await closeInserter();
- expect( await getAllBlocks() ).toHaveLength( 1 );
+ describe( 'attributes', () => {
+ beforeEach( async () => {
+ await openDocumentSettingsSidebar();
+ await selectBlockByName( block.slug );
} );
- it( 'renders without crashing', async () => {
- await expect( page ).toRenderBlock( block );
+ it( 'can enable dark mode inputs', async () => {
+ const toggleLabel = await findLabelWithText(
+ 'Dark mode inputs'
+ );
+ await toggleLabel.click();
+
+ await expect( page ).toMatchElement(
+ `.wc-block-checkout.has-dark-controls`
+ );
+
+ await toggleLabel.click();
+
+ await expect( page ).not.toMatchElement(
+ `.wc-block-checkout.has-dark-controls`
+ );
} );
+ } );
- describe( 'attributes', () => {
- beforeEach( async () => {
- await openDocumentSettingsSidebar();
- await selectBlockByName( block.slug );
- } );
+ describe( 'shipping address block attributes', () => {
+ beforeEach( async () => {
+ await openDocumentSettingsSidebar();
+ await selectBlockByName(
+ 'woocommerce/checkout-shipping-address-block'
+ );
+ } );
- it( 'can enable dark mode inputs', async () => {
- const toggleLabel = await findLabelWithText(
- 'Dark mode inputs'
- );
- await toggleLabel.click();
+ describe( 'Company input', () => {
+ const selector = `${ block.class } #shipping-company`;
- await expect( page ).toMatchElement(
- `.wc-block-checkout.has-dark-controls`
- );
+ it( 'visibility can be toggled', async () => {
+ await expect( 'Company' ).toToggleElement( selector );
+ } );
+ it( 'required attribute can be toggled', async () => {
+ // Company is disabled by default, so first we need to enable it.
+ const toggleLabel = await findLabelWithText( 'Company' );
await toggleLabel.click();
-
- await expect( page ).not.toMatchElement(
- `.wc-block-checkout.has-dark-controls`
- );
+ await expect(
+ 'Require company name?'
+ ).toToggleRequiredAttrOf( selector );
} );
} );
- describe( 'shipping address block attributes', () => {
- beforeEach( async () => {
- await openDocumentSettingsSidebar();
- await selectBlockByName(
- 'woocommerce/checkout-shipping-address-block'
+ describe( 'Apartment input', () => {
+ it( 'visibility can be toggled', async () => {
+ const selector = `${ block.class } #shipping-address_2`;
+ await expect( 'Apartment, suite, etc.' ).toToggleElement(
+ selector
);
} );
+ } );
- describe( 'Company input', () => {
- const selector = `${ block.class } #shipping-company`;
-
- it( 'visibility can be toggled', async () => {
- await expect( 'Company' ).toToggleElement( selector );
- } );
-
- it( 'required attribute can be toggled', async () => {
- // Company is disabled by default, so first we need to enable it.
- const toggleLabel = await findLabelWithText(
- 'Company'
- );
- await toggleLabel.click();
- await expect(
- 'Require company name?'
- ).toToggleRequiredAttrOf( selector );
- } );
- } );
+ describe( 'Phone input', () => {
+ const selector = `${ block.class } #shipping-phone`;
- describe( 'Apartment input', () => {
- it( 'visibility can be toggled', async () => {
- const selector = `${ block.class } #shipping-address_2`;
- await expect(
- 'Apartment, suite, etc.'
- ).toToggleElement( selector );
- } );
+ it( 'visibility can be toggled', async () => {
+ await expect( 'Phone' ).toToggleElement( selector );
} );
- describe( 'Phone input', () => {
- const selector = `${ block.class } #shipping-phone`;
-
- it( 'visibility can be toggled', async () => {
- await expect( 'Phone' ).toToggleElement( selector );
- } );
-
- it( 'required attribute can be toggled', async () => {
- await expect(
- 'Require phone number?'
- ).toToggleRequiredAttrOf( selector );
- } );
+ it( 'required attribute can be toggled', async () => {
+ await expect(
+ 'Require phone number?'
+ ).toToggleRequiredAttrOf( selector );
} );
} );
+ } );
+
+ describe( 'action block attributes', () => {
+ beforeEach( async () => {
+ await openDocumentSettingsSidebar();
+ await selectBlockByName( 'woocommerce/checkout-actions-block' );
+ } );
- describe( 'action block attributes', () => {
- beforeEach( async () => {
- await openDocumentSettingsSidebar();
- await selectBlockByName(
- 'woocommerce/checkout-actions-block'
+ describe( 'Return to cart link', () => {
+ it( 'visibility can be toggled', async () => {
+ const selector = `${ block.class } .wc-block-components-checkout-return-to-cart-button`;
+ const toggleLabel = await findLabelWithText(
+ 'Show a "Return to Cart" link'
);
- } );
-
- describe( 'Return to cart link', () => {
- it( 'visibility can be toggled', async () => {
- const selector = `${ block.class } .wc-block-components-checkout-return-to-cart-button`;
- const toggleLabel = await findLabelWithText(
- 'Show a "Return to Cart" link'
- );
- await expect( toggleLabel ).toToggleElement( selector );
- } );
+ await expect( toggleLabel ).toToggleElement( selector );
} );
} );
} );
diff --git a/tests/e2e/specs/backend/filter-products-by-stock.test.js b/tests/e2e/specs/backend/filter-products-by-stock.test.js
index 917cb0296..9e112db43 100644
--- a/tests/e2e/specs/backend/filter-products-by-stock.test.js
+++ b/tests/e2e/specs/backend/filter-products-by-stock.test.js
@@ -43,14 +43,16 @@ describe( `${ block.name } Block`, () => {
} );
it( 'product count can be toggled', async () => {
- const toggleLabel = await findLabelWithText( 'Product count' );
+ const toggleLabel = await findLabelWithText(
+ 'Display product count'
+ );
await expect( toggleLabel ).toToggleElement(
`${ block.class } .wc-filter-element-label-list-count`
);
} );
it( 'filter button can be toggled', async () => {
- const toggleLabel = await findLabelWithText( 'Filter button' );
+ const toggleLabel = await findLabelWithText( 'Apply filters' );
await expect( toggleLabel ).toToggleElement(
`${ block.class } .wc-block-filter-submit-button`
);
diff --git a/tests/e2e/specs/backend/price-filter.test.js b/tests/e2e/specs/backend/price-filter.test.js
index 6acd0887d..2f26a88d3 100644
--- a/tests/e2e/specs/backend/price-filter.test.js
+++ b/tests/e2e/specs/backend/price-filter.test.js
@@ -17,7 +17,7 @@ import {
import { insertBlockDontWaitForInsertClose } from '../../utils.js';
const block = {
- name: 'Filter Products by Price',
+ name: 'Filter by Price',
slug: 'woocommerce/price-filter',
class: '.wp-block-woocommerce-price-filter',
};
@@ -91,15 +91,15 @@ describe( `${ block.name } Block`, () => {
);
} );
- it( 'allows you to toggle go button', async () => {
+ it( 'allows you to toggle filter button', async () => {
await expect( page ).toClick( 'label', {
- text: 'Filter button',
+ text: "Show 'Apply filters' button",
} );
await expect( page ).toMatchElement(
'button.wc-block-filter-submit-button.wc-block-price-filter__button'
);
await expect( page ).toClick( 'label', {
- text: 'Filter button',
+ text: "Show 'Apply filters' button",
} );
} );
} );
diff --git a/tests/e2e/specs/backend/product-search-legacy.test.ts b/tests/e2e/specs/backend/product-search-legacy.test.ts
new file mode 100644
index 000000000..51a8c2919
--- /dev/null
+++ b/tests/e2e/specs/backend/product-search-legacy.test.ts
@@ -0,0 +1,41 @@
+/**
+ * External dependencies
+ */
+import { switchUserToAdmin } from '@wordpress/e2e-test-utils';
+import { visitBlockPage } from '@woocommerce/blocks-test-utils';
+
+/**
+ * Internal dependencies
+ */
+import { GUTENBERG_EDITOR_CONTEXT, describeOrSkip } from '../../utils';
+
+describeOrSkip( GUTENBERG_EDITOR_CONTEXT === 'gutenberg' )(
+ 'Product Search Legacy Block',
+ () => {
+ beforeAll( async () => {
+ await switchUserToAdmin();
+ await visitBlockPage( 'Product Search Legacy Block' );
+ } );
+
+ it( 'render the upgrade prompt', async () => {
+ await expect( page ).toMatch(
+ 'This version of the Product Search block is outdated. Upgrade to continue using.'
+ );
+ await expect( page ).toMatch( 'Upgrade Block' );
+ } );
+
+ it( 'clicking the upgrade button convert the legacy block to core/search variation', async () => {
+ await page.click( '.block-editor-warning__action button' );
+
+ await expect( page ).toMatchElement( '.wp-block-search' );
+
+ await expect( page ).toMatchElement( '.wp-block-search__label', {
+ text: 'Search',
+ } );
+
+ await expect( page ).toMatchElement(
+ '.wp-block-search__input[value="Search products…"]'
+ );
+ } );
+ }
+);
diff --git a/tests/e2e/specs/backend/product-search.test.js b/tests/e2e/specs/backend/product-search.test.js
deleted file mode 100644
index b4189ab18..000000000
--- a/tests/e2e/specs/backend/product-search.test.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * External dependencies
- */
-import {
- switchUserToAdmin,
- getEditedPostContent,
- openDocumentSettingsSidebar,
-} from '@wordpress/e2e-test-utils';
-import { clearAndFillInput } from '@woocommerce/e2e-utils';
-import {
- findLabelWithText,
- visitBlockPage,
-} from '@woocommerce/blocks-test-utils';
-
-const block = {
- name: 'Product Search',
- slug: 'woocommerce/product-search',
- class: '.wc-block-product-search',
-};
-
-describe( `${ block.name } Block`, () => {
- beforeAll( async () => {
- await switchUserToAdmin();
- await visitBlockPage( `${ block.name } Block` );
- } );
-
- it( 'renders without crashing', async () => {
- await expect( page ).toRenderBlock( block );
- } );
-
- it( 'can toggle field label', async () => {
- await openDocumentSettingsSidebar();
- await page.click( block.class );
- const selector = `${ block.class } .wc-block-product-search__label`;
- const toggleLabel = await findLabelWithText(
- 'Show search field label'
- );
- await expect( toggleLabel ).toToggleElement( selector );
- } );
-
- it( 'can change field labels in editor', async () => {
- await expect( page ).toFill(
- 'textarea.wc-block-product-search__label',
- 'I am a new label'
- );
-
- await expect( page ).toFill(
- '.wc-block-product-search__field input',
- 'I am a new placeholder'
- );
-
- await clearAndFillInput(
- 'textarea.wc-block-product-search__label',
- 'The Label'
- );
- await clearAndFillInput(
- '.wc-block-product-search__field input',
- 'The Placeholder'
- );
-
- expect( await getEditedPostContent() ).toMatchSnapshot();
- } );
-} );
diff --git a/tests/e2e/specs/backend/product-search.test.ts b/tests/e2e/specs/backend/product-search.test.ts
new file mode 100644
index 000000000..fba265b85
--- /dev/null
+++ b/tests/e2e/specs/backend/product-search.test.ts
@@ -0,0 +1,46 @@
+/**
+ * External dependencies
+ */
+import {
+ switchUserToAdmin,
+ createNewPost,
+ insertBlock,
+} from '@wordpress/e2e-test-utils';
+
+/**
+ * Internal dependencies
+ */
+import { GUTENBERG_EDITOR_CONTEXT, describeOrSkip } from '../../utils';
+
+const block = {
+ name: 'Product Search',
+ slug: 'core/search',
+ class: '.wp-block-search',
+};
+
+describeOrSkip( GUTENBERG_EDITOR_CONTEXT === 'gutenberg' )(
+ `${ block.name } Block`,
+ () => {
+ it( 'inserting Product Search block renders the core/search variation', async () => {
+ await switchUserToAdmin();
+
+ await createNewPost( {
+ postType: 'page',
+ } );
+
+ await insertBlock( block.name );
+
+ await page.waitForSelector( block.class );
+
+ await expect( page ).toRenderBlock( block );
+
+ await expect( page ).toMatchElement( '.wp-block-search__label', {
+ text: 'Search',
+ } );
+
+ await expect( page ).toMatchElement(
+ '.wp-block-search__input[value="Search products…"]'
+ );
+ } );
+ }
+);
diff --git a/tests/e2e/specs/backend/site-editing-templates.test.js b/tests/e2e/specs/backend/site-editing-templates.test.js
index 6e205e56c..e0e4c15e0 100644
--- a/tests/e2e/specs/backend/site-editing-templates.test.js
+++ b/tests/e2e/specs/backend/site-editing-templates.test.js
@@ -24,6 +24,7 @@ import {
getAllTemplates,
goToTemplateEditor,
goToTemplatesList,
+ GUTENBERG_EDITOR_CONTEXT,
saveTemplate,
useTheme,
} from '../../utils';
@@ -122,6 +123,21 @@ const CUSTOMIZED_STRING = 'My awesome customization';
const WOOCOMMERCE_ID = 'woocommerce/woocommerce';
const WOOCOMMERCE_PARSED_ID = 'WooCommerce';
+/**
+ * This is a workaround to avoid the E2E test suite failing when the test site has Gutenberg enabled.
+ * The problem is that the current version of Gutenberg in WordPress Core and the version of the plugin Gutenberg generate different snapshots.
+ * It is not easy having different snapshots for the same test: theoretically, we should have a dedicated snapshot when Gutenberg is enabled and another one when Gutenberg is disabled.
+ * We can remove this workaround when WordPress 6.1 is released.
+ *
+ * @todo Remove runOnlyWhenGutenbergIsDisabled function and relative workarounds when WordPress 6.1 is released.
+ */
+
+const runOnlyWhenGutenbergIsDisabled = ( fn ) => {
+ if ( GUTENBERG_EDITOR_CONTEXT === 'core' ) {
+ fn();
+ }
+};
+
describe( 'Store Editing Templates', () => {
useTheme( 'emptytheme' );
@@ -151,23 +167,26 @@ describe( 'Store Editing Templates', () => {
}
} );
- it( 'should contain the "WooCommerce Single Product Block" classic template', async () => {
- await goToTemplateEditor( {
- postId: 'woocommerce/woocommerce//single-product',
- } );
+ runOnlyWhenGutenbergIsDisabled( () =>
+ it( 'should contain the "WooCommerce Single Product Block" classic template', async () => {
+ await goToTemplateEditor( {
+ postId: 'woocommerce/woocommerce//single-product',
+ } );
- const [ classicBlock ] = await filterCurrentBlocks(
- ( block ) => block.name === BLOCK_DATA[ 'single-product' ].name
- );
-
- // Comparing only the `template` property currently
- // because the other properties seem to be slightly unreliable.
- // Investigation pending.
- expect( classicBlock.attributes.template ).toBe(
- BLOCK_DATA[ 'single-product' ].attributes.template
- );
- expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
- } );
+ const [ classicBlock ] = await filterCurrentBlocks(
+ ( block ) =>
+ block.name === BLOCK_DATA[ 'single-product' ].name
+ );
+
+ // Comparing only the `template` property currently
+ // because the other properties seem to be slightly unreliable.
+ // Investigation pending.
+ expect( classicBlock.attributes.template ).toBe(
+ BLOCK_DATA[ 'single-product' ].attributes.template
+ );
+ expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
+ } )
+ );
it( 'should show the action menu if the template has been customized by the user', async () => {
const EXPECTED_TEMPLATE = {
@@ -244,20 +263,23 @@ describe( 'Store Editing Templates', () => {
}
} );
- it( 'should contain the "WooCommerce Product Grid Block" classic template', async () => {
- await goToTemplateEditor( {
- postId: 'woocommerce/woocommerce//archive-product',
- } );
+ runOnlyWhenGutenbergIsDisabled( () =>
+ it( 'should contain the "WooCommerce Product Grid Block" classic template', async () => {
+ await goToTemplateEditor( {
+ postId: 'woocommerce/woocommerce//archive-product',
+ } );
- const [ classicBlock ] = await filterCurrentBlocks(
- ( block ) => block.name === BLOCK_DATA[ 'archive-product' ].name
- );
+ const [ classicBlock ] = await filterCurrentBlocks(
+ ( block ) =>
+ block.name === BLOCK_DATA[ 'archive-product' ].name
+ );
- expect( classicBlock.attributes.template ).toBe(
- BLOCK_DATA[ 'archive-product' ].attributes.template
- );
- expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
- } );
+ expect( classicBlock.attributes.template ).toBe(
+ BLOCK_DATA[ 'archive-product' ].attributes.template
+ );
+ expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
+ } )
+ );
it( 'should show the action menu if the template has been customized by the user', async () => {
const EXPECTED_TEMPLATE = {
@@ -337,21 +359,23 @@ describe( 'Store Editing Templates', () => {
}
} );
- it( 'should contain the "WooCommerce Product Taxonomy Block" classic template', async () => {
- await goToTemplateEditor( {
- postId: 'woocommerce/woocommerce//taxonomy-product_cat',
- } );
+ runOnlyWhenGutenbergIsDisabled( () =>
+ it( 'should contain the "WooCommerce Product Taxonomy Block" classic template', async () => {
+ await goToTemplateEditor( {
+ postId: 'woocommerce/woocommerce//taxonomy-product_cat',
+ } );
- const [ classicBlock ] = await filterCurrentBlocks(
- ( block ) =>
- block.name === BLOCK_DATA[ 'taxonomy-product_cat' ].name
- );
+ const [ classicBlock ] = await filterCurrentBlocks(
+ ( block ) =>
+ block.name === BLOCK_DATA[ 'taxonomy-product_cat' ].name
+ );
- expect( classicBlock.attributes.template ).toBe(
- BLOCK_DATA[ 'taxonomy-product_cat' ].attributes.template
- );
- expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
- } );
+ expect( classicBlock.attributes.template ).toBe(
+ BLOCK_DATA[ 'taxonomy-product_cat' ].attributes.template
+ );
+ expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
+ } )
+ );
it( 'should show the action menu if the template has been customized by the user', async () => {
const EXPECTED_TEMPLATE = {
@@ -425,21 +449,23 @@ describe( 'Store Editing Templates', () => {
}
} );
- it( 'should contain the "WooCommerce Product Taxonomy Block" classic template', async () => {
- await goToTemplateEditor( {
- postId: 'woocommerce/woocommerce//taxonomy-product_tag',
- } );
+ runOnlyWhenGutenbergIsDisabled( () =>
+ it( 'should contain the "WooCommerce Product Taxonomy Block" classic template', async () => {
+ await goToTemplateEditor( {
+ postId: 'woocommerce/woocommerce//taxonomy-product_tag',
+ } );
- const [ classicBlock ] = await filterCurrentBlocks(
- ( block ) =>
- block.name === BLOCK_DATA[ 'taxonomy-product_tag' ].name
- );
+ const [ classicBlock ] = await filterCurrentBlocks(
+ ( block ) =>
+ block.name === BLOCK_DATA[ 'taxonomy-product_tag' ].name
+ );
- expect( classicBlock.attributes.template ).toBe(
- BLOCK_DATA[ 'taxonomy-product_tag' ].attributes.template
- );
- expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
- } );
+ expect( classicBlock.attributes.template ).toBe(
+ BLOCK_DATA[ 'taxonomy-product_tag' ].attributes.template
+ );
+ expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
+ } )
+ );
it( 'should show the action menu if the template has been customized by the user', async () => {
const EXPECTED_TEMPLATE = {
@@ -513,20 +539,23 @@ describe( 'Store Editing Templates', () => {
}
} );
- it( 'should contain the "WooCommerce Product Grid Block" classic template', async () => {
- await goToTemplateEditor( {
- postId: 'woocommerce/woocommerce//product-search-results',
- } );
-
- const [ classicBlock ] = await filterCurrentBlocks(
- ( block ) => block.name === BLOCK_DATA[ 'archive-product' ].name
- );
+ runOnlyWhenGutenbergIsDisabled( () =>
+ it( 'should contain the "WooCommerce Product Grid Block" classic template', async () => {
+ await goToTemplateEditor( {
+ postId: 'woocommerce/woocommerce//product-search-results',
+ } );
- expect( classicBlock.attributes.template ).toBe(
- BLOCK_DATA[ 'product-search-results' ].attributes.template
- );
- expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
- } );
+ const [ classicBlock ] = await filterCurrentBlocks(
+ ( block ) =>
+ block.name === BLOCK_DATA[ 'archive-product' ].name
+ );
+
+ expect( classicBlock.attributes.template ).toBe(
+ BLOCK_DATA[ 'product-search-results' ].attributes.template
+ );
+ expect( await getCurrentSiteEditorContent() ).toMatchSnapshot();
+ } )
+ );
it( 'should show the action menu if the template has been customized by the user', async () => {
const EXPECTED_TEMPLATE = {
diff --git a/tests/e2e/specs/shopper/active-filters.test.ts b/tests/e2e/specs/shopper/active-filters.test.ts
index e6b07dd3d..5a0f3597e 100644
--- a/tests/e2e/specs/shopper/active-filters.test.ts
+++ b/tests/e2e/specs/shopper/active-filters.test.ts
@@ -59,9 +59,9 @@ const FILTER_CAPACITY_PROPERTY = '128gb';
const { selectors } = block;
const insertBlocks = async () => {
- await insertBlock( 'Filter Products by Price' );
+ await insertBlock( 'Filter by Price' );
await insertBlock( 'Filter Products by Stock' );
- await insertBlock( 'Filter Products by Attribute' );
+ await insertBlock( 'Filter by Attribute' );
await insertBlock( block.name );
};
@@ -84,7 +84,7 @@ const getActiveFilterTypeText = () =>
const getActiveFilterNameText = () =>
page.$eval(
selectors.frontend.activeFilterName,
- ( el ) => ( el as HTMLElement ).childNodes[ 0 ].textContent
+ ( el ) => ( el as HTMLElement ).childNodes[ 1 ].textContent
);
describe( 'Shopper → Active Filters Block', () => {
diff --git a/tests/e2e/specs/shopper/filter-products-by-attribute.test.ts b/tests/e2e/specs/shopper/filter-products-by-attribute.test.ts
index 2154af8a4..d709b14ad 100644
--- a/tests/e2e/specs/shopper/filter-products-by-attribute.test.ts
+++ b/tests/e2e/specs/shopper/filter-products-by-attribute.test.ts
@@ -24,14 +24,15 @@ import {
} from '../../utils';
const block = {
- name: 'Filter Products by Attribute',
+ name: 'Filter by Attribute',
slug: 'woocommerce/attribute-filter',
class: '.wc-block-attribute-filter',
selectors: {
editor: {
firstAttributeInTheList:
'.woocommerce-search-list__list > li > label > input.woocommerce-search-list__item-input',
- filterButtonToggle: "//label[text()='Filter button']",
+ filterButtonToggle:
+ '//label[text()="Show \'Apply filters\' button"]',
doneButton: '.wc-block-attribute-filter__selection > button',
},
frontend: {
diff --git a/tests/e2e/specs/shopper/filter-products-by-price.test.ts b/tests/e2e/specs/shopper/filter-products-by-price.test.ts
index 87062c4e5..416914067 100644
--- a/tests/e2e/specs/shopper/filter-products-by-price.test.ts
+++ b/tests/e2e/specs/shopper/filter-products-by-price.test.ts
@@ -24,12 +24,13 @@ import {
import { clickLink } from '../../../utils';
const block = {
- name: 'Filter Products by Price',
+ name: 'Filter by Price',
slug: 'woocommerce/price-filter',
class: '.wc-block-price-filter',
selectors: {
editor: {
- filterButtonToggle: "//label[text()='Filter button']",
+ filterButtonToggle:
+ '//label[text()="Show \'Apply filters\' button"]',
},
frontend: {
priceMaxAmount: '.wc-block-price-filter__amount--max',
@@ -38,7 +39,7 @@ const block = {
submitButton: '.wc-block-components-filter-submit-button',
},
},
- urlSearchParamWhenFilterIsApplied: '?max_price=1.99',
+ urlSearchParamWhenFilterIsApplied: '?max_price=2',
foundProduct: '32GB USB Stick',
};
@@ -55,8 +56,7 @@ const setMaxPrice = async () => {
await page.keyboard.down( 'Shift' );
await page.keyboard.press( 'Home' );
await page.keyboard.up( 'Shift' );
- await page.keyboard.press( 'Backspace' );
- await page.keyboard.type( '1.99' );
+ await page.keyboard.type( '2' );
await page.keyboard.press( 'Tab' );
};
diff --git a/tests/e2e/specs/shopper/filter-products-by-stock.test.ts b/tests/e2e/specs/shopper/filter-products-by-stock.test.ts
index a6c5726c0..9fd562de6 100644
--- a/tests/e2e/specs/shopper/filter-products-by-stock.test.ts
+++ b/tests/e2e/specs/shopper/filter-products-by-stock.test.ts
@@ -29,7 +29,8 @@ const block = {
class: '.wc-block-stock-filter',
selectors: {
editor: {
- filterButtonToggle: "//label[text()='Filter button']",
+ filterButtonToggle:
+ '//label[text()="Show \'Apply filters\' button"]',
},
frontend: {
productsList: '.wc-block-grid__products > li',
diff --git a/tests/e2e/specs/shopper/product-search.test.ts b/tests/e2e/specs/shopper/product-search.test.ts
new file mode 100644
index 000000000..88fba01fe
--- /dev/null
+++ b/tests/e2e/specs/shopper/product-search.test.ts
@@ -0,0 +1,43 @@
+/**
+ * Internal dependencies
+ */
+import { GUTENBERG_EDITOR_CONTEXT, describeOrSkip } from '../../utils';
+import { shopper } from '../../../utils';
+import { getTextContent } from '../../page-utils';
+
+describeOrSkip( GUTENBERG_EDITOR_CONTEXT === 'gutenberg' )(
+ `Shopper → Product Search`,
+ () => {
+ beforeEach( async () => {
+ await shopper.block.goToBlockPage( 'Product Search' );
+ await page.waitForSelector( '.wp-block-search' );
+ } );
+
+ it( 'should render product variation', async () => {
+ const [ postType ] = await getTextContent(
+ '.wp-block-search input[name="post_type"]'
+ );
+ await expect( postType ).toBe( 'product' );
+ } );
+
+ it( 'should be able to search for products', async () => {
+ await page.type( '.wp-block-search input[name="s"]', 'Stick' );
+
+ await Promise.all( [
+ page.waitForNavigation(),
+ page.keyboard.press( 'Enter' ),
+ ] );
+
+ const products = await page.$$( 'ul.products.columns-3 > li' );
+
+ expect( products ).toHaveLength( 2 );
+
+ const productTitles = await getTextContent(
+ 'ul.products.columns-3 .woocommerce-loop-product__title'
+ );
+
+ expect( productTitles ).toContain( '32GB USB Stick' );
+ expect( productTitles ).toContain( '128GB USB Stick' );
+ } );
+ }
+);
diff --git a/tests/e2e/utils.js b/tests/e2e/utils.js
index 3a4f127c1..b9fe0e201 100644
--- a/tests/e2e/utils.js
+++ b/tests/e2e/utils.js
@@ -438,3 +438,18 @@ export const openBlockEditorSettings = async ( { isFSEEditor = false } ) => {
export const waitForAllProductsBlockLoaded = async () => {
await page.waitForSelector( SELECTORS.allProductsBlock.productsList );
};
+
+/**
+ * Execute or skip the test suite base on the provided condition.
+ *
+ * @param {boolean} condition Condition to execute test suite.
+ */
+export const describeOrSkip = ( condition ) =>
+ condition ? describe : describe.skip;
+
+/**
+ * Execute or skip the test base on the provided condition.
+ *
+ * @param {boolean} condition Condition to execute test.
+ */
+export const itOrSkip = ( condition ) => ( condition ? it : it.skip );
diff --git a/woocommerce-gutenberg-products-block.php b/woocommerce-gutenberg-products-block.php
index d45b7efb2..d4e23b0c9 100644
--- a/woocommerce-gutenberg-products-block.php
+++ b/woocommerce-gutenberg-products-block.php
@@ -3,14 +3,14 @@
* Plugin Name: WooCommerce Blocks
* Plugin URI: https://github.com/woocommerce/woocommerce-gutenberg-products-block
* Description: WooCommerce blocks for the Gutenberg editor.
- * Version: 8.3.0-dev
+ * Version: 8.6.0-dev
* Author: Automattic
* Author URI: https://woocommerce.com
* Text Domain: woo-gutenberg-products-block
* Requires at least: 6.0
* Requires PHP: 7.0
- * WC requires at least: 6.6
- * WC tested up to: 6.7
+ * WC requires at least: 6.7
+ * WC tested up to: 6.8
*
* @package WooCommerce\Blocks
* @internal This file is only used when running as a feature plugin.
@@ -88,7 +88,7 @@ function woocommerce_blocks_is_development_version() {
if ( woocommerce_blocks_is_development_version() && ! defined( 'JETPACK_AUTOLOAD_DEV' ) ) {
add_action(
'admin_notices',
- function() {
+ function () {
echo '';
printf(
/* translators: %1$s is referring to a php constant name, %2$s is referring to the wp-config.php file. */
@@ -130,20 +130,20 @@ function() {
*/
add_action(
'admin_notices',
- function() {
+ function () {
?>
-
-
- composer install',
- '' . esc_html( str_replace( ABSPATH, '', __DIR__ ) ) . '
'
- );
- ?>
-
-
+
+
+ composer install',
+ '' . esc_html( str_replace( ABSPATH, '', __DIR__ ) ) . '
'
+ );
+ ?>
+
+