From c5bdcfffc49b38c6e110d44c775290e9aaea300d Mon Sep 17 00:00:00 2001 From: Thomas Roberts <5656702+opr@users.noreply.github.com> Date: Fri, 12 Aug 2022 15:23:08 +0100 Subject: [PATCH] Add dismissible compatibility notice to sidebar when editing Cart and Checkout (#6869) * Add default page notice * show notice all inner blocks * support flow when page isnt saved * switch from where we get the current post id * update lock * fix types * Remove old compatibility notices from Cart and Checkout * Move useCompatibilityNotice to sidebar-compatibility-notice directory * Remove old CartCheckoutCompatibilityNotice * Create sidebar compatibility notice hoc * Add isCartOrCheckoutOrInnerBlock function * Refactor defaultNotice to use new isCartOrCheckoutOrInnerBlock func * Remove BlockSettings from checkout edit and export from checkout-shared * Change so component still renders, it is just hidden with display: none This is required because when it returns null the component gets skipped from being added to the Slot, then when it does return a component, then it gets rendered at the bottom of the Slot. By ensuring it always renders we can have it at the top all the time. * Set the priorities of the hoc filters so compat notice renders first * Make isCartOrCheckoutInnerBlock a hook * Remove old compatibility notice related tests * Remove BlockSettings from Cart * Remove withDefaultNotice hoc * Include DefaultNotice in compatibility notice * Remove DefaultNotice from Checkout * Rename withSidebarCompatibilityNotice to withSidebarNotices This is because it includes the sidebar compatibility notice and the default notices * Remove useIsCartOrCheckoutOrInnerBlock hook * Remove compatibility notice code from tests * Revert DefaultNotice back to the old one * Remove unused components * Remove withBlockSettings HOC and fix TS types This is an abstraction that is no longer required, we can just include BlockSettings in the Cart and Checkout blocks * Remove CartCheckoutFeedbackPrompt from BlockSettings It will be included in sidebar-notices instead * Fix TS Types in DefaultNotice * Add BlockSettings to cart and checkout edit * Editor: Add feedback box to the Cart & Checkout Inner Blocks (#6881) * Show "Feedback prompt" for all inner blocks * Fix the "feedback" notice position for these blocks The "checkout fields", "checkout billing address" and "checkout shipping address" have the addressFields option which gets rerendered and placed at the bottom of the inspector controls. * Tidy up the address-fields hoc * Use correct block name to check for billing or shipping address * Revert "Editor: Add feedback box to the Cart & Checkout Inner Blocks (#6881)" This reverts commit 5f3d6cf15ce08d9c303e62ec3e0d0315ead1281f. * Add hack to get feedback prompt to render last * Fix TS errors for context and attributes * Include CartCheckoutFeedbackPrompt in accountcontrols & addresscontrols * Do not include feedback prompt if on an address block or contact info * Remove unused hoc for address fields Co-authored-by: Nadir Seghir Co-authored-by: Saad Tarhi --- .eslintrc.js | 3 + .../return-to-cart-button/index.tsx | 8 +- .../block-settings/index.tsx | 39 + .../default-notice/editor.scss | 11 + .../default-notice/index.tsx | 58 + .../js/blocks/cart-checkout-shared/index.js | 3 + .../sidebar-notices/editor.scss | 11 + .../sidebar-notices/index.tsx | 100 + assets/js/blocks/cart/edit.js | 81 +- assets/js/blocks/cart/editor.scss | 4 - assets/js/blocks/checkout/context.ts | 9 +- assets/js/blocks/checkout/edit.tsx | 86 +- assets/js/blocks/checkout/styles/editor.scss | 3 - assets/js/blocks/checkout/types.ts | 2 +- .../cart-checkout-compatibility-notice.tsx | 84 - .../compatibility-notices/index.tsx | 1 - .../compatibility-notices/style.scss | 31 - .../compatibility-notices/woo-image.js | 132 - .../feedback-prompt/index.js | 50 +- .../sidebar-compatibility-notice/editor.scss | 13 + .../sidebar-compatibility-notice/index.tsx | 48 + .../use-compatibility-notice.ts | 2 +- bin/webpack-helpers.js | 2 + package-lock.json | 2191 ++++++++++++++--- package.json | 5 +- tests/e2e/specs/backend/cart.test.js | 147 +- tests/e2e/specs/backend/checkout.test.js | 190 +- 27 files changed, 2380 insertions(+), 934 deletions(-) create mode 100644 assets/js/blocks/cart-checkout-shared/block-settings/index.tsx create mode 100644 assets/js/blocks/cart-checkout-shared/default-notice/editor.scss create mode 100644 assets/js/blocks/cart-checkout-shared/default-notice/index.tsx create mode 100644 assets/js/blocks/cart-checkout-shared/sidebar-notices/editor.scss create mode 100644 assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx delete mode 100644 assets/js/editor-components/compatibility-notices/cart-checkout-compatibility-notice.tsx delete mode 100644 assets/js/editor-components/compatibility-notices/index.tsx delete mode 100644 assets/js/editor-components/compatibility-notices/style.scss delete mode 100644 assets/js/editor-components/compatibility-notices/woo-image.js create mode 100644 assets/js/editor-components/sidebar-compatibility-notice/editor.scss create mode 100644 assets/js/editor-components/sidebar-compatibility-notice/index.tsx rename assets/js/editor-components/{compatibility-notices => sidebar-compatibility-notice}/use-compatibility-notice.ts (94%) diff --git a/.eslintrc.js b/.eslintrc.js index 535ec728074..331d1c51865 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -29,11 +29,14 @@ module.exports = { '@woocommerce/settings', '@woocommerce/shared-context', '@woocommerce/shared-hocs', + '@woocommerce/data', '@wordpress/a11y', '@wordpress/api-fetch', '@wordpress/block-editor', '@wordpress/compose', '@wordpress/data', + '@wordpress/core-data', + '@wordpress/editor', '@wordpress/escape-html', '@wordpress/hooks', '@wordpress/keycodes', diff --git a/assets/js/base/components/cart-checkout/return-to-cart-button/index.tsx b/assets/js/base/components/cart-checkout/return-to-cart-button/index.tsx index 8f25b1003c9..7c26cb72257 100644 --- a/assets/js/base/components/cart-checkout/return-to-cart-button/index.tsx +++ b/assets/js/base/components/cart-checkout/return-to-cart-button/index.tsx @@ -16,10 +16,14 @@ interface ReturnToCartButtonProps { const ReturnToCartButton = ( { link, -}: ReturnToCartButtonProps ): JSX.Element => { +}: ReturnToCartButtonProps ): JSX.Element | null => { + const cartLink = link || CART_URL; + if ( ! cartLink ) { + return null; + } return ( diff --git a/assets/js/blocks/cart-checkout-shared/block-settings/index.tsx b/assets/js/blocks/cart-checkout-shared/block-settings/index.tsx new file mode 100644 index 00000000000..1b2e4a6917a --- /dev/null +++ b/assets/js/blocks/cart-checkout-shared/block-settings/index.tsx @@ -0,0 +1,39 @@ +/** + * External dependencies + */ +import { InspectorControls } from '@wordpress/block-editor'; +import { PanelBody, ToggleControl } from '@wordpress/components'; +import { __ } from '@wordpress/i18n'; +import { BlockAttributes } from '@wordpress/blocks'; + +export const BlockSettings = ( { + attributes, + setAttributes, +}: { + attributes: BlockAttributes; + setAttributes: ( attrs: BlockAttributes ) => void; +} ) => { + const { hasDarkControls } = attributes; + return ( + + + + setAttributes( { + hasDarkControls: ! hasDarkControls, + } ) + } + /> + + + ); +}; diff --git a/assets/js/blocks/cart-checkout-shared/default-notice/editor.scss b/assets/js/blocks/cart-checkout-shared/default-notice/editor.scss new file mode 100644 index 00000000000..83316569a51 --- /dev/null +++ b/assets/js/blocks/cart-checkout-shared/default-notice/editor.scss @@ -0,0 +1,11 @@ +.wc-block-cart__page-notice { + margin: 0; + padding-right: 16px; + .components-notice__dismiss { + min-width: 24px; + } + svg { + width: 16px; + height: 16px; + } +} diff --git a/assets/js/blocks/cart-checkout-shared/default-notice/index.tsx b/assets/js/blocks/cart-checkout-shared/default-notice/index.tsx new file mode 100644 index 00000000000..8d931fdaf61 --- /dev/null +++ b/assets/js/blocks/cart-checkout-shared/default-notice/index.tsx @@ -0,0 +1,58 @@ +/** + * External dependencies + */ +import { __, sprintf } from '@wordpress/i18n'; +import { Notice } from '@wordpress/components'; +import { createInterpolateElement } from '@wordpress/element'; +import { getAdminLink } from '@woocommerce/settings'; +import { CART_PAGE_ID, CHECKOUT_PAGE_ID } from '@woocommerce/block-settings'; +import { useSelect } from '@wordpress/data'; + +/** + * Internal dependencies + */ +import './editor.scss'; + +/** + * Shows a notice about setting the default Cart and Checkout pages.. + * + */ +export function DefaultNotice( props: { + block: 'cart' | 'checkout'; +} ): JSX.Element | null { + const idToCheck = props.block === 'cart' ? CART_PAGE_ID : CHECKOUT_PAGE_ID; + const currentPostId = useSelect( ( select ) => { + return select( 'core/editor' ).getCurrentPostId(); + } ); + + return currentPostId !== idToCheck ? ( + + { createInterpolateElement( + sprintf( + /* translators: %s is the block name. It will be cart or checkout. */ + __( + 'If you would like to use this block as your default %s you must update your page settings in WooCommerce.', + 'woo-gutenberg-products-block' + ), + props.block + ), + { + a: ( + // eslint-disable-next-line jsx-a11y/anchor-has-content + + ), + } + ) } + + ) : null; +} diff --git a/assets/js/blocks/cart-checkout-shared/index.js b/assets/js/blocks/cart-checkout-shared/index.js index 802e11a9eb9..36a16f5804b 100644 --- a/assets/js/blocks/cart-checkout-shared/index.js +++ b/assets/js/blocks/cart-checkout-shared/index.js @@ -2,3 +2,6 @@ export * from './hacks'; export * from './use-forced-layout'; export * from './editor-utils'; export * from './use-view-switcher'; +export * from './default-notice'; +export * from './sidebar-notices'; +export * from './block-settings'; diff --git a/assets/js/blocks/cart-checkout-shared/sidebar-notices/editor.scss b/assets/js/blocks/cart-checkout-shared/sidebar-notices/editor.scss new file mode 100644 index 00000000000..a98368f24ef --- /dev/null +++ b/assets/js/blocks/cart-checkout-shared/sidebar-notices/editor.scss @@ -0,0 +1,11 @@ +.wc-default-page-notice.is-dismissible { + margin: 0; + padding-right: 16px; + .components-notice__dismiss { + min-width: 24px; + } + svg { + width: 16px; + height: 16px; + } +} diff --git a/assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx b/assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx new file mode 100644 index 00000000000..06f17e36c13 --- /dev/null +++ b/assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx @@ -0,0 +1,100 @@ +/** + * External dependencies + */ +import { createHigherOrderComponent } from '@wordpress/compose'; +import { + InspectorControls, + store as blockEditorStore, +} from '@wordpress/block-editor'; +import { addFilter, hasFilter } from '@wordpress/hooks'; +import type { StoreDescriptor } from '@wordpress/data'; +import { CartCheckoutSidebarCompatibilityNotice } from '@woocommerce/editor-components/sidebar-compatibility-notice'; +import { useSelect } from '@wordpress/data'; +import { CartCheckoutFeedbackPrompt } from '@woocommerce/editor-components/feedback-prompt'; + +/** + * Internal dependencies + */ +import './editor.scss'; +import { DefaultNotice } from '../default-notice'; + +declare module '@wordpress/editor' { + let store: StoreDescriptor; +} + +declare module '@wordpress/core-data' { + let store: StoreDescriptor; +} + +declare module '@wordpress/block-editor' { + let store: StoreDescriptor; +} + +const withSidebarNotices = createHigherOrderComponent( + ( BlockEdit ) => ( props ) => { + const addressFieldOrAccountBlocks = [ + 'woocommerce/checkout-shipping-address-block', + 'woocommerce/checkout-billing-address-block', + 'woocommerce/checkout-contact-information-block', + 'woocommerce/checkout-fields-block', + ]; + const { clientId } = props; + const { isCart, isCheckout, isAddressFieldBlock } = useSelect( + ( select ) => { + const { getBlockParentsByBlockName, getBlockName } = + select( blockEditorStore ); + const parent = getBlockParentsByBlockName( clientId, [ + 'woocommerce/cart', + 'woocommerce/checkout', + ] ).map( getBlockName ); + const currentBlockName = getBlockName( clientId ); + return { + isCart: + parent.includes( 'woocommerce/cart' ) || + currentBlockName === 'woocommerce/cart', + isCheckout: + parent.includes( 'woocommerce/checkout' ) || + currentBlockName === 'woocommerce/checkout', + isAddressFieldBlock: + addressFieldOrAccountBlocks.includes( + currentBlockName + ), + }; + } + ); + return ( + <> + { ( isCart || isCheckout ) && ( + + + + { isAddressFieldBlock ? null : ( + + ) } + + ) } + + + + ); + }, + 'withSidebarNotices' +); + +if ( + ! hasFilter( + 'editor.BlockEdit', + 'woocommerce/add/sidebar-compatibility-notice' + ) +) { + addFilter( + 'editor.BlockEdit', + 'woocommerce/add/sidebar-compatibility-notice', + withSidebarNotices, + 11 + ); +} diff --git a/assets/js/blocks/cart/edit.js b/assets/js/blocks/cart/edit.js index 02d4ff93e9a..f8b57196710 100644 --- a/assets/js/blocks/cart/edit.js +++ b/assets/js/blocks/cart/edit.js @@ -4,24 +4,14 @@ */ import classnames from 'classnames'; import { __ } from '@wordpress/i18n'; -import { CartCheckoutFeedbackPrompt } from '@woocommerce/editor-components/feedback-prompt'; import { useBlockProps, InnerBlocks, - InspectorControls, BlockControls, + InspectorControls, } from '@wordpress/block-editor'; -import { PanelBody, ToggleControl, Notice } from '@wordpress/components'; -import { CartCheckoutCompatibilityNotice } from '@woocommerce/editor-components/compatibility-notices'; -import { CART_PAGE_ID } from '@woocommerce/block-settings'; import BlockErrorBoundary from '@woocommerce/base-components/block-error-boundary'; -import { - EditorProvider, - useEditorContext, - CartProvider, -} from '@woocommerce/base-context'; -import { createInterpolateElement } from '@wordpress/element'; -import { getAdminLink } from '@woocommerce/settings'; +import { EditorProvider, CartProvider } from '@woocommerce/base-context'; import { previewCart } from '@woocommerce/resource-previews'; import { filledCart, removeCart } from '@woocommerce/icons'; import { Icon } from '@wordpress/icons'; @@ -36,6 +26,7 @@ import { useViewSwitcher, useBlockPropsWithLocking, useForcedLayout, + BlockSettings, } from '../cart-checkout-shared'; import { CartBlockContext } from './context'; @@ -61,60 +52,6 @@ const views = [ }, ]; -const BlockSettings = ( { attributes, setAttributes } ) => { - const { hasDarkControls } = attributes; - const { currentPostId } = useEditorContext(); - return ( - - { currentPostId !== CART_PAGE_ID && ( - - { createInterpolateElement( - __( - 'If you would like to use this block as your default cart you must update your page settings in WooCommerce.', - 'woo-gutenberg-products-block' - ), - { - a: ( - // eslint-disable-next-line jsx-a11y/anchor-has-content - - ), - } - ) } - - ) } - - - setAttributes( { - hasDarkControls: ! hasDarkControls, - } ) - } - /> - - - - ); -}; - export const Edit = ( { className, attributes, setAttributes, clientId } ) => { const { hasDarkControls } = attributes; const { currentView, component: ViewSwitcherComponent } = useViewSwitcher( @@ -135,8 +72,15 @@ export const Edit = ( { className, attributes, setAttributes, clientId } ) => { registeredBlocks: ALLOWED_BLOCKS, defaultTemplate, } ); + return (
+ + + { currentView={ currentView } previewData={ { previewCart } } > - { ViewSwitcherComponent } @@ -178,7 +118,6 @@ export const Edit = ( { className, attributes, setAttributes, clientId } ) => { -
); }; diff --git a/assets/js/blocks/cart/editor.scss b/assets/js/blocks/cart/editor.scss index a88f6759d31..1753593671a 100644 --- a/assets/js/blocks/cart/editor.scss +++ b/assets/js/blocks/cart/editor.scss @@ -1,7 +1,3 @@ -.wc-block-cart__page-notice { - margin: 0; -} - body.wc-lock-selected-block--move { .block-editor-block-mover__move-button-container, .block-editor-block-mover { diff --git a/assets/js/blocks/checkout/context.ts b/assets/js/blocks/checkout/context.ts index 7293a909e3a..96333f2f739 100644 --- a/assets/js/blocks/checkout/context.ts +++ b/assets/js/blocks/checkout/context.ts @@ -25,8 +25,8 @@ export type CheckoutBlockControlsContextProps = { accountControls: () => JSX.Element | null; }; -export const CheckoutBlockContext = createContext< CheckoutBlockContextProps >( - { +export const CheckoutBlockContext: React.Context< CheckoutBlockContextProps > = + createContext< CheckoutBlockContextProps >( { allowCreateAccount: false, showCompanyField: false, showApartmentField: false, @@ -38,10 +38,9 @@ export const CheckoutBlockContext = createContext< CheckoutBlockContextProps >( showReturnToCart: true, cartPageId: 0, showRateAfterTaxName: false, - } -); + } ); -export const CheckoutBlockControlsContext = +export const CheckoutBlockControlsContext: React.Context< CheckoutBlockControlsContextProps > = createContext< CheckoutBlockControlsContextProps >( { addressFieldControls: () => null, accountControls: () => null, diff --git a/assets/js/blocks/checkout/edit.tsx b/assets/js/blocks/checkout/edit.tsx index 3d1f8713183..53e39325a61 100644 --- a/assets/js/blocks/checkout/edit.tsx +++ b/assets/js/blocks/checkout/edit.tsx @@ -9,11 +9,7 @@ import { InspectorControls, } from '@wordpress/block-editor'; import { SidebarLayout } from '@woocommerce/base-components/sidebar-layout'; -import { - CheckoutProvider, - EditorProvider, - useEditorContext, -} from '@woocommerce/base-context'; +import { CheckoutProvider, EditorProvider } from '@woocommerce/base-context'; import { previewCart, previewSavedPaymentMethods, @@ -21,15 +17,10 @@ import { import { PanelBody, ToggleControl, - Notice, CheckboxControl, } from '@wordpress/components'; -import { CartCheckoutFeedbackPrompt } from '@woocommerce/editor-components/feedback-prompt'; -import { CHECKOUT_PAGE_ID } from '@woocommerce/block-settings'; -import { createInterpolateElement } from '@wordpress/element'; -import { getAdminLink } from '@woocommerce/settings'; -import { CartCheckoutCompatibilityNotice } from '@woocommerce/editor-components/compatibility-notices'; import type { TemplateArray } from '@wordpress/blocks'; +import { CartCheckoutFeedbackPrompt } from '@woocommerce/editor-components/feedback-prompt'; /** * Internal dependencies @@ -38,6 +29,7 @@ import './inner-blocks'; import './styles/editor.scss'; import { addClassToBody, + BlockSettings, useBlockPropsWithLocking, } from '../cart-checkout-shared'; import { CheckoutBlockContext, CheckoutBlockControlsContext } from './context'; @@ -52,67 +44,6 @@ const ALLOWED_BLOCKS: string[] = [ 'woocommerce/checkout-totals-block', ]; -const BlockSettings = ( { - attributes, - setAttributes, -}: { - attributes: Attributes; - setAttributes: ( attributes: Record< string, unknown > ) => undefined; -} ): JSX.Element => { - const { hasDarkControls } = attributes; - const { currentPostId } = useEditorContext(); - - return ( - - { currentPostId !== CHECKOUT_PAGE_ID && ( - - { createInterpolateElement( - __( - 'If you would like to use this block as your default checkout you must update your
page settings in WooCommerce.', - 'woo-gutenberg-products-block' - ), - { - a: ( - // eslint-disable-next-line jsx-a11y/anchor-has-content - - ), - } - ) } - - ) } - - - setAttributes( { - hasDarkControls: ! hasDarkControls, - } ) - } - /> - - - - ); -}; - export const Edit = ( { attributes, setAttributes, @@ -166,6 +97,7 @@ export const Edit = ( { } /> + ); @@ -225,18 +157,21 @@ export const Edit = ( { /> ) } + ); const blockProps = useBlockPropsWithLocking(); return (
- + + + -
); }; diff --git a/assets/js/blocks/checkout/styles/editor.scss b/assets/js/blocks/checkout/styles/editor.scss index a557a29bfab..541b30ca63a 100644 --- a/assets/js/blocks/checkout/styles/editor.scss +++ b/assets/js/blocks/checkout/styles/editor.scss @@ -60,9 +60,6 @@ body.wc-lock-selected-block--remove { margin-top: -12px; } -.wc-block-checkout__page-notice { - margin: 0; -} .components-panel__body-title .components-button { opacity: 1; diff --git a/assets/js/blocks/checkout/types.ts b/assets/js/blocks/checkout/types.ts index eef9841b7db..f60351e290c 100644 --- a/assets/js/blocks/checkout/types.ts +++ b/assets/js/blocks/checkout/types.ts @@ -4,7 +4,7 @@ export type InnerBlockTemplate = [ InnerBlockTemplate[] | undefined ]; -export interface Attributes { +export interface Attributes extends Record< string, boolean | number > { allowCreateAccount: boolean; hasDarkControls: boolean; showCompanyField: boolean; diff --git a/assets/js/editor-components/compatibility-notices/cart-checkout-compatibility-notice.tsx b/assets/js/editor-components/compatibility-notices/cart-checkout-compatibility-notice.tsx deleted file mode 100644 index 9c71e98fbe3..00000000000 --- a/assets/js/editor-components/compatibility-notices/cart-checkout-compatibility-notice.tsx +++ /dev/null @@ -1,84 +0,0 @@ -/** - * External dependencies - */ -import { Guide } from '@wordpress/components'; -import { __ } from '@wordpress/i18n'; -import { createInterpolateElement } from '@wordpress/element'; -import { isWpVersion } from '@woocommerce/settings'; -import type { ReactElement } from 'react'; - -/** - * Internal dependencies - */ -import { useCompatibilityNotice } from './use-compatibility-notice'; -import WooImage from './woo-image'; - -interface CartCheckoutCompatibilityNoticeProps { - blockName: 'cart' | 'checkout'; -} - -export function CartCheckoutCompatibilityNotice( { - blockName, -}: CartCheckoutCompatibilityNoticeProps ): ReactElement | null { - const [ isVisible, dismissNotice ] = useCompatibilityNotice( blockName ); - - if ( isWpVersion( '5.4', '<=' ) || ! isVisible ) { - return null; - } - - return ( - dismissNotice() } - finishButtonText={ __( 'Got it!', 'woo-gutenberg-products-block' ) } - pages={ [ - { - image: , - content: ( - <> -

- { __( - 'Compatibility notice', - 'woo-gutenberg-products-block' - ) } -

-

- { createInterpolateElement( - __( - 'This block may not be compatible with all checkout extensions and integrations.', - 'woo-gutenberg-products-block' - ), - { - em: , - } - ) } -

-

- { createInterpolateElement( - __( - 'We recommend reviewing our expanding list of compatible extensions prior to using this block on a live store.', - 'woo-gutenberg-products-block' - ), - { - a: ( - // eslint-disable-next-line jsx-a11y/anchor-has-content - - ), - } - ) } -

- - ), - }, - ] } - /> - ); -} diff --git a/assets/js/editor-components/compatibility-notices/index.tsx b/assets/js/editor-components/compatibility-notices/index.tsx deleted file mode 100644 index c1f6e1c6d94..00000000000 --- a/assets/js/editor-components/compatibility-notices/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './cart-checkout-compatibility-notice'; diff --git a/assets/js/editor-components/compatibility-notices/style.scss b/assets/js/editor-components/compatibility-notices/style.scss deleted file mode 100644 index b4d97548805..00000000000 --- a/assets/js/editor-components/compatibility-notices/style.scss +++ /dev/null @@ -1,31 +0,0 @@ -.wc-block-welcome-guide { - width: 312px; - - &.components-modal__frame.components-guide { - height: auto; - } - - &__image { - background: #00a0d2; - margin: 0 0 $gap; - } - - &__heading { - font-size: 24px; - line-height: 1.4; - margin: $gap 0; - padding: 0 $gap-large; - } - - &__text { - font-size: 13px; - line-height: 1.4; - margin: 0 0 $gap-large; - padding: 0 $gap-large; - } - - &__inserter-icon { - margin: 0 4px; - vertical-align: text-top; - } -} diff --git a/assets/js/editor-components/compatibility-notices/woo-image.js b/assets/js/editor-components/compatibility-notices/woo-image.js deleted file mode 100644 index f9e7edcda62..00000000000 --- a/assets/js/editor-components/compatibility-notices/woo-image.js +++ /dev/null @@ -1,132 +0,0 @@ -const WooImage = ( props ) => ( -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-); - -export default WooImage; diff --git a/assets/js/editor-components/feedback-prompt/index.js b/assets/js/editor-components/feedback-prompt/index.js index 1ced9034a66..3d3de5009d3 100644 --- a/assets/js/editor-components/feedback-prompt/index.js +++ b/assets/js/editor-components/feedback-prompt/index.js @@ -4,6 +4,7 @@ import { __ } from '@wordpress/i18n'; import PropTypes from 'prop-types'; import { Icon, commentContent, external } from '@wordpress/icons'; +import { useEffect, useState } from '@wordpress/element'; /** * Internal dependencies @@ -21,26 +22,37 @@ const FeedbackPrompt = ( { text, url = 'https://ideas.woocommerce.com/forums/133476-woocommerce?category_id=384565', } ) => { + // By returning false we ensure that this component is not entered into the InspectorControls + // (which is a slot fill), children array on first render, on the second render when the state + // gets updated this component does get put into the InspectorControls children array but as the + // last item, ensuring it shows last in the sidebar. + const [ isVisible, setIsVisible ] = useState( false ); + useEffect( () => { + setIsVisible( true ); + }, [] ); + return ( -
- -

- { __( 'Feedback?', 'woo-gutenberg-products-block' ) } -

-

{ text }

-
- { __( - 'Give us your feedback.', - 'woo-gutenberg-products-block' - ) } - - -
+ isVisible && ( +
+ +

+ { __( 'Feedback?', 'woo-gutenberg-products-block' ) } +

+

{ text }

+ + { __( + 'Give us your feedback.', + 'woo-gutenberg-products-block' + ) } + + +
+ ) ); }; diff --git a/assets/js/editor-components/sidebar-compatibility-notice/editor.scss b/assets/js/editor-components/sidebar-compatibility-notice/editor.scss new file mode 100644 index 00000000000..b7399a3479f --- /dev/null +++ b/assets/js/editor-components/sidebar-compatibility-notice/editor.scss @@ -0,0 +1,13 @@ +.wc-blocks-sidebar-compatibility-notice { + border-top: 1px solid $gray-200; +} + +.wc-blocks-sidebar-compatibility-notice__notice.components-notice.is-dismissible { + margin: 0; + padding: $gap; + padding-right: $gap-small; + + .components-notice__content { + margin-right: 0; + } +} diff --git a/assets/js/editor-components/sidebar-compatibility-notice/index.tsx b/assets/js/editor-components/sidebar-compatibility-notice/index.tsx new file mode 100644 index 00000000000..92d96fe696f --- /dev/null +++ b/assets/js/editor-components/sidebar-compatibility-notice/index.tsx @@ -0,0 +1,48 @@ +/** + * External dependencies + */ +import { Notice, ExternalLink } from '@wordpress/components'; +import { createInterpolateElement } from '@wordpress/element'; +import { __ } from '@wordpress/i18n'; + +/** + * Internal dependencies + */ +import './editor.scss'; +import { useCompatibilityNotice } from './use-compatibility-notice'; + +export const CartCheckoutSidebarCompatibilityNotice = ( { + block, +}: { + block: 'cart' | 'checkout'; +} ) => { + const [ isVisible, dismissNotice ] = useCompatibilityNotice( block ); + + const noticeText = createInterpolateElement( + __( + 'The Cart & Checkout Blocks are a beta feature to optimize for faster checkout. To make sure this feature is right for your store, review the list of compatible extensions.', + 'woo-gutenberg-products-block' + ), + { + a: ( + // Suppress the warning as this will be interpolated into the string with content. + // eslint-disable-next-line jsx-a11y/anchor-has-content + + ), + } + ); + + return ( +
+ + { noticeText } + +
+ ); +}; diff --git a/assets/js/editor-components/compatibility-notices/use-compatibility-notice.ts b/assets/js/editor-components/sidebar-compatibility-notice/use-compatibility-notice.ts similarity index 94% rename from assets/js/editor-components/compatibility-notices/use-compatibility-notice.ts rename to assets/js/editor-components/sidebar-compatibility-notice/use-compatibility-notice.ts index 0e3a13d7c6e..86aba93bbd1 100644 --- a/assets/js/editor-components/compatibility-notices/use-compatibility-notice.ts +++ b/assets/js/editor-components/sidebar-compatibility-notice/use-compatibility-notice.ts @@ -10,7 +10,7 @@ export const useCompatibilityNotice = ( blockName: string ): [ boolean, () => void ] => { const [ dismissedNotices, setDismissedNotices ] = useLocalStorageState( - `wc-blocks_dismissed_compatibility_notices`, + `wc-blocks_dismissed_sidebar_compatibility_notices`, initialDismissedNotices ); const [ isVisible, setIsVisible ] = useState( false ); diff --git a/bin/webpack-helpers.js b/bin/webpack-helpers.js index b1fd4697b04..0448fed6550 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/package-lock.json b/package-lock.json index 6a47bfb6850..47c51dfc5e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,11 +69,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", "@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", @@ -6186,76 +6189,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": { @@ -9632,6 +9635,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", @@ -10341,14 +10350,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": { @@ -10375,12 +10390,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", @@ -11166,6 +11208,142 @@ "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/deprecated": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0" + }, + "engines": { + "node": ">=12" + } + }, + "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/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + }, + "bin": { + "pot-to-php": "tools/pot-to-php.js" + }, + "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", @@ -11277,6 +11455,386 @@ "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/deprecated": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@woocommerce/navigation/node_modules/@wordpress/dom": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", + "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/deprecated": "^3.8.0", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "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/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + }, + "bin": { + "pot-to-php": "tools/pot-to-php.js" + }, + "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", @@ -11330,13 +11888,33 @@ "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.14.0", + "@wordpress/i18n": "^4.14.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/a11y/node_modules/@wordpress/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/dom-ready": "^3.13.0", - "@wordpress/i18n": "^4.13.0" + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + }, + "bin": { + "pot-to-php": "tools/pot-to-php.js" }, "engines": { "node": ">=12" @@ -11438,9 +12016,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" }, @@ -11715,9 +12293,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" }, @@ -11874,18 +12452,203 @@ "node": ">=12" } }, + "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/autop": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.14.0.tgz", + "integrity": "sha512-S5QUDlg8+4YHFLx0sHJX7Gvq905LEbANQoaVGJYSF3SX2NCX9NDA3/ugWA5yKhZ7s+BpYny6or+OF7MmDFElcg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.0" + }, + "engines": { + "node": ">=12" + } + }, + "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/deprecated": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/core-data/node_modules/@wordpress/dom": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", + "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/deprecated": "^3.8.0", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "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.14.0", + "lodash": "^4.17.21", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "engines": { + "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/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + }, + "bin": { + "pot-to-php": "tools/pot-to-php.js" + }, + "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", @@ -11930,19 +12693,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,21 +12719,21 @@ } }, "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==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0" + "@wordpress/hooks": "^3.14.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==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", + "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", "dependencies": { "@babel/runtime": "^7.16.0", "@wordpress/deprecated": "^3.8.0", @@ -11981,14 +12744,14 @@ } }, "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" @@ -11997,10 +12760,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", @@ -12051,9 +12825,9 @@ } }, "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" }, @@ -13966,9 +14740,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" }, @@ -14177,17 +14951,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" @@ -14197,15 +14970,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" @@ -14214,19 +14987,45 @@ "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": { "node": ">=12" } }, + "node_modules/@wordpress/keycodes/node_modules/@wordpress/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + }, + "bin": { + "pot-to-php": "tools/pot-to-php.js" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@wordpress/notices": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.12.0.tgz", @@ -14416,9 +15215,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" }, @@ -14427,9 +15226,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", @@ -14444,18 +15243,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" @@ -14468,19 +15267,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,21 +15293,21 @@ } }, "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==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0" + "@wordpress/hooks": "^3.14.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==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", + "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", "dependencies": { "@babel/runtime": "^7.16.0", "@wordpress/deprecated": "^3.8.0", @@ -14519,14 +15318,14 @@ } }, "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" @@ -14535,6 +15334,37 @@ "node": ">=12" } }, + "node_modules/@wordpress/rich-text/node_modules/@wordpress/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + }, + "bin": { + "pot-to-php": "tools/pot-to-php.js" + }, + "engines": { + "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", @@ -16575,9 +17405,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" @@ -16616,13 +17446,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" @@ -16641,9 +17470,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" } @@ -19557,6 +20386,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", @@ -21490,6 +22328,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", @@ -23678,6 +24525,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", @@ -28088,6 +28941,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", @@ -35973,6 +36835,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", @@ -35984,6 +36857,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", @@ -56311,59 +57190,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": { @@ -58757,6 +59636,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", @@ -59464,14 +60349,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": { @@ -59497,12 +60388,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", @@ -60086,6 +61004,114 @@ } } }, + "@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/deprecated": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^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/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.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 + } + } + }, + "@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", @@ -60183,6 +61209,315 @@ "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/deprecated": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0" + } + }, + "@wordpress/dom": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", + "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/deprecated": "^3.8.0", + "lodash": "^4.17.21" + } + }, + "@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/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + } + }, + "@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", @@ -60231,13 +61566,29 @@ } }, "@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" + }, + "dependencies": { + "@wordpress/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + } + } } }, "@wordpress/api-fetch": { @@ -60320,9 +61671,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" } @@ -60557,9 +61908,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" } @@ -60691,18 +62042,166 @@ } } }, + "@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/autop": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.14.0.tgz", + "integrity": "sha512-S5QUDlg8+4YHFLx0sHJX7Gvq905LEbANQoaVGJYSF3SX2NCX9NDA3/ugWA5yKhZ7s+BpYny6or+OF7MmDFElcg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0" + } + }, + "@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/deprecated": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0" + } + }, + "@wordpress/dom": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", + "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/deprecated": "^3.8.0", + "lodash": "^4.17.21" + } + }, + "@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/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.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", @@ -60712,19 +62211,19 @@ }, "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", @@ -60732,18 +62231,18 @@ } }, "@wordpress/deprecated": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz", - "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0" + "@wordpress/hooks": "^3.14.0" } }, "@wordpress/dom": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz", - "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", + "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", "requires": { "@babel/runtime": "^7.16.0", "@wordpress/deprecated": "^3.8.0", @@ -60751,18 +62250,26 @@ } }, "@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" + } } } }, @@ -60792,9 +62299,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", @@ -60830,9 +62337,9 @@ } }, "@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" } @@ -62237,9 +63744,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" } @@ -62374,44 +63881,65 @@ } }, "@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" + }, + "dependencies": { + "@wordpress/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + } + } } }, "@wordpress/notices": { @@ -62555,17 +64083,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", @@ -62574,37 +64102,37 @@ } }, "@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", @@ -62612,18 +64140,18 @@ } }, "@wordpress/deprecated": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz", - "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", + "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0" + "@wordpress/hooks": "^3.14.0" } }, "@wordpress/dom": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz", - "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", + "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", "requires": { "@babel/runtime": "^7.16.0", "@wordpress/deprecated": "^3.8.0", @@ -62631,19 +64159,41 @@ } }, "@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/i18n": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.14.0", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.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==", + "requires": { + "@babel/runtime": "^7.16.0" + } + }, "rememo": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz", @@ -64178,9 +65728,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" @@ -64207,13 +65757,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": { @@ -64226,9 +65775,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", @@ -66599,6 +68148,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", @@ -68147,6 +69702,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", @@ -69756,6 +71317,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", @@ -73176,6 +74743,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", @@ -79349,6 +80925,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", diff --git a/package.json b/package.json index 4575574b745..f8e61bd4f2e 100644 --- a/package.json +++ b/package.json @@ -115,11 +115,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", "@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", diff --git a/tests/e2e/specs/backend/cart.test.js b/tests/e2e/specs/backend/cart.test.js index 972df2748b7..f9f8f875dd4 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 bff117dbeac..195bcf41377 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 ); } ); } ); } );